{
  "id": "87bce0d3ce9ebfb35c038831fa5913c8",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.7.6",
  "solcLongVersion": "0.7.6+commit.7338295f",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/metadata/NFTBaseMetadataURI.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {UInt256ToDecimalString} from \"@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {Ownable} from \"@animoca/ethereum-contracts-core/contracts/access/Ownable.sol\";\n\nabstract contract NFTBaseMetadataURI is ManagedIdentity, Ownable {\n    using UInt256ToDecimalString for uint256;\n\n    event BaseMetadataURISet(string baseMetadataURI);\n\n    string public baseMetadataURI;\n\n    function setBaseMetadataURI(string calldata baseMetadataURI_) external {\n        _requireOwnership(_msgSender());\n        baseMetadataURI = baseMetadataURI_;\n        emit BaseMetadataURISet(baseMetadataURI_);\n    }\n\n    function _uri(uint256 id) internal view virtual returns (string memory) {\n        return string(abi.encodePacked(baseMetadataURI, id.toDecimalString()));\n    }\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\n// Partially derived from OpenZeppelin:\n// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/8b10cb38d8fedf34f2d89b0ed604f2dceb76d6a9/contracts/utils/Strings.sol\n\npragma solidity >=0.7.6 <0.8.0;\n\nlibrary UInt256ToDecimalString {\n    function toDecimalString(uint256 value) internal pure returns (string memory) {\n        if (value == 0) {\n            return \"0\";\n        }\n        uint256 temp = value;\n        uint256 digits;\n        while (temp != 0) {\n            digits++;\n            temp /= 10;\n        }\n        bytes memory buffer = new bytes(digits);\n        uint256 index = digits - 1;\n        temp = value;\n        while (temp != 0) {\n            buffer[index--] = bytes1(uint8(48 + (temp % 10)));\n            temp /= 10;\n        }\n        return string(buffer);\n    }\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/*\n * 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.\n */\nabstract contract ManagedIdentity {\n    function _msgSender() internal view virtual returns (address payable) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes memory) {\n        return msg.data;\n    }\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {ManagedIdentity} from \"../metatx/ManagedIdentity.sol\";\nimport {IERC173} from \"./IERC173.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 ManagedIdentity, IERC173 {\n    address internal _owner;\n\n    /**\n     * Initializes the contract, setting the deployer as the initial owner.\n     * @dev Emits an {IERC173-OwnershipTransferred(address,address)} event.\n     */\n    constructor(address owner_) {\n        _owner = owner_;\n        emit OwnershipTransferred(address(0), owner_);\n    }\n\n    /**\n     * Gets the address of the current contract owner.\n     */\n    function owner() public view virtual override returns (address) {\n        return _owner;\n    }\n\n    /**\n     * See {IERC173-transferOwnership(address)}\n     * @dev Reverts if the sender is not the current contract owner.\n     * @param newOwner the address of the new owner. Use the zero address to renounce the ownership.\n     */\n    function transferOwnership(address newOwner) public virtual override {\n        _requireOwnership(_msgSender());\n        _owner = newOwner;\n        emit OwnershipTransferred(_owner, newOwner);\n    }\n\n    /**\n     * @dev Reverts if `account` is not the contract owner.\n     * @param account the account to test.\n     */\n    function _requireOwnership(address account) internal virtual {\n        require(account == this.owner(), \"Ownable: not the owner\");\n    }\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/access/IERC173.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC-173 Contract Ownership Standard\n * Note: the ERC-165 identifier for this interface is 0x7f5828d0\n */\ninterface IERC173 {\n    /**\n     * Event emited when ownership of a contract changes.\n     * @param previousOwner the previous owner.\n     * @param newOwner the new owner.\n     */\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * Get the address of the owner\n     * @return The address of the owner.\n     */\n    function owner() external view returns (address);\n\n    /**\n     * Set the address of the new owner of the contract\n     * Set newOwner to address(0) to renounce any ownership.\n     * @dev Emits an {OwnershipTransferred} event.\n     * @param newOwner The address of the new owner of the contract. Using the zero address means renouncing ownership.\n     */\n    function transferOwnership(address newOwner) external;\n}\n"
      },
      "contracts/token/ERC721/mocks/ERC721Mock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IForwarderRegistry} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol\";\nimport {IERC721Metadata} from \"./../interfaces/IERC721Metadata.sol\";\nimport {IERC721Mintable} from \"./../interfaces/IERC721Mintable.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {Recoverable} from \"@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol\";\nimport {UsingUniversalForwarding} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol\";\nimport {MinterRole} from \"@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol\";\nimport {ERC721} from \"./../ERC721.sol\";\nimport {NFTBaseMetadataURI} from \"./../../../metadata/NFTBaseMetadataURI.sol\";\n\n/**\n * @title ERC721 Mock.\n */\ncontract ERC721Mock is Recoverable, UsingUniversalForwarding, ERC721, NFTBaseMetadataURI, IERC721Mintable, MinterRole {\n    constructor(IForwarderRegistry forwarderRegistry, address universalForwarder)\n        ERC721(\"ERC721Mock\", \"E721\")\n        UsingUniversalForwarding(forwarderRegistry, universalForwarder)\n        MinterRole(msg.sender)\n    {}\n\n    //=================================================== ERC721Metadata ====================================================//\n\n    /// @inheritdoc IERC721Metadata\n    function tokenURI(uint256 tokenId) external view virtual override returns (string memory) {\n        require(address(uint160(_owners[tokenId])) != address(0), \"ERC721: non-existing NFT\");\n        return _uri(tokenId);\n    }\n\n    //=================================================== ERC721Mintable ====================================================//\n\n    /// @inheritdoc IERC721Mintable\n    /// @dev Reverts if the sender is not a minter.\n    function mint(address to, uint256 tokenId) external virtual override {\n        _requireMinter(_msgSender());\n        _mint(to, tokenId, \"\", false);\n    }\n\n    /// @inheritdoc IERC721Mintable\n    /// @dev Reverts if the sender is not a minter.\n    function batchMint(address to, uint256[] calldata tokenIds) external virtual override {\n        _requireMinter(_msgSender());\n        _batchMint(to, tokenIds);\n    }\n\n    /// @inheritdoc IERC721Mintable\n    /// @dev Reverts if the sender is not a minter.\n    function safeMint(\n        address to,\n        uint256 tokenId,\n        bytes calldata data\n    ) external virtual override {\n        _requireMinter(_msgSender());\n        _mint(to, tokenId, data, true);\n    }\n\n    //======================================== Meta Transactions Internal Functions =========================================//\n\n    function _msgSender() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (address payable) {\n        return UsingUniversalForwarding._msgSender();\n    }\n\n    function _msgData() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (bytes memory ret) {\n        return UsingUniversalForwarding._msgData();\n    }\n\n    //=============================================== Mock Coverage Functions ===============================================//\n\n    function msgData() external view returns (bytes memory ret) {\n        return _msgData();\n    }\n}\n"
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.7.0;\n\ninterface IForwarderRegistry {\n    function isForwarderFor(address, address) external view returns (bool);\n}\n"
      },
      "contracts/token/ERC721/interfaces/IERC721Metadata.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC721 Non-Fungible Token Standard, optional extension: Metadata.\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n * @dev Note: The ERC-165 identifier for this interface is 0x5b5e139f.\n */\ninterface IERC721Metadata {\n    /**\n     * @dev Gets the token name\n     * @return string representing the token name\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Gets the token symbol\n     * @return string representing the token symbol\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns an URI for a given token ID\n     * Throws if the token ID does not exist. May return an empty string.\n     * @param tokenId uint256 ID of the token to query\n     * @return string URI of given token ID\n     */\n    function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"
      },
      "contracts/token/ERC721/interfaces/IERC721Mintable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC721 Non-Fungible Token Standard, optional extension: Mintable.\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Mintable {\n    /**\n     * Unsafely mints a token.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if `tokenId` has already been minted.\n     * @dev Emits an {IERC721-Transfer} event from the zero address.\n     * @param to Address of the new token owner.\n     * @param tokenId Identifier of the token to mint.\n     */\n    function mint(address to, uint256 tokenId) external;\n\n    /**\n     * Unsafely mints a batch of tokens.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if one of `tokenIds` has already been minted.\n     * @dev Emits an {IERC721-Transfer} event from the zero address for each of `tokenIds`.\n     * @param to Address of the new tokens owner.\n     * @param tokenIds Identifiers of the tokens to mint.\n     */\n    function batchMint(address to, uint256[] calldata tokenIds) external;\n\n    /**\n     * Safely mints a token.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if `tokenId` has already ben minted.\n     * @dev Reverts if `to` is a contract and the call to {IERC721Receiver-onERC721Received} fails or is refused.\n     * @dev Emits an {IERC721-Transfer} event from the zero address.\n     * @param to Address of the new token owner.\n     * @param tokenId Identifier of the token to mint.\n     * @param data Optional data to pass along to the receiver call.\n     */\n    function safeMint(\n        address to,\n        uint256 tokenId,\n        bytes calldata data\n    ) external;\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {ManagedIdentity} from \"../metatx/ManagedIdentity.sol\";\nimport {Ownable} from \"../access/Ownable.sol\";\nimport {IWrappedERC20, ERC20Wrapper} from \"./ERC20Wrapper.sol\";\n\nabstract contract Recoverable is ManagedIdentity, Ownable {\n    using ERC20Wrapper for IWrappedERC20;\n\n    /**\n     * Extract ERC20 tokens which were accidentally sent to the contract to a list of accounts.\n     * Warning: this function should be overriden for contracts which are supposed to hold ERC20 tokens\n     * so that the extraction is limited to only amounts sent accidentally.\n     * @dev Reverts if the sender is not the contract owner.\n     * @dev Reverts if `accounts`, `tokens` and `amounts` do not have the same length.\n     * @dev Reverts if one of `tokens` is does not implement the ERC20 transfer function.\n     * @dev Reverts if one of the ERC20 transfers fail for any reason.\n     * @param accounts the list of accounts to transfer the tokens to.\n     * @param tokens the list of ERC20 token addresses.\n     * @param amounts the list of token amounts to transfer.\n     */\n    function recoverERC20s(\n        address[] calldata accounts,\n        address[] calldata tokens,\n        uint256[] calldata amounts\n    ) external virtual {\n        _requireOwnership(_msgSender());\n        uint256 length = accounts.length;\n        require(length == tokens.length && length == amounts.length, \"Recov: inconsistent arrays\");\n        for (uint256 i = 0; i != length; ++i) {\n            IWrappedERC20(tokens[i]).wrappedTransfer(accounts[i], amounts[i]);\n        }\n    }\n\n    /**\n     * Extract ERC721 tokens which were accidentally sent to the contract to a list of accounts.\n     * Warning: this function should be overriden for contracts which are supposed to hold ERC721 tokens\n     * so that the extraction is limited to only tokens sent accidentally.\n     * @dev Reverts if the sender is not the contract owner.\n     * @dev Reverts if `accounts`, `contracts` and `amounts` do not have the same length.\n     * @dev Reverts if one of `contracts` is does not implement the ERC721 transferFrom function.\n     * @dev Reverts if one of the ERC721 transfers fail for any reason.\n     * @param accounts the list of accounts to transfer the tokens to.\n     * @param contracts the list of ERC721 contract addresses.\n     * @param tokenIds the list of token ids to transfer.\n     */\n    function recoverERC721s(\n        address[] calldata accounts,\n        address[] calldata contracts,\n        uint256[] calldata tokenIds\n    ) external virtual {\n        _requireOwnership(_msgSender());\n        uint256 length = accounts.length;\n        require(length == contracts.length && length == tokenIds.length, \"Recov: inconsistent arrays\");\n        for (uint256 i = 0; i != length; ++i) {\n            IRecoverableERC721(contracts[i]).transferFrom(address(this), accounts[i], tokenIds[i]);\n        }\n    }\n}\n\ninterface IRecoverableERC721 {\n    /// See {IERC721-transferFrom(address,address,uint256)}\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) external;\n}\n"
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.7.0;\n\nimport \"./UsingAppendedCallData.sol\";\nimport \"./IERC2771.sol\";\nimport \"./IForwarderRegistry.sol\";\n\nabstract contract UsingUniversalForwarding is UsingAppendedCallData, IERC2771 {\n    IForwarderRegistry internal immutable _forwarderRegistry;\n    address internal immutable _universalForwarder;\n\n    constructor(IForwarderRegistry forwarderRegistry, address universalForwarder) {\n        _universalForwarder = universalForwarder;\n        _forwarderRegistry = forwarderRegistry;\n    }\n\n    function isTrustedForwarder(address forwarder) external view virtual override returns (bool) {\n        return forwarder == _universalForwarder || forwarder == address(_forwarderRegistry);\n    }\n\n    function _msgSender() internal view virtual returns (address payable) {\n        address payable msgSender = msg.sender;\n        address payable sender = _lastAppendedDataAsSender();\n        if (msgSender == address(_forwarderRegistry) || msgSender == _universalForwarder) {\n            // if forwarder use appended data\n            return sender;\n        }\n\n        // if msg.sender is neither the registry nor the universal forwarder,\n        // we have to check the last 20bytes of the call data intepreted as an address\n        // and check if the msg.sender was registered as forewarder for that address\n        // we check tx.origin to save gas in case where msg.sender == tx.origin\n        // solhint-disable-next-line avoid-tx-origin\n        if (msgSender != tx.origin && _forwarderRegistry.isForwarderFor(sender, msgSender)) {\n            return sender;\n        }\n\n        return msgSender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        address payable msgSender = msg.sender;\n        if (msgSender == address(_forwarderRegistry) || msgSender == _universalForwarder) {\n            // if forwarder use appended data\n            return _msgDataAssuming20BytesAppendedData();\n        }\n\n        // we check tx.origin to save gas in case where msg.sender == tx.origin\n        // solhint-disable-next-line avoid-tx-origin\n        if (msgSender != tx.origin && _forwarderRegistry.isForwarderFor(_lastAppendedDataAsSender(), msgSender)) {\n            return _msgDataAssuming20BytesAppendedData();\n        }\n        return msg.data;\n    }\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {Ownable} from \"./Ownable.sol\";\n\n/**\n * Contract which allows derived contracts access control over token minting operations.\n */\ncontract MinterRole is Ownable {\n    event MinterAdded(address indexed account);\n    event MinterRemoved(address indexed account);\n\n    mapping(address => bool) public isMinter;\n\n    /**\n     * Constructor.\n     */\n    constructor(address owner_) Ownable(owner_) {\n        _addMinter(owner_);\n    }\n\n    /**\n     * Grants the minter role to a non-minter.\n     * @dev reverts if the sender is not the contract owner.\n     * @param account The account to grant the minter role to.\n     */\n    function addMinter(address account) public {\n        _requireOwnership(_msgSender());\n        _addMinter(account);\n    }\n\n    /**\n     * Renounces the granted minter role.\n     * @dev reverts if the sender is not a minter.\n     */\n    function renounceMinter() public {\n        address account = _msgSender();\n        _requireMinter(account);\n        isMinter[account] = false;\n        emit MinterRemoved(account);\n    }\n\n    function _requireMinter(address account) internal view {\n        require(isMinter[account], \"MinterRole: not a Minter\");\n    }\n\n    function _addMinter(address account) internal {\n        isMinter[account] = true;\n        emit MinterAdded(account);\n    }\n}\n"
      },
      "contracts/token/ERC721/ERC721.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {AddressIsContract} from \"@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol\";\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC721} from \"./interfaces/IERC721.sol\";\nimport {IERC721Events} from \"./interfaces/IERC721Events.sol\";\nimport {IERC721Receiver} from \"./interfaces/IERC721Receiver.sol\";\nimport {IERC721Metadata} from \"./interfaces/IERC721Metadata.sol\";\nimport {IERC721BatchTransfer} from \"./interfaces/IERC721BatchTransfer.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {ERC721Simple} from \"./ERC721Simple.sol\";\n\n/**\n * @title ERC721 Non Fungible Token Contract.\n * @dev The function `tokenURI(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`.\n */\nabstract contract ERC721 is ManagedIdentity, IERC165, IERC721, IERC721Events, IERC721Metadata, IERC721BatchTransfer {\n    using AddressIsContract for address;\n\n    bytes4 internal constant _ERC721_RECEIVED = type(IERC721Receiver).interfaceId;\n\n    uint256 internal constant _APPROVAL_BIT_TOKEN_OWNER_ = 1 << 160;\n\n    // Burnt Non-Fungible Token owner's magic value\n    uint256 internal constant _BURNT_NFT_OWNER = 0xdead000000000000000000000000000000000000000000000000000000000000;\n\n    string internal _name;\n    string internal _symbol;\n\n    /* owner => operator => approved */\n    mapping(address => mapping(address => bool)) internal _operators;\n\n    /* NFT ID => owner */\n    mapping(uint256 => uint256) internal _owners;\n\n    /* owner => NFT balance */\n    mapping(address => uint256) internal _nftBalances;\n\n    /* NFT ID => operator */\n    mapping(uint256 => address) internal _nftApprovals;\n\n    /**\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n     */\n    // todo\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return\n            interfaceId == type(IERC165).interfaceId ||\n            interfaceId == type(IERC721).interfaceId ||\n            interfaceId == type(IERC721Metadata).interfaceId ||\n            interfaceId == type(IERC721BatchTransfer).interfaceId;\n    }\n\n    //=================================================== ERC721Metadata ====================================================//\n\n    /// @inheritdoc IERC721Metadata\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /// @inheritdoc IERC721Metadata\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    //======================================================= ERC721 ========================================================//\n\n    /// @inheritdoc IERC721\n    function balanceOf(address owner) public view virtual override returns (uint256) {\n        require(owner != address(0), \"ERC721: zero address\");\n        return _nftBalances[owner];\n    }\n\n    /// @inheritdoc IERC721\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n        address owner = address(uint160(_owners[tokenId]));\n        require(owner != address(0), \"ERC721: non-existing NFT\");\n        return owner;\n    }\n\n    /// @inheritdoc IERC721\n    function approve(address to, uint256 tokenId) public virtual override {\n        uint256 owner = _owners[tokenId];\n        require(owner != 0, \"ERC721: non-existing NFT\");\n        address ownerAddress = address(uint160(owner));\n        require(to != ownerAddress, \"ERC721: self-approval\");\n        require(_isOperatable(ownerAddress, _msgSender()), \"ERC721: non-approved sender\");\n        if (to == address(0)) {\n            if (owner & _APPROVAL_BIT_TOKEN_OWNER_ != 0) {\n                // remove the approval bit if it is present\n                _owners[tokenId] = uint256(ownerAddress);\n            }\n        } else {\n            uint256 ownerWithApprovalBit = owner | _APPROVAL_BIT_TOKEN_OWNER_;\n            if (owner != ownerWithApprovalBit) {\n                // add the approval bit if it is not present\n                _owners[tokenId] = ownerWithApprovalBit;\n            }\n            _nftApprovals[tokenId] = to;\n        }\n        emit Approval(ownerAddress, to, tokenId);\n    }\n\n    /// @inheritdoc IERC721\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\n        uint256 owner = _owners[tokenId];\n        require(address(uint160(owner)) != address(0), \"ERC721: non-existing NFT\");\n        if (owner & _APPROVAL_BIT_TOKEN_OWNER_ != 0) {\n            return _nftApprovals[tokenId];\n        } else {\n            return address(0);\n        }\n    }\n\n    /// @inheritdoc IERC721\n    function setApprovalForAll(address operator, bool approved) public virtual override {\n        address sender = _msgSender();\n        require(operator != sender, \"ERC721: self-approval\");\n        _operators[sender][operator] = approved;\n        emit ApprovalForAll(sender, operator, approved);\n    }\n\n    /// @inheritdoc IERC721\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n        return _operators[owner][operator];\n    }\n\n    /// @inheritdoc IERC721\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        _transferFrom(\n            from,\n            to,\n            tokenId,\n            \"\",\n            /* safe */\n            false\n        );\n    }\n\n    /// @inheritdoc IERC721\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        _transferFrom(\n            from,\n            to,\n            tokenId,\n            \"\",\n            /* safe */\n            true\n        );\n    }\n\n    /// @inheritdoc IERC721\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) public virtual override {\n        _transferFrom(\n            from,\n            to,\n            tokenId,\n            data,\n            /* safe */\n            true\n        );\n    }\n\n    //================================================= ERC721BatchTransfer =================================================//\n\n    /// @inheritdoc IERC721BatchTransfer\n    function batchTransferFrom(\n        address from,\n        address to,\n        uint256[] memory tokenIds\n    ) public virtual override {\n        require(to != address(0), \"ERC721: transfer to zero\");\n        address sender = _msgSender();\n        bool operatable = _isOperatable(from, sender);\n\n        uint256 length = tokenIds.length;\n\n        for (uint256 i; i != length; ++i) {\n            uint256 tokenId = tokenIds[i];\n            _transferNFT(from, to, tokenId, operatable, true);\n            emit Transfer(from, to, tokenId);\n        }\n\n        if (length != 0) {\n            _transferNFTUpdateBalances(from, to, length);\n        }\n    }\n\n    //============================================ High-level Internal Functions ============================================//\n\n    function _mint(\n        address to,\n        uint256 tokenId,\n        bytes memory data,\n        bool safe\n    ) internal {\n        require(to != address(0), \"ERC721: mint to zero\");\n\n        _mintNFT(to, tokenId, false);\n\n        emit Transfer(address(0), to, tokenId);\n        if (safe && to.isContract()) {\n            _callOnERC721Received(address(0), to, tokenId, data);\n        }\n    }\n\n    function _batchMint(address to, uint256[] memory tokenIds) internal {\n        require(to != address(0), \"ERC721: mint to zero\");\n\n        uint256 length = tokenIds.length;\n        for (uint256 i; i != length; ++i) {\n            uint256 tokenId = tokenIds[i];\n            _mintNFT(to, tokenId, true);\n            emit Transfer(address(0), to, tokenId);\n        }\n\n        _nftBalances[to] += length;\n    }\n\n    function _transferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data,\n        bool safe\n    ) internal {\n        require(to != address(0), \"ERC721: transfer to zero\");\n        address sender = _msgSender();\n        bool operatable = _isOperatable(from, sender);\n\n        _transferNFT(from, to, tokenId, operatable, false);\n\n        emit Transfer(from, to, tokenId);\n        if (safe && to.isContract()) {\n            _callOnERC721Received(from, to, tokenId, data);\n        }\n    }\n\n    //============================================== Helper Internal Functions ==============================================//\n\n    function _transferNFT(\n        address from,\n        address to,\n        uint256 id,\n        bool operatable,\n        bool isBatch\n    ) internal virtual {\n        uint256 owner = _owners[id];\n        require(from == address(uint160(owner)), \"ERC721: non-owned NFT\");\n        if (!operatable) {\n            require((owner & _APPROVAL_BIT_TOKEN_OWNER_ != 0) && _msgSender() == _nftApprovals[id], \"ERC721: non-approved sender\");\n        }\n        _owners[id] = uint256(uint160(to));\n        if (!isBatch) {\n            _transferNFTUpdateBalances(from, to, 1);\n        }\n    }\n\n    function _transferNFTUpdateBalances(\n        address from,\n        address to,\n        uint256 amount\n    ) internal virtual {\n        if (from != to) {\n            // cannot underflow as balance is verified through ownership\n            _nftBalances[from] -= amount;\n            //  cannot overflow as supply cannot overflow\n            _nftBalances[to] += amount;\n        }\n    }\n\n    function _mintNFT(\n        address to,\n        uint256 id,\n        bool isBatch\n    ) internal {\n        require(_owners[id] == 0, \"ERC721: existing/burnt NFT\");\n\n        _owners[id] = uint256(uint160(to));\n\n        if (!isBatch) {\n            // cannot overflow due to the cost of minting individual tokens\n            ++_nftBalances[to];\n        }\n    }\n\n    /**\n     * Calls {IERC721Receiver-onERC721Received} on a target contract.\n     * @dev Reverts if `to` is not a contract.\n     * @dev Reverts if the call to the target fails or is refused.\n     * @param from Previous token owner.\n     * @param to New token owner.\n     * @param tokenId Identifier of the token transferred.\n     * @param data Optional data to send along with the receiver contract call.\n     */\n    function _callOnERC721Received(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) internal {\n        require(IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) == _ERC721_RECEIVED, \"ERC721: transfer refused\");\n    }\n\n    /**\n     * Returns whether `sender` is authorised to make a transfer on behalf of `from`.\n     * @param from The address to check operatibility upon.\n     * @param sender The sender address.\n     * @return True if sender is `from` or an operator for `from`, false otherwise.\n     */\n    function _isOperatable(address from, address sender) internal view virtual returns (bool) {\n        return (from == sender) || _operators[from][sender];\n    }\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {AddressIsContract} from \"./types/AddressIsContract.sol\";\n\n/**\n * @title ERC20Wrapper\n * Wraps ERC20 functions to support non-standard implementations which do not return a bool value.\n * Calls to the wrapped functions revert only if they throw or if they return false.\n */\nlibrary ERC20Wrapper {\n    using AddressIsContract for address;\n\n    function wrappedTransfer(\n        IWrappedERC20 token,\n        address to,\n        uint256 value\n    ) internal {\n        _callWithOptionalReturnData(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n    }\n\n    function wrappedTransferFrom(\n        IWrappedERC20 token,\n        address from,\n        address to,\n        uint256 value\n    ) internal {\n        _callWithOptionalReturnData(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n    }\n\n    function wrappedApprove(\n        IWrappedERC20 token,\n        address spender,\n        uint256 value\n    ) internal {\n        _callWithOptionalReturnData(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n    }\n\n    function _callWithOptionalReturnData(IWrappedERC20 token, bytes memory callData) internal {\n        address target = address(token);\n        require(target.isContract(), \"ERC20Wrapper: non-contract\");\n\n        // solhint-disable-next-line avoid-low-level-calls\n        (bool success, bytes memory data) = target.call(callData);\n        if (success) {\n            if (data.length != 0) {\n                require(abi.decode(data, (bool)), \"ERC20Wrapper: operation failed\");\n            }\n        } else {\n            // revert using a standard revert message\n            if (data.length == 0) {\n                revert(\"ERC20Wrapper: operation failed\");\n            }\n\n            // revert using the revert message coming from the call\n            assembly {\n                let size := mload(data)\n                revert(add(32, data), size)\n            }\n        }\n    }\n}\n\ninterface IWrappedERC20 {\n    function transfer(address to, uint256 value) external returns (bool);\n\n    function transferFrom(\n        address from,\n        address to,\n        uint256 value\n    ) external returns (bool);\n\n    function approve(address spender, uint256 value) external returns (bool);\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\n// Partially derived from OpenZeppelin:\n// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/406c83649bd6169fc1b578e08506d78f0873b276/contracts/utils/Address.sol\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @dev Upgrades the address type to check if it is a contract.\n */\nlibrary AddressIsContract {\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     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize, which returns 0 for contracts in\n        // construction, since the code is only stored at the end of the\n        // constructor execution.\n\n        uint256 size;\n        assembly {\n            size := extcodesize(account)\n        }\n        return size > 0;\n    }\n}\n"
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingAppendedCallData.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.7.0;\n\nabstract contract UsingAppendedCallData {\n    function _lastAppendedDataAsSender() internal pure virtual returns (address payable sender) {\n        // Copied from openzeppelin : https://github.com/OpenZeppelin/openzeppelin-contracts/blob/9d5f77db9da0604ce0b25148898a94ae2c20d70f/contracts/metatx/ERC2771Context.sol1\n        // The assembly code is more direct than the Solidity version using `abi.decode`.\n        // solhint-disable-next-line no-inline-assembly\n        assembly {\n            sender := shr(96, calldataload(sub(calldatasize(), 20)))\n        }\n    }\n\n    function _msgDataAssuming20BytesAppendedData() internal pure virtual returns (bytes calldata) {\n        return msg.data[:msg.data.length - 20];\n    }\n}\n"
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IERC2771.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.7.0;\n\ninterface IERC2771 {\n    function isTrustedForwarder(address forwarder) external view returns (bool);\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165.\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/token/ERC721/interfaces/IERC721.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC721 Non-Fungible Token Standard, basic interface (functions).\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n * @dev This interface only contains the standard functions. See IERC721Events for the events.\n * @dev Note: The ERC-165 identifier for this interface is 0x80ac58cd.\n */\ninterface IERC721 {\n    /**\n     * Gets the balance of the specified address\n     * @param owner address to query the balance of\n     * @return balance uint256 representing the amount owned by the passed address\n     */\n    function balanceOf(address owner) external view returns (uint256 balance);\n\n    /**\n     * Gets the owner of the specified ID\n     * @param tokenId uint256 ID to query the owner of\n     * @return owner address currently marked as the owner of the given ID\n     */\n    function ownerOf(uint256 tokenId) external view returns (address owner);\n\n    /**\n     * Approves another address to transfer the given token ID\n     * @dev The zero address indicates there is no approved address.\n     * @dev There can only be one approved address per token at a given time.\n     * @dev Can only be called by the token owner or an approved operator.\n     * @param to address to be approved for the given token ID\n     * @param tokenId uint256 ID of the token to be approved\n     */\n    function approve(address to, uint256 tokenId) external;\n\n    /**\n     * Gets the approved address for a token ID, or zero if no address set\n     * @dev Reverts if the token ID does not exist.\n     * @param tokenId uint256 ID of the token to query the approval of\n     * @return operator address currently approved for the given token ID\n     */\n    function getApproved(uint256 tokenId) external view returns (address operator);\n\n    /**\n     * Sets or unsets the approval of a given operator\n     * @dev An operator is allowed to transfer all tokens of the sender on their behalf\n     * @param operator operator address to set the approval\n     * @param approved representing the status of the approval to be set\n     */\n    function setApprovalForAll(address operator, bool approved) external;\n\n    /**\n     * Tells whether an operator is approved by a given owner\n     * @param owner owner address which you want to query the approval of\n     * @param operator operator address which you want to query the approval of\n     * @return bool whether the given operator is approved by the given owner\n     */\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\n\n    /**\n     * Transfers the ownership of a given token ID to another address\n     * @dev Usage of this method is discouraged, use `safeTransferFrom` whenever possible\n     * @dev Requires the msg sender to be the owner, approved, or operator\n     * @param from current owner of the token\n     * @param to address to receive the ownership of the given token ID\n     * @param tokenId uint256 ID of the token to be transferred\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) external;\n\n    /**\n     * Safely transfers the ownership of a given token ID to another address\n     *\n     * If the target address is a contract, it must implement `onERC721Received`,\n     * which is called upon a safe transfer, and return the magic value\n     * `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\n     * the transfer is reverted.\n     *\n     * @dev Requires the msg sender to be the owner, approved, or operator\n     * @param from current owner of the token\n     * @param to address to receive the ownership of the given token ID\n     * @param tokenId uint256 ID of the token to be transferred\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) external;\n\n    /**\n     * Safely transfers the ownership of a given token ID to another address\n     *\n     * If the target address is a contract, it must implement `onERC721Received`,\n     * which is called upon a safe transfer, and return the magic value\n     * `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\n     * the transfer is reverted.\n     *\n     * @dev Requires the msg sender to be the owner, approved, or operator\n     * @param from current owner of the token\n     * @param to address to receive the ownership of the given token ID\n     * @param tokenId uint256 ID of the token to be transferred\n     * @param data bytes data to send along with a safe transfer check\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes calldata data\n    ) external;\n}\n"
      },
      "contracts/token/ERC721/interfaces/IERC721Events.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC721 Non-Fungible Token Standard, basic interface (events).\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n * @dev This interface only contains the standard events, see IERC721 for the functions.\n * @dev Note: The ERC-165 identifier for this interface is 0x80ac58cd.\n */\ninterface IERC721Events {\n    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);\n\n    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);\n\n    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);\n}\n"
      },
      "contracts/token/ERC721/interfaces/IERC721Receiver.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC721 Non-Fungible Token Standard, Tokens Receiver.\n * Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n * @dev Note: The ERC-165 identifier for this interface is 0x150b7a02.\n */\ninterface IERC721Receiver {\n    /**\n     * Handles the receipt of an NFT.\n     * @dev The ERC721 smart contract calls this function on the recipient\n     *  after a {IERC721-safeTransferFrom}. This function MUST return the function selector,\n     *  otherwise the caller will revert the transaction. The selector to be\n     *  returned can be obtained as `this.onERC721Received.selector`. This\n     *  function MAY throw to revert and reject the transfer.\n     * @dev Note: the ERC721 contract address is always the message sender.\n     * @param operator The address which called `safeTransferFrom` function\n     * @param from The address which previously owned the token\n     * @param tokenId The NFT identifier which is being transferred\n     * @param data Additional data with no specified format\n     * @return bytes4 `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`\n     */\n    function onERC721Received(\n        address operator,\n        address from,\n        uint256 tokenId,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n"
      },
      "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC721 Non-Fungible Token Standard, optional extension: Batch Transfer.\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n * @dev Note: The ERC-165 identifier for this interface is 0xf3993d11.\n */\ninterface IERC721BatchTransfer {\n    /**\n     * Unsafely transfers a batch of tokens.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if one of `tokenIds` is not owned by `from`.\n     * @dev Resets the token approval for each of `tokenIds`.\n     * @dev Emits an {IERC721-Transfer} event for each of `tokenIds`.\n     * @param from Current tokens owner.\n     * @param to Address of the new token owner.\n     * @param tokenIds Identifiers of the tokens to transfer.\n     */\n    function batchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata tokenIds\n    ) external;\n}\n"
      },
      "contracts/token/ERC721/ERC721Simple.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {AddressIsContract} from \"@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol\";\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC721} from \"./interfaces/IERC721.sol\";\nimport {IERC721Events} from \"./interfaces/IERC721Events.sol\";\nimport {IERC721Receiver} from \"./interfaces/IERC721Receiver.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\n\n/**\n * @title ERC721 Non Fungible Token Contract, simple implementation.\n */\ncontract ERC721Simple is ManagedIdentity, IERC165, IERC721, IERC721Events {\n    using AddressIsContract for address;\n\n    bytes4 internal constant _ERC721_RECEIVED = type(IERC721Receiver).interfaceId;\n\n    uint256 internal constant _APPROVAL_BIT_TOKEN_OWNER_ = 1 << 160;\n\n    /* owner => operator => approved */\n    mapping(address => mapping(address => bool)) internal _operators;\n\n    /* NFT ID => owner */\n    mapping(uint256 => uint256) internal _owners;\n\n    /* owner => NFT balance */\n    mapping(address => uint256) internal _nftBalances;\n\n    /* NFT ID => operator */\n    mapping(uint256 => address) internal _nftApprovals;\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC165).interfaceId || interfaceId == type(IERC721).interfaceId;\n    }\n\n    //======================================================= ERC721 ========================================================//\n\n    /// @inheritdoc IERC721\n    function balanceOf(address owner) public view virtual override returns (uint256) {\n        require(owner != address(0), \"ERC721: zero address\");\n        return _nftBalances[owner];\n    }\n\n    /// @inheritdoc IERC721\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n        address owner = address(uint160(_owners[tokenId]));\n        require(owner != address(0), \"ERC721: non-existing NFT\");\n        return owner;\n    }\n\n    /// @inheritdoc IERC721\n    function approve(address to, uint256 tokenId) public virtual override {\n        uint256 owner = _owners[tokenId];\n        require(owner != 0, \"ERC721: non-existing NFT\");\n        address ownerAddress = address(uint160(owner));\n        require(to != ownerAddress, \"ERC721: self-approval\");\n        require(_isOperatable(ownerAddress, _msgSender()), \"ERC721: non-approved sender\");\n        if (to == address(0)) {\n            if (owner & _APPROVAL_BIT_TOKEN_OWNER_ != 0) {\n                // remove the approval bit if it is present\n                _owners[tokenId] = uint256(ownerAddress);\n            }\n        } else {\n            uint256 ownerWithApprovalBit = owner | _APPROVAL_BIT_TOKEN_OWNER_;\n            if (owner != ownerWithApprovalBit) {\n                // add the approval bit if it is not present\n                _owners[tokenId] = ownerWithApprovalBit;\n            }\n            _nftApprovals[tokenId] = to;\n        }\n        emit Approval(ownerAddress, to, tokenId);\n    }\n\n    /// @inheritdoc IERC721\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\n        uint256 owner = _owners[tokenId];\n        require(address(uint160(owner)) != address(0), \"ERC721: non-existing NFT\");\n        if (owner & _APPROVAL_BIT_TOKEN_OWNER_ != 0) {\n            return _nftApprovals[tokenId];\n        } else {\n            return address(0);\n        }\n    }\n\n    /// @inheritdoc IERC721\n    function setApprovalForAll(address operator, bool approved) public virtual override {\n        address sender = _msgSender();\n        require(operator != sender, \"ERC721: self-approval\");\n        _operators[sender][operator] = approved;\n        emit ApprovalForAll(sender, operator, approved);\n    }\n\n    /// @inheritdoc IERC721\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n        return _operators[owner][operator];\n    }\n\n    /// @inheritdoc IERC721\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        _transferFrom(\n            from,\n            to,\n            tokenId,\n            \"\",\n            /* safe */\n            false\n        );\n    }\n\n    /// @inheritdoc IERC721\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        _transferFrom(\n            from,\n            to,\n            tokenId,\n            \"\",\n            /* safe */\n            true\n        );\n    }\n\n    /// @inheritdoc IERC721\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) public virtual override {\n        _transferFrom(\n            from,\n            to,\n            tokenId,\n            data,\n            /* safe */\n            true\n        );\n    }\n\n    //============================================ High-level Internal Functions ============================================//\n\n    function _transferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data,\n        bool safe\n    ) internal virtual {\n        require(to != address(0), \"ERC721: transfer to zero\");\n        address sender = _msgSender();\n        bool operatable = _isOperatable(from, sender);\n\n        uint256 owner = _owners[tokenId];\n        require(from == address(uint160(owner)), \"ERC721: non-owned NFT\");\n        if (!operatable) {\n            require((owner & _APPROVAL_BIT_TOKEN_OWNER_ != 0) && _msgSender() == _nftApprovals[tokenId], \"ERC721: non-approved sender\");\n        }\n        _owners[tokenId] = uint256(uint160(to));\n\n        if (from != to) {\n            // cannot underflow as balance is verified through ownership\n            --_nftBalances[from];\n            //  cannot overflow as supply cannot overflow\n            ++_nftBalances[to];\n        }\n\n        emit Transfer(from, to, tokenId);\n\n        if (safe && to.isContract()) {\n            require(IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) == _ERC721_RECEIVED, \"ERC721: transfer refused\");\n        }\n    }\n\n    function _mint(address to, uint256 tokenId) internal virtual {\n        require(to != address(0), \"ERC721: mint to zero\");\n        require(_owners[tokenId] == 0, \"ERC721: existing NFT\");\n\n        _owners[tokenId] = uint256(uint160(to));\n\n        // cannot overflow due to the cost of minting individual tokens\n        ++_nftBalances[to];\n\n        emit Transfer(address(0), to, tokenId);\n    }\n\n    function _burn(uint256 tokenId) internal virtual {\n        address owner = address(uint160(_owners[tokenId]));\n\n        require(owner != address(0), \"ERC721: non-existing NFT\");\n\n        _owners[tokenId] = 0;\n\n        // cannot underflow as balance is verified through NFT ownership\n        --_nftBalances[owner];\n\n        emit Transfer(owner, address(0), tokenId);\n    }\n\n    //============================================== Internal Helper Functions ==============================================//\n\n    /**\n     * Returns whether `sender` is authorised to make a transfer on behalf of `from`.\n     * @param from The address to check operatibility upon.\n     * @param sender The sender address.\n     * @return True if sender is `from` or an operator for `from`, false otherwise.\n     */\n    function _isOperatable(address from, address sender) internal view returns (bool) {\n        return (from == sender) || _operators[from][sender];\n    }\n}\n"
      },
      "contracts/token/ERC721/ERC721Burnable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC721Burnable} from \"./interfaces/IERC721Burnable.sol\";\nimport {ERC721} from \"./ERC721.sol\";\n\n/**\n * @title ERC721 Non Fungible Token Contract, burnable version.\n * @dev The function `tokenURI(uin256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`.\n */\nabstract contract ERC721Burnable is IERC721Burnable, ERC721 {\n    constructor(string memory name_, string memory symbol_) ERC721(name_, symbol_) {}\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC721Burnable).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    //=================================================== ERC721Burnable ====================================================//\n\n    /// @inheritdoc IERC721Burnable\n    function burnFrom(address from, uint256 tokenId) public virtual override {\n        address sender = _msgSender();\n        bool operatable = _isOperatable(from, sender);\n\n        _burnNFT(from, tokenId, operatable, false);\n        emit Transfer(from, address(0), tokenId);\n    }\n\n    /// @inheritdoc IERC721Burnable\n    function batchBurnFrom(address from, uint256[] memory tokenIds) public virtual override {\n        address sender = _msgSender();\n        bool operatable = _isOperatable(from, sender);\n\n        uint256 length = tokenIds.length;\n\n        for (uint256 i; i != length; ++i) {\n            uint256 tokenId = tokenIds[i];\n            _burnNFT(from, tokenId, operatable, true);\n            emit Transfer(from, address(0), tokenId);\n        }\n\n        if (length != 0) {\n            _nftBalances[from] -= length;\n        }\n    }\n\n    //============================================== Helper Internal Functions ==============================================//\n\n    function _burnNFT(\n        address from,\n        uint256 id,\n        bool operatable,\n        bool isBatch\n    ) internal virtual {\n        uint256 owner = _owners[id];\n        require(from == address(uint160(owner)), \"ERC721: non-owned NFT\");\n        if (!operatable) {\n            require((owner & _APPROVAL_BIT_TOKEN_OWNER_ != 0) && _msgSender() == _nftApprovals[id], \"ERC721: non-approved sender\");\n        }\n        _owners[id] = _BURNT_NFT_OWNER;\n\n        if (!isBatch) {\n            // cannot underflow as balance is verified through NFT ownership\n            --_nftBalances[from];\n        }\n    }\n}\n"
      },
      "contracts/token/ERC721/interfaces/IERC721Burnable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC721 Non-Fungible Token Standard, optional extension: Burnable.\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n * @dev Note: The ERC-165 identifier for this interface is 0x8b8b4ef5.\n */\ninterface IERC721Burnable {\n    /**\n     * Burns a token.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `tokenId` is not owned by `from`.\n     * @dev Emits an {IERC721-Transfer} event to address zero.\n     * @param from Current token owner.\n     * @param tokenId Identifier of the token to burn.\n     */\n    function burnFrom(address from, uint256 tokenId) external;\n\n    /**\n     * Burns a batch of tokens.\n     * @dev Reverts if the sender is not approved for any of `tokenIds`.\n     * @dev Reverts if one of `tokenIds` is not owned by `from`.\n     * @dev Emits an {IERC721-Transfer} event to address zero for each of `tokenIds`.\n     * @param from Current tokens owner.\n     * @param tokenIds Identifiers of the tokens to burn.\n     */\n    function batchBurnFrom(address from, uint256[] calldata tokenIds) external;\n}\n"
      },
      "contracts/token/ERC721/mocks/ERC721BurnableMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IForwarderRegistry} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol\";\nimport {IERC721Metadata} from \"./../interfaces/IERC721Metadata.sol\";\nimport {IERC721Mintable} from \"./../interfaces/IERC721Mintable.sol\";\nimport {IERC721Burnable} from \"./../interfaces/IERC721Burnable.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {Recoverable} from \"@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol\";\nimport {UsingUniversalForwarding} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol\";\nimport {MinterRole} from \"@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol\";\nimport {ERC721Burnable} from \"./../ERC721Burnable.sol\";\nimport {NFTBaseMetadataURI} from \"./../../../metadata/NFTBaseMetadataURI.sol\";\n\n/**\n * @title ERC721 Burnable Mock.\n */\ncontract ERC721BurnableMock is Recoverable, UsingUniversalForwarding, ERC721Burnable, IERC721Mintable, NFTBaseMetadataURI, MinterRole {\n    constructor(IForwarderRegistry forwarderRegistry, address universalForwarder)\n        ERC721Burnable(\"ERC721BurnableMock\", \"E721B\")\n        UsingUniversalForwarding(forwarderRegistry, universalForwarder)\n        MinterRole(msg.sender)\n    {}\n\n    //=================================================== ERC721Metadata ====================================================//\n\n    /// @inheritdoc IERC721Metadata\n    function tokenURI(uint256 nftId) external view virtual override returns (string memory) {\n        require(address(uint160(_owners[nftId])) != address(0), \"ERC721: non-existing NFT\");\n        return _uri(nftId);\n    }\n\n    //=================================================== ERC721Mintable ====================================================//\n\n    /// @inheritdoc IERC721Mintable\n    /// @dev Reverts if the sender is not a minter.\n    function mint(address to, uint256 nftId) public virtual override {\n        _requireMinter(_msgSender());\n        _mint(to, nftId, \"\", false);\n    }\n\n    /// @inheritdoc IERC721Mintable\n    /// @dev Reverts if the sender is not a minter.\n    function batchMint(address to, uint256[] memory nftIds) public virtual override {\n        _requireMinter(_msgSender());\n        _batchMint(to, nftIds);\n    }\n\n    /// @inheritdoc IERC721Mintable\n    /// @dev Reverts if the sender is not a minter.\n    function safeMint(\n        address to,\n        uint256 nftId,\n        bytes memory data\n    ) public virtual override {\n        _requireMinter(_msgSender());\n        _mint(to, nftId, data, true);\n    }\n\n    //======================================== Meta Transactions Internal Functions =========================================//\n\n    function _msgSender() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (address payable) {\n        return UsingUniversalForwarding._msgSender();\n    }\n\n    function _msgData() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (bytes memory ret) {\n        return UsingUniversalForwarding._msgData();\n    }\n\n    //=============================================== Mock Coverage Functions ===============================================//\n\n    function msgData() external view returns (bytes memory ret) {\n        return _msgData();\n    }\n}\n"
      },
      "contracts/token/ERC721/mocks/ERC721PausableMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IForwarderRegistry} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol\";\nimport {IERC721} from \"./../interfaces/IERC721.sol\";\nimport {IERC721BatchTransfer} from \"./../interfaces/IERC721BatchTransfer.sol\";\nimport {IERC721Burnable} from \"./../interfaces/IERC721Burnable.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {UsingUniversalForwarding} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol\";\nimport {ERC721BurnableMock} from \"./ERC721BurnableMock.sol\";\nimport {Pausable} from \"@animoca/ethereum-contracts-core/contracts/lifecycle/Pausable.sol\";\n\n/**\n * @title ERC721 Pausable Mock.\n * @dev The minting functions are usable while paused as it can be useful for contract maintenance such as contract migration.\n */\ncontract ERC721PausableMock is Pausable, ERC721BurnableMock {\n    constructor(IForwarderRegistry forwarderRegistry, address universalForwarder)\n        ERC721BurnableMock(forwarderRegistry, universalForwarder)\n        Pausable(false)\n    {}\n\n    //================================================== Pausable (admin) ===================================================//\n\n    /// @dev Reverts if the sender is not the contract owner.\n    function pause() external virtual {\n        _requireOwnership(_msgSender());\n        _pause();\n    }\n\n    /// @dev Reverts if the sender is not the contract owner.\n    function unpause() external virtual {\n        _requireOwnership(_msgSender());\n        _unpause();\n    }\n\n    //======================================================= ERC721 ========================================================//\n\n    /// @inheritdoc IERC721\n    /// @dev Reverts if the contract is paused.\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        _requireNotPaused();\n        super.transferFrom(from, to, tokenId);\n    }\n\n    /// @inheritdoc IERC721\n    /// @dev Reverts if the contract is paused.\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        _requireNotPaused();\n        super.safeTransferFrom(from, to, tokenId);\n    }\n\n    /// @inheritdoc IERC721\n    /// @dev Reverts if the contract is paused.\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) public virtual override {\n        _requireNotPaused();\n        super.safeTransferFrom(from, to, tokenId, data);\n    }\n\n    //================================================= ERC721BatchTransfer =================================================//\n\n    /// @inheritdoc IERC721BatchTransfer\n    /// @dev Reverts if the contract is paused.\n    function batchTransferFrom(\n        address from,\n        address to,\n        uint256[] memory tokenIds\n    ) public virtual override {\n        _requireNotPaused();\n        super.batchTransferFrom(from, to, tokenIds);\n    }\n\n    //=================================================== ERC721Burnable ====================================================//\n\n    /// @inheritdoc IERC721Burnable\n    /// @dev Reverts if the contract is paused.\n    function burnFrom(address from, uint256 tokenId) public virtual override {\n        _requireNotPaused();\n        super.burnFrom(from, tokenId);\n    }\n\n    /// @inheritdoc IERC721Burnable\n    /// @dev Reverts if the contract is paused.\n    function batchBurnFrom(address from, uint256[] memory tokenIds) public virtual override {\n        _requireNotPaused();\n        super.batchBurnFrom(from, tokenIds);\n    }\n\n    //======================================== Meta Transactions Internal Functions =========================================//\n\n    function _msgSender() internal view virtual override(ManagedIdentity, ERC721BurnableMock) returns (address payable) {\n        return UsingUniversalForwarding._msgSender();\n    }\n\n    function _msgData() internal view virtual override(ManagedIdentity, ERC721BurnableMock) returns (bytes memory ret) {\n        return UsingUniversalForwarding._msgData();\n    }\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/lifecycle/Pausable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {ManagedIdentity} from \"../metatx/ManagedIdentity.sol\";\n\n/**\n * @dev Contract which allows children to implement pausability.\n */\nabstract contract Pausable is ManagedIdentity {\n    /**\n     * @dev Emitted when the pause is triggered by `account`.\n     */\n    event Paused(address account);\n\n    /**\n     * @dev Emitted when the pause is lifted by `account`.\n     */\n    event Unpaused(address account);\n\n    bool public paused;\n\n    constructor(bool paused_) {\n        paused = paused_;\n    }\n\n    function _requireNotPaused() internal view {\n        require(!paused, \"Pausable: paused\");\n    }\n\n    function _requirePaused() internal view {\n        require(paused, \"Pausable: not paused\");\n    }\n\n    /**\n     * @dev Triggers stopped state.\n     *\n     * Requirements:\n     *\n     * - The contract must not be paused.\n     */\n    function _pause() internal virtual {\n        _requireNotPaused();\n        paused = true;\n        emit Paused(_msgSender());\n    }\n\n    /**\n     * @dev Returns to normal state.\n     *\n     * Requirements:\n     *\n     * - The contract must be paused.\n     */\n    function _unpause() internal virtual {\n        _requirePaused();\n        paused = false;\n        emit Unpaused(_msgSender());\n    }\n}\n"
      },
      "contracts/token/ERC1155721/ERC1155721InventoryBurnable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {ERC1155InventoryIdentifiersLib} from \"./../ERC1155/ERC1155InventoryIdentifiersLib.sol\";\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC1155721InventoryBurnable} from \"./interfaces/IERC1155721InventoryBurnable.sol\";\nimport {ERC1155721Inventory} from \"./ERC1155721Inventory.sol\";\n\n/**\n * @title ERC1155721Inventory, an ERC1155Inventory with additional support for ERC721, burnable version.\n * @dev The function `uri(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`.\n */\nabstract contract ERC1155721InventoryBurnable is IERC1155721InventoryBurnable, ERC1155721Inventory {\n    using ERC1155InventoryIdentifiersLib for uint256;\n\n    constructor(\n        string memory name_,\n        string memory symbol_,\n        uint256 collectionMaskLength\n    ) ERC1155721Inventory(name_, symbol_, collectionMaskLength) {}\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC1155721InventoryBurnable).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    //============================================= ERC1155721InventoryBurnable =============================================//\n\n    /// @inheritdoc IERC1155721InventoryBurnable\n    function burnFrom(\n        address from,\n        uint256 id,\n        uint256 value\n    ) public virtual override {\n        address sender = _msgSender();\n        bool operatable = _isOperatable(from, sender);\n\n        if (id.isFungibleToken()) {\n            _burnFungible(from, id, value, operatable);\n        } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n            _burnNFT(from, id, value, operatable, false);\n            emit Transfer(from, address(0), id);\n        } else {\n            revert(\"Inventory: not a token id\");\n        }\n\n        emit TransferSingle(sender, from, address(0), id, value);\n    }\n\n    /// @inheritdoc IERC1155721InventoryBurnable\n    function batchBurnFrom(\n        address from,\n        uint256[] memory ids,\n        uint256[] memory values\n    ) public virtual override {\n        uint256 length = ids.length;\n        require(length == values.length, \"Inventory: inconsistent arrays\");\n\n        address sender = _msgSender();\n        bool operatable = _isOperatable(from, sender);\n\n        uint256 nfCollectionId;\n        uint256 nfCollectionCount;\n        uint256 nftsCount;\n        for (uint256 i; i != length; ++i) {\n            uint256 id = ids[i];\n            if (id.isFungibleToken()) {\n                _burnFungible(from, id, values[i], operatable);\n            } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n                _burnNFT(from, id, values[i], operatable, true);\n                emit Transfer(from, address(0), id);\n                uint256 nextCollectionId = id.getNonFungibleCollection(_collectionMaskLength);\n                if (nfCollectionId == 0) {\n                    nfCollectionId = nextCollectionId;\n                    nfCollectionCount = 1;\n                } else {\n                    if (nextCollectionId != nfCollectionId) {\n                        _burnNFTUpdateCollection(from, nfCollectionId, nfCollectionCount);\n                        nfCollectionId = nextCollectionId;\n                        nftsCount += nfCollectionCount;\n                        nfCollectionCount = 1;\n                    } else {\n                        ++nfCollectionCount;\n                    }\n                }\n            } else {\n                revert(\"Inventory: not a token id\");\n            }\n        }\n\n        if (nfCollectionId != 0) {\n            _burnNFTUpdateCollection(from, nfCollectionId, nfCollectionCount);\n            nftsCount += nfCollectionCount;\n            // cannot underflow as balance is verified through ownership\n            _nftBalances[from] -= nftsCount;\n        }\n\n        emit TransferBatch(sender, from, address(0), ids, values);\n    }\n\n    /// @inheritdoc IERC1155721InventoryBurnable\n    function batchBurnFrom(address from, uint256[] memory nftIds) public virtual override {\n        address sender = _msgSender();\n        bool operatable = _isOperatable(from, sender);\n\n        uint256 length = nftIds.length;\n        uint256[] memory values = new uint256[](length);\n\n        uint256 nfCollectionId;\n        uint256 nfCollectionCount;\n        for (uint256 i; i != length; ++i) {\n            uint256 nftId = nftIds[i];\n            values[i] = 1;\n            _burnNFT(from, nftId, values[i], operatable, true);\n            emit Transfer(from, address(0), nftId);\n            uint256 nextCollectionId = nftId.getNonFungibleCollection(_collectionMaskLength);\n            if (nfCollectionId == 0) {\n                nfCollectionId = nextCollectionId;\n                nfCollectionCount = 1;\n            } else {\n                if (nextCollectionId != nfCollectionId) {\n                    _burnNFTUpdateCollection(from, nfCollectionId, nfCollectionCount);\n                    nfCollectionId = nextCollectionId;\n                    nfCollectionCount = 1;\n                } else {\n                    ++nfCollectionCount;\n                }\n            }\n        }\n\n        if (nfCollectionId != 0) {\n            _burnNFTUpdateCollection(from, nfCollectionId, nfCollectionCount);\n            _nftBalances[from] -= length;\n        }\n\n        emit TransferBatch(sender, from, address(0), nftIds, values);\n    }\n\n    //============================================== Helper Internal Functions ==============================================//\n\n    function _burnFungible(\n        address from,\n        uint256 id,\n        uint256 value,\n        bool operatable\n    ) internal {\n        require(value != 0, \"Inventory: zero value\");\n        require(operatable, \"Inventory: non-approved sender\");\n        uint256 balance = _balances[id][from];\n        require(balance >= value, \"Inventory: not enough balance\");\n        _balances[id][from] = balance - value;\n        // Cannot underflow\n        _supplies[id] -= value;\n    }\n\n    function _burnNFT(\n        address from,\n        uint256 id,\n        uint256 value,\n        bool operatable,\n        bool isBatch\n    ) internal virtual {\n        require(value == 1, \"Inventory: wrong NFT value\");\n        uint256 owner = _owners[id];\n        require(from == address(uint160(owner)), \"Inventory: non-owned NFT\");\n        if (!operatable) {\n            require((owner & _APPROVAL_BIT_TOKEN_OWNER_ != 0) && _msgSender() == _nftApprovals[id], \"Inventory: non-approved sender\");\n        }\n        _owners[id] = _BURNT_NFT_OWNER;\n\n        if (!isBatch) {\n            _burnNFTUpdateCollection(from, id.getNonFungibleCollection(_collectionMaskLength), 1);\n\n            // cannot underflow as balance is verified through NFT ownership\n            --_nftBalances[from];\n        }\n    }\n\n    function _burnNFTUpdateCollection(\n        address from,\n        uint256 collectionId,\n        uint256 amount\n    ) internal virtual {\n        // cannot underflow as balance is verified through NFT ownership\n        _balances[collectionId][from] -= amount;\n        _supplies[collectionId] -= amount;\n    }\n}\n"
      },
      "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155InventoryIdentifiersLib, a library to introspect inventory identifiers.\n * @dev With 0 < N < 256 representing the Non-Fungible Collection mask length, identifiers are represented as follow:\n * (a) a Fungible Token:\n *     - most significant bit == 0\n * (b) a Non-Fungible Collection:\n *     - most significant bit == 1\n *     - (256-N) least significant bits == 0\n * (c) a Non-Fungible Token:\n *     - most significant bit == 1\n *     - (256-N) least significant bits != 0\n */\nlibrary ERC1155InventoryIdentifiersLib {\n    // Non-Fungible bit. If an id has this bit set, it is a Non-Fungible (either Collection or Token)\n    uint256 internal constant _NF_BIT = 1 << 255;\n\n    function isFungibleToken(uint256 id) internal pure returns (bool) {\n        return id & _NF_BIT == 0;\n    }\n\n    function isNonFungibleToken(uint256 id, uint256 collectionMaskLength) internal pure returns (bool) {\n        return id & _NF_BIT != 0 && id & _getNonFungibleTokenMask(collectionMaskLength) != 0;\n    }\n\n    function getNonFungibleCollection(uint256 nftId, uint256 collectionMaskLength) internal pure returns (uint256) {\n        return nftId & ~_getNonFungibleTokenMask(collectionMaskLength);\n    }\n\n    function _getNonFungibleTokenMask(uint256 collectionMaskLength) private pure returns (uint256) {\n        return (1 << (256 - collectionMaskLength)) - 1;\n    }\n}\n"
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryBurnable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Inventory with support for ERC721, optional extension: Burnable.\n * @dev The ERC721 Burnable function `burnFrom(address,uint256)` is not provided\n *  the ERC1155 Burnable function `burnFrom(address,uint256,uint256)` can be used instead.\n * @dev Note: The ERC-165 identifier for this interface is 0x6059f1b4.\n */\ninterface IERC1155721InventoryBurnable {\n    /**\n     * Burns some token (ERC1155-compatible).\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `id` does not represent a token.\n     * @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n     * @dev Reverts if `id` represents a Fungible Token and `value` is higher than `from`'s balance.\n     * @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n     * @dev Reverts if `id` represents a Non-Fungible Token which is not owned by `from`.\n     * @dev Emits an {IERC721-Transfer} event to the zero address if `id` represents a Non-Fungible Token.\n     * @dev Emits an {IERC1155-TransferSingle} event to the zero address.\n     * @param from Address of the current token owner.\n     * @param id Identifier of the token to burn.\n     * @param value Amount of token to burn.\n     */\n    function burnFrom(\n        address from,\n        uint256 id,\n        uint256 value\n    ) external;\n\n    /**\n     * Burns multiple tokens (ERC1155-compatible).\n     * @dev Reverts if `ids` and `values` have different lengths.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if one of `ids` does not represent a token.\n     * @dev Reverts if one of `ids` represents a Fungible Token and `value` is 0.\n     * @dev Reverts if one of `ids` represents a Fungible Token and `value` is higher than `from`'s balance.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token and `value` is not 1.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token which is not owned by `from`.\n     * @dev Emits an {IERC721-Transfer} event to the zero address for each burnt Non-Fungible Token.\n     * @dev Emits an {IERC1155-TransferBatch} event to the zero address.\n     * @param from Address of the current tokens owner.\n     * @param ids Identifiers of the tokens to burn.\n     * @param values Amounts of tokens to burn.\n     */\n    function batchBurnFrom(\n        address from,\n        uint256[] calldata ids,\n        uint256[] calldata values\n    ) external;\n\n    /**\n     * Burns a batch of Non-Fungible Tokens (ERC721-compatible).\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if one of `nftIds` does not represent a Non-Fungible Token.\n     * @dev Reverts if one of `nftIds` is not owned by `from`.\n     * @dev Emits an {IERC721-Transfer} event to the zero address for each of `nftIds`.\n     * @dev Emits an {IERC1155-TransferBatch} event to the zero address.\n     * @param from Current token owner.\n     * @param nftIds Identifiers of the tokens to transfer.\n     */\n    function batchBurnFrom(address from, uint256[] calldata nftIds) external;\n}\n"
      },
      "contracts/token/ERC1155721/ERC1155721Inventory.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {AddressIsContract} from \"@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol\";\nimport {ERC1155InventoryIdentifiersLib} from \"./../ERC1155/ERC1155InventoryIdentifiersLib.sol\";\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC721} from \"./../ERC721/interfaces/IERC721.sol\";\nimport {IERC721Metadata} from \"./../ERC721/interfaces/IERC721Metadata.sol\";\nimport {IERC721BatchTransfer} from \"./../ERC721/interfaces/IERC721BatchTransfer.sol\";\nimport {IERC721Receiver} from \"./../ERC721/interfaces/IERC721Receiver.sol\";\nimport {IERC1155MetadataURI} from \"./../ERC1155/interfaces/IERC1155MetadataURI.sol\";\nimport {IERC1155TokenReceiver} from \"./../ERC1155/interfaces/IERC1155TokenReceiver.sol\";\nimport {IERC1155Inventory} from \"./../ERC1155/interfaces/IERC1155Inventory.sol\";\nimport {IERC1155721Inventory} from \"./interfaces/IERC1155721Inventory.sol\";\nimport {ERC1155InventoryBase} from \"./../ERC1155/ERC1155InventoryBase.sol\";\n\n/**\n * @title ERC1155721Inventory, an ERC1155Inventory with additional support for ERC721.\n * @dev The function `uri(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`.\n */\nabstract contract ERC1155721Inventory is IERC1155721Inventory, IERC721Metadata, ERC1155InventoryBase {\n    using ERC1155InventoryIdentifiersLib for uint256;\n    using AddressIsContract for address;\n\n    uint256 internal constant _APPROVAL_BIT_TOKEN_OWNER_ = 1 << 160;\n\n    string internal _name;\n    string internal _symbol;\n\n    /* owner => NFT balance */\n    mapping(address => uint256) internal _nftBalances;\n\n    /* NFT ID => operator */\n    mapping(uint256 => address) internal _nftApprovals;\n\n    constructor(\n        string memory name_,\n        string memory symbol_,\n        uint256 collectionMaskLength\n    ) ERC1155InventoryBase(collectionMaskLength) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return\n            interfaceId == type(IERC721).interfaceId ||\n            interfaceId == type(IERC721Metadata).interfaceId ||\n            interfaceId == type(IERC721BatchTransfer).interfaceId ||\n            super.supportsInterface(interfaceId);\n    }\n\n    //=================================================== ERC721Metadata ====================================================//\n\n    /// @inheritdoc IERC721Metadata\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /// @inheritdoc IERC721Metadata\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /// @inheritdoc IERC721Metadata\n    function tokenURI(uint256 nftId) external view virtual override returns (string memory) {\n        require(address(uint160(_owners[nftId])) != address(0), \"Inventory: non-existing NFT\");\n        return uri(nftId);\n    }\n\n    //================================================= ERC1155MetadataURI ==================================================//\n\n    /// @inheritdoc IERC1155MetadataURI\n    function uri(uint256) public view virtual override returns (string memory);\n\n    //======================================================= ERC721 ========================================================//\n\n    /// @inheritdoc IERC721\n    function balanceOf(address tokenOwner) external view virtual override returns (uint256) {\n        require(tokenOwner != address(0), \"Inventory: zero address\");\n        return _nftBalances[tokenOwner];\n    }\n\n    /// @inheritdoc IERC721\n    function approve(address to, uint256 tokenId) public virtual override {\n        uint256 owner = _owners[tokenId];\n        require(owner != 0, \"Inventory: non-existing NFT\");\n        address ownerAddress = address(uint160(owner));\n        require(to != ownerAddress, \"Inventory: self-approval\");\n        require(_isOperatable(ownerAddress, _msgSender()), \"Inventory: non-approved sender\");\n        if (to == address(0)) {\n            if (owner & _APPROVAL_BIT_TOKEN_OWNER_ != 0) {\n                // remove the approval bit if it is present\n                _owners[tokenId] = uint256(ownerAddress);\n            }\n        } else {\n            uint256 ownerWithApprovalBit = owner | _APPROVAL_BIT_TOKEN_OWNER_;\n            if (owner != ownerWithApprovalBit) {\n                // add the approval bit if it is not present\n                _owners[tokenId] = ownerWithApprovalBit;\n            }\n            _nftApprovals[tokenId] = to;\n        }\n        emit Approval(ownerAddress, to, tokenId);\n    }\n\n    /// @inheritdoc IERC721\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\n        uint256 owner = _owners[tokenId];\n        require(address(uint160(owner)) != address(0), \"Inventory: non-existing NFT\");\n        if (owner & _APPROVAL_BIT_TOKEN_OWNER_ != 0) {\n            return _nftApprovals[tokenId];\n        } else {\n            return address(0);\n        }\n    }\n\n    /// @inheritdoc IERC1155721Inventory\n    function transferFrom(\n        address from,\n        address to,\n        uint256 nftId\n    ) public virtual override {\n        _transferFrom(\n            from,\n            to,\n            nftId,\n            \"\",\n            /* safe */\n            false\n        );\n    }\n\n    /// @inheritdoc IERC1155721Inventory\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 nftId\n    ) public virtual override {\n        _transferFrom(\n            from,\n            to,\n            nftId,\n            \"\",\n            /* safe */\n            true\n        );\n    }\n\n    /// @inheritdoc IERC1155721Inventory\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 nftId,\n        bytes memory data\n    ) public virtual override {\n        _transferFrom(\n            from,\n            to,\n            nftId,\n            data,\n            /* safe */\n            true\n        );\n    }\n\n    /// @inheritdoc IERC1155721Inventory\n    function batchTransferFrom(\n        address from,\n        address to,\n        uint256[] memory nftIds\n    ) public virtual override {\n        require(to != address(0), \"Inventory: transfer to zero\");\n        address sender = _msgSender();\n        bool operatable = _isOperatable(from, sender);\n\n        uint256 length = nftIds.length;\n        uint256[] memory values = new uint256[](length);\n\n        uint256 nfCollectionId;\n        uint256 nfCollectionCount;\n        for (uint256 i; i != length; ++i) {\n            uint256 nftId = nftIds[i];\n            values[i] = 1;\n            _transferNFT(from, to, nftId, 1, operatable, true);\n            emit Transfer(from, to, nftId);\n            uint256 nextCollectionId = nftId.getNonFungibleCollection(_collectionMaskLength);\n            if (nfCollectionId == 0) {\n                nfCollectionId = nextCollectionId;\n                nfCollectionCount = 1;\n            } else {\n                if (nextCollectionId != nfCollectionId) {\n                    _transferNFTUpdateCollection(from, to, nfCollectionId, nfCollectionCount);\n                    nfCollectionId = nextCollectionId;\n                    nfCollectionCount = 1;\n                } else {\n                    ++nfCollectionCount;\n                }\n            }\n        }\n\n        if (nfCollectionId != 0) {\n            _transferNFTUpdateCollection(from, to, nfCollectionId, nfCollectionCount);\n            _transferNFTUpdateBalances(from, to, length);\n        }\n\n        emit TransferBatch(_msgSender(), from, to, nftIds, values);\n        if (to.isContract() && _isERC1155TokenReceiver(to)) {\n            _callOnERC1155BatchReceived(from, to, nftIds, values, \"\");\n        }\n    }\n\n    //======================================================= ERC1155 =======================================================//\n\n    /// @inheritdoc IERC1155721Inventory\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes memory data\n    ) public virtual override(IERC1155Inventory, IERC1155721Inventory) {\n        address sender = _msgSender();\n        require(to != address(0), \"Inventory: transfer to zero\");\n        bool operatable = _isOperatable(from, sender);\n\n        if (id.isFungibleToken()) {\n            _transferFungible(from, to, id, value, operatable);\n        } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n            _transferNFT(from, to, id, value, operatable, false);\n            emit Transfer(from, to, id);\n        } else {\n            revert(\"Inventory: not a token id\");\n        }\n\n        emit TransferSingle(sender, from, to, id, value);\n        if (to.isContract()) {\n            _callOnERC1155Received(from, to, id, value, data);\n        }\n    }\n\n    /// @inheritdoc IERC1155721Inventory\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory values,\n        bytes memory data\n    ) public virtual override(IERC1155Inventory, IERC1155721Inventory) {\n        _safeBatchTransferFrom(from, to, ids, values, data);\n    }\n\n    //================================================== ERC721 && ERC1155 ==================================================//\n\n    /// @inheritdoc IERC1155721Inventory\n    function setApprovalForAll(address operator, bool approved) public virtual override(IERC1155721Inventory, ERC1155InventoryBase) {\n        super.setApprovalForAll(operator, approved);\n    }\n\n    /// @inheritdoc IERC1155721Inventory\n    function isApprovedForAll(address tokenOwner, address operator)\n        public\n        view\n        virtual\n        override(IERC1155721Inventory, ERC1155InventoryBase)\n        returns (bool)\n    {\n        return super.isApprovedForAll(tokenOwner, operator);\n    }\n\n    //============================================== ERC721 && ERC1155Inventory ===============================================//\n\n    /// @inheritdoc IERC1155721Inventory\n    function ownerOf(uint256 nftId) public view virtual override(IERC1155721Inventory, ERC1155InventoryBase) returns (address) {\n        return super.ownerOf(nftId);\n    }\n\n    //============================================ High-level Internal Functions ============================================//\n\n    /**\n     * Safely or unsafely transfers some token (ERC721-compatible).\n     * @dev For `safe` transfer, see {IERC1155721Inventory-transferFrom(address,address,uint256)}.\n     * @dev For un`safe` transfer, see {IERC1155721Inventory-safeTransferFrom(address,address,uint256,bytes)}.\n     */\n    function _transferFrom(\n        address from,\n        address to,\n        uint256 nftId,\n        bytes memory data,\n        bool safe\n    ) internal {\n        require(to != address(0), \"Inventory: transfer to zero\");\n        address sender = _msgSender();\n        bool operatable = _isOperatable(from, sender);\n\n        _transferNFT(from, to, nftId, 1, operatable, false);\n\n        emit Transfer(from, to, nftId);\n        emit TransferSingle(sender, from, to, nftId, 1);\n        if (to.isContract()) {\n            if (_isERC1155TokenReceiver(to)) {\n                _callOnERC1155Received(from, to, nftId, 1, data);\n            } else if (safe) {\n                _callOnERC721Received(from, to, nftId, data);\n            }\n        }\n    }\n\n    /**\n     * Safely transfers a batch of tokens (ERC1155-compatible).\n     * @dev See {IERC1155721Inventory-safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)}.\n     */\n    function _safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory values,\n        bytes memory data\n    ) internal {\n        require(to != address(0), \"Inventory: transfer to zero\");\n        uint256 length = ids.length;\n        require(length == values.length, \"Inventory: inconsistent arrays\");\n        address sender = _msgSender();\n        bool operatable = _isOperatable(from, sender);\n\n        uint256 nfCollectionId;\n        uint256 nfCollectionCount;\n        uint256 nftsCount;\n        for (uint256 i; i != length; ++i) {\n            uint256 id = ids[i];\n            if (id.isFungibleToken()) {\n                _transferFungible(from, to, id, values[i], operatable);\n            } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n                _transferNFT(from, to, id, values[i], operatable, true);\n                emit Transfer(from, to, id);\n                uint256 nextCollectionId = id.getNonFungibleCollection(_collectionMaskLength);\n                if (nfCollectionId == 0) {\n                    nfCollectionId = nextCollectionId;\n                    nfCollectionCount = 1;\n                } else {\n                    if (nextCollectionId != nfCollectionId) {\n                        _transferNFTUpdateCollection(from, to, nfCollectionId, nfCollectionCount);\n                        nfCollectionId = nextCollectionId;\n                        nftsCount += nfCollectionCount;\n                        nfCollectionCount = 1;\n                    } else {\n                        ++nfCollectionCount;\n                    }\n                }\n            } else {\n                revert(\"Inventory: not a token id\");\n            }\n        }\n\n        if (nfCollectionId != 0) {\n            _transferNFTUpdateCollection(from, to, nfCollectionId, nfCollectionCount);\n            nftsCount += nfCollectionCount;\n            _transferNFTUpdateBalances(from, to, nftsCount);\n        }\n\n        emit TransferBatch(_msgSender(), from, to, ids, values);\n        if (to.isContract()) {\n            _callOnERC1155BatchReceived(from, to, ids, values, data);\n        }\n    }\n\n    /**\n     * Safely or unsafely mints some token (ERC721-compatible).\n     * @dev For `safe` mint, see {IERC1155721InventoryMintable-mint(address,uint256)}.\n     * @dev For un`safe` mint, see {IERC1155721InventoryMintable-safeMint(address,uint256,bytes)}.\n     */\n    function _mint(\n        address to,\n        uint256 nftId,\n        bytes memory data,\n        bool safe\n    ) internal {\n        require(to != address(0), \"Inventory: mint to zero\");\n        require(nftId.isNonFungibleToken(_collectionMaskLength), \"Inventory: not an NFT\");\n\n        _mintNFT(to, nftId, 1, false);\n\n        emit Transfer(address(0), to, nftId);\n        emit TransferSingle(_msgSender(), address(0), to, nftId, 1);\n        if (to.isContract()) {\n            if (_isERC1155TokenReceiver(to)) {\n                _callOnERC1155Received(address(0), to, nftId, 1, data);\n            } else if (safe) {\n                _callOnERC721Received(address(0), to, nftId, data);\n            }\n        }\n    }\n\n    /**\n     * Unsafely mints a batch of Non-Fungible Tokens (ERC721-compatible).\n     * @dev See {IERC1155721InventoryMintable-batchMint(address,uint256[])}.\n     */\n    function _batchMint(address to, uint256[] memory nftIds) internal {\n        require(to != address(0), \"Inventory: mint to zero\");\n\n        uint256 length = nftIds.length;\n        uint256[] memory values = new uint256[](length);\n\n        uint256 nfCollectionId;\n        uint256 nfCollectionCount;\n        for (uint256 i; i != length; ++i) {\n            uint256 nftId = nftIds[i];\n            require(nftId.isNonFungibleToken(_collectionMaskLength), \"Inventory: not an NFT\");\n            values[i] = 1;\n            _mintNFT(to, nftId, 1, true);\n            emit Transfer(address(0), to, nftId);\n            uint256 nextCollectionId = nftId.getNonFungibleCollection(_collectionMaskLength);\n            if (nfCollectionId == 0) {\n                nfCollectionId = nextCollectionId;\n                nfCollectionCount = 1;\n            } else {\n                if (nextCollectionId != nfCollectionId) {\n                    _balances[nfCollectionId][to] += nfCollectionCount;\n                    _supplies[nfCollectionId] += nfCollectionCount;\n                    nfCollectionId = nextCollectionId;\n                    nfCollectionCount = 1;\n                } else {\n                    ++nfCollectionCount;\n                }\n            }\n        }\n\n        _balances[nfCollectionId][to] += nfCollectionCount;\n        _supplies[nfCollectionId] += nfCollectionCount;\n        _nftBalances[to] += length;\n\n        emit TransferBatch(_msgSender(), address(0), to, nftIds, values);\n        if (to.isContract() && _isERC1155TokenReceiver(to)) {\n            _callOnERC1155BatchReceived(address(0), to, nftIds, values, \"\");\n        }\n    }\n\n    /**\n     * Safely mints some token (ERC1155-compatible).\n     * @dev See {IERC1155721InventoryMintable-safeMint(address,uint256,uint256,bytes)}.\n     */\n    function _safeMint(\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes memory data\n    ) internal virtual {\n        require(to != address(0), \"Inventory: mint to zero\");\n        address sender = _msgSender();\n        if (id.isFungibleToken()) {\n            _mintFungible(to, id, value);\n        } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n            _mintNFT(to, id, value, false);\n            emit Transfer(address(0), to, id);\n        } else {\n            revert(\"Inventory: not a token id\");\n        }\n\n        emit TransferSingle(sender, address(0), to, id, value);\n        if (to.isContract()) {\n            _callOnERC1155Received(address(0), to, id, value, data);\n        }\n    }\n\n    /**\n     * Safely mints a batch of tokens (ERC1155-compatible).\n     * @dev See {IERC1155721InventoryMintable-safeBatchMint(address,uint256[],uint256[],bytes)}.\n     */\n    function _safeBatchMint(\n        address to,\n        uint256[] memory ids,\n        uint256[] memory values,\n        bytes memory data\n    ) internal virtual {\n        require(to != address(0), \"Inventory: mint to zero\");\n        uint256 length = ids.length;\n        require(length == values.length, \"Inventory: inconsistent arrays\");\n\n        uint256 nfCollectionId;\n        uint256 nfCollectionCount;\n        uint256 nftsCount;\n        for (uint256 i; i != length; ++i) {\n            uint256 id = ids[i];\n            uint256 value = values[i];\n            if (id.isFungibleToken()) {\n                _mintFungible(to, id, value);\n            } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n                _mintNFT(to, id, value, true);\n                emit Transfer(address(0), to, id);\n                uint256 nextCollectionId = id.getNonFungibleCollection(_collectionMaskLength);\n                if (nfCollectionId == 0) {\n                    nfCollectionId = nextCollectionId;\n                    nfCollectionCount = 1;\n                } else {\n                    if (nextCollectionId != nfCollectionId) {\n                        _balances[nfCollectionId][to] += nfCollectionCount;\n                        _supplies[nfCollectionId] += nfCollectionCount;\n                        nfCollectionId = nextCollectionId;\n                        nftsCount += nfCollectionCount;\n                        nfCollectionCount = 1;\n                    } else {\n                        ++nfCollectionCount;\n                    }\n                }\n            } else {\n                revert(\"Inventory: not a token id\");\n            }\n        }\n\n        if (nfCollectionId != 0) {\n            _balances[nfCollectionId][to] += nfCollectionCount;\n            _supplies[nfCollectionId] += nfCollectionCount;\n            nftsCount += nfCollectionCount;\n            _nftBalances[to] += nftsCount;\n        }\n\n        emit TransferBatch(_msgSender(), address(0), to, ids, values);\n        if (to.isContract()) {\n            _callOnERC1155BatchReceived(address(0), to, ids, values, data);\n        }\n    }\n\n    /**\n     * Safely mints some tokens to a list of recipients.\n     * @dev See {IERC1155721Deliverable-safeDeliver(address[],uint256[],uint256[],bytes)}.\n     */\n    function _safeDeliver(\n        address[] calldata recipients,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) internal {\n        uint256 length = recipients.length;\n        require(length == ids.length && length == values.length, \"Inventory: inconsistent arrays\");\n\n        address sender = _msgSender();\n        for (uint256 i; i != length; ++i) {\n            address to = recipients[i];\n            require(to != address(0), \"Inventory: mint to zero\");\n            uint256 id = ids[i];\n            uint256 value = values[i];\n            if (id.isFungibleToken()) {\n                _mintFungible(to, id, value);\n                emit TransferSingle(sender, address(0), to, id, value);\n                if (to.isContract()) {\n                    _callOnERC1155Received(address(0), to, id, value, data);\n                }\n            } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n                _mintNFT(to, id, value, false);\n                emit Transfer(address(0), to, id);\n                emit TransferSingle(sender, address(0), to, id, 1);\n                if (to.isContract()) {\n                    if (_isERC1155TokenReceiver(to)) {\n                        _callOnERC1155Received(address(0), to, id, 1, data);\n                    } else {\n                        _callOnERC721Received(address(0), to, id, data);\n                    }\n                }\n            } else {\n                revert(\"Inventory: not a token id\");\n            }\n        }\n    }\n\n    //============================================== Helper Internal Functions ==============================================//\n\n    function _mintFungible(\n        address to,\n        uint256 id,\n        uint256 value\n    ) internal {\n        require(value != 0, \"Inventory: zero value\");\n        uint256 supply = _supplies[id];\n        uint256 newSupply = supply + value;\n        require(newSupply > supply, \"Inventory: supply overflow\");\n        _supplies[id] = newSupply;\n        // cannot overflow as supply cannot overflow\n        _balances[id][to] += value;\n    }\n\n    function _mintNFT(\n        address to,\n        uint256 id,\n        uint256 value,\n        bool isBatch\n    ) internal {\n        require(value == 1, \"Inventory: wrong NFT value\");\n        require(_owners[id] == 0, \"Inventory: existing/burnt NFT\");\n\n        _owners[id] = uint256(uint160(to));\n\n        if (!isBatch) {\n            uint256 collectionId = id.getNonFungibleCollection(_collectionMaskLength);\n            // it is virtually impossible that a Non-Fungible Collection supply\n            // overflows due to the cost of minting individual tokens\n            ++_supplies[collectionId];\n            ++_balances[collectionId][to];\n            ++_nftBalances[to];\n        }\n    }\n\n    function _transferFungible(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bool operatable\n    ) internal {\n        require(operatable, \"Inventory: non-approved sender\");\n        require(value != 0, \"Inventory: zero value\");\n        uint256 balance = _balances[id][from];\n        require(balance >= value, \"Inventory: not enough balance\");\n        if (from != to) {\n            _balances[id][from] = balance - value;\n            // cannot overflow as supply cannot overflow\n            _balances[id][to] += value;\n        }\n    }\n\n    function _transferNFT(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bool operatable,\n        bool isBatch\n    ) internal virtual {\n        require(value == 1, \"Inventory: wrong NFT value\");\n        uint256 owner = _owners[id];\n        require(from == address(uint160(owner)), \"Inventory: non-owned NFT\");\n        if (!operatable) {\n            require((owner & _APPROVAL_BIT_TOKEN_OWNER_ != 0) && _msgSender() == _nftApprovals[id], \"Inventory: non-approved sender\");\n        }\n        _owners[id] = uint256(uint160(to));\n        if (!isBatch) {\n            _transferNFTUpdateBalances(from, to, 1);\n            _transferNFTUpdateCollection(from, to, id.getNonFungibleCollection(_collectionMaskLength), 1);\n        }\n    }\n\n    function _transferNFTUpdateBalances(\n        address from,\n        address to,\n        uint256 amount\n    ) internal virtual {\n        if (from != to) {\n            // cannot underflow as balance is verified through ownership\n            _nftBalances[from] -= amount;\n            //  cannot overflow as supply cannot overflow\n            _nftBalances[to] += amount;\n        }\n    }\n\n    function _transferNFTUpdateCollection(\n        address from,\n        address to,\n        uint256 collectionId,\n        uint256 amount\n    ) internal virtual {\n        if (from != to) {\n            // cannot underflow as balance is verified through ownership\n            _balances[collectionId][from] -= amount;\n            // cannot overflow as supply cannot overflow\n            _balances[collectionId][to] += amount;\n        }\n    }\n\n    /**\n     * Queries whether a contract implements ERC1155TokenReceiver.\n     * @param _contract address of the contract.\n     * @return wheter the given contract implements ERC1155TokenReceiver.\n     */\n    function _isERC1155TokenReceiver(address _contract) internal view returns (bool) {\n        bool success;\n        bool result;\n        bytes memory staticCallData = abi.encodeWithSelector(type(IERC165).interfaceId, type(IERC1155TokenReceiver).interfaceId);\n        assembly {\n            let call_ptr := add(0x20, staticCallData)\n            let call_size := mload(staticCallData)\n            let output := mload(0x40) // Find empty storage location using \"free memory pointer\"\n            mstore(output, 0x0)\n            success := staticcall(10000, _contract, call_ptr, call_size, output, 0x20) // 32 bytes\n            result := mload(output)\n        }\n        // (10000 / 63) \"not enough for supportsInterface(...)\" // consume all gas, so caller can potentially know that there was not enough gas\n        assert(gasleft() > 158);\n        return success && result;\n    }\n\n    /**\n     * Calls {IERC721Receiver-onERC721Received} on a target contract.\n     * @dev Reverts if `to` is not a contract.\n     * @dev Reverts if the call to the target fails or is refused.\n     * @param from Previous token owner.\n     * @param to New token owner.\n     * @param nftId Identifier of the token transferred.\n     * @param data Optional data to send along with the receiver contract call.\n     */\n    function _callOnERC721Received(\n        address from,\n        address to,\n        uint256 nftId,\n        bytes memory data\n    ) internal {\n        require(\n            IERC721Receiver(to).onERC721Received(_msgSender(), from, nftId, data) == type(IERC721Receiver).interfaceId,\n            \"Inventory: transfer refused\"\n        );\n    }\n}\n"
      },
      "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Multi Token Standard, optional extension: Metadata URI.\n * @dev See https://eips.ethereum.org/EIPS/eip-1155\n * @dev Note: The ERC-165 identifier for this interface is 0x0e89341c.\n */\ninterface IERC1155MetadataURI {\n    /**\n     * @notice A distinct Uniform Resource Identifier (URI) for a given token.\n     * @dev URIs are defined in RFC 3986.\n     * @dev The URI MUST point to a JSON file that conforms to the \"ERC1155 Metadata URI JSON Schema\".\n     * @dev The uri function SHOULD be used to retrieve values if no event was emitted.\n     * @dev The uri function MUST return the same value as the latest event for an _id if it was emitted.\n     * @dev The uri function MUST NOT be used to check for the existence of a token as it is possible for\n     *  an implementation to return a valid string even if the token does not exist.\n     * @return URI string\n     */\n    function uri(uint256 id) external view returns (string memory);\n}\n"
      },
      "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Multi Token Standard, Tokens Receiver.\n * Interface for any contract that wants to support transfers from ERC1155 asset contracts.\n * @dev See https://eips.ethereum.org/EIPS/eip-1155\n * @dev Note: The ERC-165 identifier for this interface is 0x4e2312e0.\n */\ninterface IERC1155TokenReceiver {\n    /**\n     * @notice Handle the receipt of a single ERC1155 token type.\n     * An ERC1155 contract MUST call this function on a recipient contract, at the end of a `safeTransferFrom` after the balance update.\n     * This function MUST return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n     *  (i.e. 0xf23a6e61) to accept the transfer.\n     * Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.\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   `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\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     * @notice Handle the receipt of multiple ERC1155 token types.\n     * An ERC1155 contract MUST call this function on a recipient contract, at the end of a `safeBatchTransferFrom` after the balance updates.\n     * This function MUST return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n     *  (i.e. 0xbc197c81) if to accept the transfer(s).\n     * Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.\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)\"))`\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"
      },
      "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IERC1155} from \"./IERC1155.sol\";\nimport {IERC1155InventoryFunctions} from \"./IERC1155InventoryFunctions.sol\";\n\n/**\n * @title ERC1155 Multi Token Standard, optional extension: Inventory.\n * Interface for Fungible/Non-Fungible Tokens management on an ERC1155 contract.\n *\n * This interface rationalizes the co-existence of Fungible and Non-Fungible Tokens\n * within the same contract. As several kinds of Fungible Tokens can be managed under\n * the Multi-Token standard, we consider that Non-Fungible Tokens can be classified\n * under their own specific type. We introduce the concept of Non-Fungible Collection\n * and consider the usage of 3 types of identifiers:\n * (a) Fungible Token identifiers, each representing a set of Fungible Tokens,\n * (b) Non-Fungible Collection identifiers, each representing a set of Non-Fungible Tokens (this is not a token),\n * (c) Non-Fungible Token identifiers.\n *\n * Identifiers nature\n * |       Type                | isFungible  | isCollection | isToken |\n * |  Fungible Token           |   true      |     true     |  true   |\n * |  Non-Fungible Collection  |   false     |     true     |  false  |\n * |  Non-Fungible Token       |   false     |     false    |  true   |\n *\n * Identifiers compatibilities\n * |       Type                |  transfer  |   balance    |   supply    |  owner  |\n * |  Fungible Token           |    OK      |     OK       |     OK      |   NOK   |\n * |  Non-Fungible Collection  |    NOK     |     OK       |     OK      |   NOK   |\n * |  Non-Fungible Token       |    OK      |   0 or 1     |   0 or 1    |   OK    |\n *\n * @dev See https://eips.ethereum.org/EIPS/eip-xxxx\n * @dev Note: The ERC-165 identifier for this interface is 0x09ce5c46.\n */\ninterface IERC1155Inventory is IERC1155, IERC1155InventoryFunctions {\n    //================================================== ERC1155Inventory ===================================================//\n    /**\n     * Optional event emitted when a collection (Fungible Token or Non-Fungible Collection) is created.\n     *  This event can be used by a client application to determine which identifiers are meaningful\n     *  to track through the functions `balanceOf`, `balanceOfBatch` and `totalSupply`.\n     * @dev This event MUST NOT be emitted twice for the same `collectionId`.\n     */\n    event CollectionCreated(uint256 indexed collectionId, bool indexed fungible);\n\n    /**\n     * Retrieves the owner of a Non-Fungible Token (ERC721-compatible).\n     * @dev Reverts if `nftId` is owned by the zero address.\n     * @param nftId Identifier of the token to query.\n     * @return Address of the current owner of the token.\n     */\n    function ownerOf(uint256 nftId) external view override returns (address);\n\n    /**\n     * Introspects whether or not `id` represents a Fungible Token.\n     *  This function MUST return true even for a Fungible Token which is not-yet created.\n     * @param id The identifier to query.\n     * @return bool True if `id` represents aFungible Token, false otherwise.\n     */\n    function isFungible(uint256 id) external view override returns (bool);\n\n    /**\n     * Introspects the Non-Fungible Collection to which `nftId` belongs.\n     * @dev This function MUST return a value representing a Non-Fungible Collection.\n     * @dev This function MUST return a value for a non-existing token, and SHOULD NOT be used to check the existence of a Non-Fungible Token.\n     * @dev Reverts if `nftId` does not represent a Non-Fungible Token.\n     * @param nftId The token identifier to query the collection of.\n     * @return The Non-Fungible Collection identifier to which `nftId` belongs.\n     */\n    function collectionOf(uint256 nftId) external view override returns (uint256);\n\n    //======================================================= ERC1155 =======================================================//\n\n    /**\n     * Retrieves the balance of `id` owned by account `owner`.\n     * @param owner The account to retrieve the balance of.\n     * @param id The identifier to retrieve the balance of.\n     * @return\n     *  If `id` represents a collection (Fungible Token or Non-Fungible Collection), the balance for this collection.\n     *  If `id` represents a Non-Fungible Token, 1 if the token is owned by `owner`, else 0.\n     */\n    function balanceOf(address owner, uint256 id) external view override returns (uint256);\n\n    /**\n     * Retrieves the balances of `ids` owned by accounts `owners`.\n     * @dev Reverts if `owners` and `ids` have different lengths.\n     * @param owners The accounts to retrieve the balances of.\n     * @param ids The identifiers to retrieve the balances of.\n     * @return An array of elements such as for each pair `id`/`owner`:\n     *  If `id` represents a collection (Fungible Token or Non-Fungible Collection), the balance for this collection.\n     *  If `id` represents a Non-Fungible Token, 1 if the token is owned by `owner`, else 0.\n     */\n    function balanceOfBatch(address[] calldata owners, uint256[] calldata ids) external view override returns (uint256[] memory);\n\n    /**\n     * Safely transfers some token.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `id` does not represent a token.\n     * @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n     * @dev Reverts if `id` represents a Non-Fungible Token and is not owned by `from`.\n     * @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n     * @dev Reverts if `id` represents a Fungible Token and `from` has an insufficient balance.\n     * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155received} fails or is refused.\n     * @dev Emits an {IERC1155-TransferSingle} event.\n     * @param from Current token owner.\n     * @param to Address of the new token owner.\n     * @param id Identifier of the token to transfer.\n     * @param value Amount of token to transfer.\n     * @param data Optional data to pass to the receiver contract.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    ) external override;\n\n    /**\n     * @notice this documentation overrides its {IERC1155-safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)}.\n     * Safely transfers a batch of tokens.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if one of `ids` does not represent a token.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token and `value` is not 1.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token and is not owned by `from`.\n     * @dev Reverts if one of `ids` represents a Fungible Token and `value` is 0.\n     * @dev Reverts if one of `ids` represents a Fungible Token and `from` has an insufficient balance.\n     * @dev Reverts if one of `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n     * @dev Emits an {IERC1155-TransferBatch} event.\n     * @param from Current tokens owner.\n     * @param to Address of the new tokens owner.\n     * @param ids Identifiers of the tokens to transfer.\n     * @param values Amounts of tokens to transfer.\n     * @param data Optional data to pass to the receiver contract.\n     */\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external override;\n}\n"
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721Inventory.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IERC1155} from \"./../../ERC1155/interfaces/IERC1155.sol\";\nimport {IERC1155Inventory} from \"./../../ERC1155/interfaces/IERC1155Inventory.sol\";\nimport {IERC721} from \"./../../ERC721/interfaces/IERC721.sol\";\nimport {IERC721BatchTransfer} from \"./../../ERC721/interfaces/IERC721BatchTransfer.sol\";\n\n/**\n * @title ERC1155 Inventory with support for ERC721 and EC721BatchTransfer.\n */\ninterface IERC1155721Inventory is IERC1155Inventory, IERC721, IERC721BatchTransfer {\n    //======================================================= ERC721 ========================================================//\n\n    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);\n\n    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);\n\n    /**\n     * Unsafely transfers a Non-Fungible Token.\n     * @dev Usage of this method is discouraged, use `safeTransferFrom` whenever possible\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `nftId` is not owned by `from`.\n     * @dev Reverts if `to` is an IERC1155TokenReceiver contract which refuses the receiver call.\n     * @dev Resets the ERC721 single token approval.\n     * @dev Emits an {IERC721-Transfer} event.\n     * @dev Emits an {IERC1155-TransferSingle} event.\n     * @param from Current token owner.\n     * @param to Address of the new token owner.\n     * @param nftId Identifier of the token to transfer.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 nftId\n    ) external override;\n\n    /**\n     * Safely transfers a Non-Fungible Token.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `nftId` is not owned by `from`.\n     * @dev Reverts if `to` is a contract which does not implement IERC1155TokenReceiver or IERC721Receiver.\n     * @dev Reverts if `to` is an IERC1155TokenReceiver or IERC721Receiver contract which refuses the transfer.\n     * @dev Resets the ERC721 single token approval.\n     * @dev Emits an {IERC721-Transfer} event.\n     * @dev Emits an {IERC1155-TransferSingle} event.\n     * @param from Current token owner.\n     * @param to Address of the new token owner.\n     * @param nftId Identifier of the token to transfer.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 nftId\n    ) external override;\n\n    /**\n     * Safely transfers a Non-Fungible Token.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `nftId` is not owned by `from`.\n     * @dev Reverts if `to` is a contract which does not implement IERC1155TokenReceiver or IERC721Receiver.\n     * @dev Reverts if `to` is an IERC1155TokenReceiver or IERC721Receiver contract which refuses the transfer.\n     * @dev Resets the ERC721 single token approval.\n     * @dev Emits an {IERC721-Transfer} event.\n     * @dev Emits an {IERC1155-TransferSingle} event.\n     * @param from Current token owner.\n     * @param to Address of the new token owner.\n     * @param nftId Identifier of the token to transfer.\n     * @param data Optional data to pass to the receiver contract.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 nftId,\n        bytes calldata data\n    ) external override;\n\n    //================================================= ERC721BatchTransfer =================================================//\n\n    /**\n     * Unsafely transfers a batch of Non-Fungible Tokens.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if one of `nftIds` is not owned by `from`.\n     * @dev Reverts if `to` is an IERC1155TokenReceiver which refuses the transfer.\n     * @dev Resets the token approval for each of `nftIds`.\n     * @dev Emits an {IERC721-Transfer} event for each of `nftIds`.\n     * @dev Emits an {IERC1155-TransferBatch} event.\n     * @param from Current tokens owner.\n     * @param to Address of the new tokens owner.\n     * @param nftIds Identifiers of the tokens to transfer.\n     */\n    function batchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata nftIds\n    ) external override;\n\n    //======================================================= ERC1155 =======================================================//\n\n    /**\n     * Safely transfers some token.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `id` does not represent a token.\n     * @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n     * @dev Reverts if `id` represents a Non-Fungible Token and is not owned by `from`.\n     * @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n     * @dev Reverts if `id` represents a Fungible Token and `from` has an insufficient balance.\n     * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155received} fails or is refused.\n     * @dev Resets the ERC721 single token approval if `id` represents a Non-Fungible Token.\n     * @dev Emits an {IERC721-Transfer} event if `id` represents a Non-Fungible Token.\n     * @dev Emits an {IERC1155-TransferSingle} event.\n     * @param from Current token owner.\n     * @param to Address of the new token owner.\n     * @param id Identifier of the token to transfer.\n     * @param value Amount of token to transfer.\n     * @param data Optional data to pass to the receiver contract.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    ) external override;\n\n    /**\n     * Safely transfers a batch of tokens.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if one of `ids` does not represent a token.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token and `value` is not 1.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token and is not owned by `from`.\n     * @dev Reverts if one of `ids` represents a Fungible Token and `value` is 0.\n     * @dev Reverts if one of `ids` represents a Fungible Token and `from` has an insufficient balance.\n     * @dev Reverts if one of `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n     * @dev Resets the ERC721 single token approval for each transferred Non-Fungible Token.\n     * @dev Emits an {IERC721-Transfer} event for each transferred Non-Fungible Token.\n     * @dev Emits an {IERC1155-TransferBatch} event.\n     * @param from Current tokens owner.\n     * @param to Address of the new tokens owner.\n     * @param ids Identifiers of the tokens to transfer.\n     * @param values Amounts of tokens to transfer.\n     * @param data Optional data to pass to the receiver contract.\n     */\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external override;\n\n    //================================================== ERC721 && ERC1155 ==================================================//\n\n    /// @inheritdoc IERC1155\n    function setApprovalForAll(address operator, bool approved) external override(IERC1155, IERC721);\n\n    /// @inheritdoc IERC1155\n    function isApprovedForAll(address owner, address operator) external view override(IERC1155, IERC721) returns (bool);\n\n    //============================================= ERC721 && ERC1155Inventory ==============================================//\n\n    /// @inheritdoc IERC1155Inventory\n    function ownerOf(uint256 nftId) external view override(IERC1155Inventory, IERC721) returns (address);\n}\n"
      },
      "contracts/token/ERC1155/ERC1155InventoryBase.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {ERC1155InventoryIdentifiersLib} from \"./ERC1155InventoryIdentifiersLib.sol\";\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC1155} from \"./interfaces/IERC1155.sol\";\nimport {IERC1155InventoryFunctions} from \"./interfaces/IERC1155InventoryFunctions.sol\";\nimport {IERC1155Inventory} from \"./interfaces/IERC1155Inventory.sol\";\nimport {IERC1155MetadataURI} from \"./interfaces/IERC1155MetadataURI.sol\";\nimport {IERC1155InventoryTotalSupply} from \"./interfaces/IERC1155InventoryTotalSupply.sol\";\nimport {IERC1155TokenReceiver} from \"./interfaces/IERC1155TokenReceiver.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\n\n/**\n * @title ERC1155 Inventory Base.\n * @dev The functions `safeTransferFrom(address,address,uint256,uint256,bytes)`\n *  and `safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)` need to be implemented by a child contract.\n * @dev The function `uri(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`.\n */\nabstract contract ERC1155InventoryBase is ManagedIdentity, IERC165, IERC1155Inventory, IERC1155MetadataURI, IERC1155InventoryTotalSupply {\n    using ERC1155InventoryIdentifiersLib for uint256;\n\n    uint256 internal immutable _collectionMaskLength;\n\n    // bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))\n    bytes4 internal constant _ERC1155_RECEIVED = 0xf23a6e61;\n\n    // bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))\n    bytes4 internal constant _ERC1155_BATCH_RECEIVED = 0xbc197c81;\n\n    // Burnt Non-Fungible Token owner's magic value\n    uint256 internal constant _BURNT_NFT_OWNER = 0xdead000000000000000000000000000000000000000000000000000000000000;\n\n    /* owner => operator => approved */\n    mapping(address => mapping(address => bool)) internal _operators;\n\n    /* collection ID => owner => balance */\n    mapping(uint256 => mapping(address => uint256)) internal _balances;\n\n    /* collection ID => supply */\n    mapping(uint256 => uint256) internal _supplies;\n\n    /* NFT ID => owner */\n    mapping(uint256 => uint256) internal _owners;\n\n    /* collection ID => creator */\n    mapping(uint256 => address) internal _creators;\n\n    constructor(uint256 collectionMaskLength) {\n        require(collectionMaskLength != 0 && collectionMaskLength < 256, \"Inventory: wrong mask length\");\n        _collectionMaskLength = collectionMaskLength;\n    }\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return\n            interfaceId == type(IERC165).interfaceId ||\n            interfaceId == type(IERC1155).interfaceId ||\n            interfaceId == type(IERC1155MetadataURI).interfaceId ||\n            interfaceId == type(IERC1155InventoryFunctions).interfaceId ||\n            interfaceId == type(IERC1155InventoryTotalSupply).interfaceId;\n    }\n\n    //======================================================= ERC1155 =======================================================//\n\n    /// @inheritdoc IERC1155Inventory\n    function balanceOf(address owner, uint256 id) public view virtual override returns (uint256) {\n        require(owner != address(0), \"Inventory: zero address\");\n\n        if (id.isNonFungibleToken(_collectionMaskLength)) {\n            return address(uint160(_owners[id])) == owner ? 1 : 0;\n        }\n\n        return _balances[id][owner];\n    }\n\n    /// @inheritdoc IERC1155Inventory\n    function balanceOfBatch(address[] calldata owners, uint256[] calldata ids) external view virtual override returns (uint256[] memory) {\n        require(owners.length == ids.length, \"Inventory: inconsistent arrays\");\n\n        uint256[] memory balances = new uint256[](owners.length);\n\n        for (uint256 i = 0; i != owners.length; ++i) {\n            balances[i] = balanceOf(owners[i], ids[i]);\n        }\n\n        return balances;\n    }\n\n    /// @inheritdoc IERC1155\n    function setApprovalForAll(address operator, bool approved) public virtual override {\n        address sender = _msgSender();\n        require(operator != sender, \"Inventory: self-approval\");\n        _operators[sender][operator] = approved;\n        emit ApprovalForAll(sender, operator, approved);\n    }\n\n    /// @inheritdoc IERC1155\n    function isApprovedForAll(address tokenOwner, address operator) public view virtual override returns (bool) {\n        return _operators[tokenOwner][operator];\n    }\n\n    //================================================== ERC1155Inventory ===================================================//\n\n    /// @inheritdoc IERC1155Inventory\n    function isFungible(uint256 id) external pure virtual override returns (bool) {\n        return id.isFungibleToken();\n    }\n\n    /// @inheritdoc IERC1155Inventory\n    function collectionOf(uint256 nftId) external view virtual override returns (uint256) {\n        require(nftId.isNonFungibleToken(_collectionMaskLength), \"Inventory: not an NFT\");\n        return nftId.getNonFungibleCollection(_collectionMaskLength);\n    }\n\n    /// @inheritdoc IERC1155Inventory\n    function ownerOf(uint256 nftId) public view virtual override returns (address) {\n        address owner = address(uint160(_owners[nftId]));\n        require(owner != address(0), \"Inventory: non-existing NFT\");\n        return owner;\n    }\n\n    //============================================= ERC1155InventoryTotalSupply =============================================//\n\n    /// @inheritdoc IERC1155InventoryTotalSupply\n    function totalSupply(uint256 id) external view virtual override returns (uint256) {\n        if (id.isNonFungibleToken(_collectionMaskLength)) {\n            return address(uint160(_owners[id])) == address(0) ? 0 : 1;\n        } else {\n            return _supplies[id];\n        }\n    }\n\n    //============================================ High-level Internal Functions ============================================//\n\n    /**\n     * Creates a collection (optional).\n     * @dev Reverts if `collectionId` does not represent a collection.\n     * @dev Reverts if `collectionId` has already been created.\n     * @dev Emits a {IERC1155Inventory-CollectionCreated} event.\n     * @param collectionId Identifier of the collection.\n     */\n    function _createCollection(uint256 collectionId) internal virtual {\n        require(!collectionId.isNonFungibleToken(_collectionMaskLength), \"Inventory: not a collection\");\n        require(_creators[collectionId] == address(0), \"Inventory: existing collection\");\n        _creators[collectionId] = _msgSender();\n        emit CollectionCreated(collectionId, collectionId.isFungibleToken());\n    }\n\n    function _creator(uint256 collectionId) internal view virtual returns (address) {\n        require(!collectionId.isNonFungibleToken(_collectionMaskLength), \"Inventory: not a collection\");\n        return _creators[collectionId];\n    }\n\n    //============================================== Helper Internal Functions ==============================================//\n\n    /**\n     * Returns whether `sender` is authorised to make a transfer on behalf of `from`.\n     * @param from The address to check operatibility upon.\n     * @param sender The sender address.\n     * @return True if sender is `from` or an operator for `from`, false otherwise.\n     */\n    function _isOperatable(address from, address sender) internal view virtual returns (bool) {\n        return (from == sender) || _operators[from][sender];\n    }\n\n    /**\n     * Calls {IERC1155TokenReceiver-onERC1155Received} on a target contract.\n     * @dev Reverts if `to` is not a contract.\n     * @dev Reverts if the call to the target fails or is refused.\n     * @param from Previous token owner.\n     * @param to New token owner.\n     * @param id Identifier of the token transferred.\n     * @param value Amount of token transferred.\n     * @param data Optional data to send along with the receiver contract call.\n     */\n    function _callOnERC1155Received(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes memory data\n    ) internal {\n        require(IERC1155TokenReceiver(to).onERC1155Received(_msgSender(), from, id, value, data) == _ERC1155_RECEIVED, \"Inventory: transfer refused\");\n    }\n\n    /**\n     * Calls {IERC1155TokenReceiver-onERC1155batchReceived} on a target contract.\n     * @dev Reverts if `to` is not a contract.\n     * @dev Reverts if the call to the target fails or is refused.\n     * @param from Previous tokens owner.\n     * @param to New tokens owner.\n     * @param ids Identifiers of the tokens to transfer.\n     * @param values Amounts of tokens to transfer.\n     * @param data Optional data to send along with the receiver contract call.\n     */\n    function _callOnERC1155BatchReceived(\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory values,\n        bytes memory data\n    ) internal {\n        require(\n            IERC1155TokenReceiver(to).onERC1155BatchReceived(_msgSender(), from, ids, values, data) == _ERC1155_BATCH_RECEIVED,\n            \"Inventory: transfer refused\"\n        );\n    }\n}\n"
      },
      "contracts/token/ERC1155/interfaces/IERC1155.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Multi Token Standard, basic interface.\n * @dev See https://eips.ethereum.org/EIPS/eip-1155\n * @dev Note: The ERC-165 identifier for this interface is 0xd9b67a26.\n */\ninterface IERC1155 {\n    event TransferSingle(address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _value);\n\n    event TransferBatch(address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _values);\n\n    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);\n\n    event URI(string _value, uint256 indexed _id);\n\n    /**\n     * Safely transfers some token.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `from` has an insufficient balance.\n     * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155received} fails or is refused.\n     * @dev Emits a `TransferSingle` event.\n     * @param from Current token owner.\n     * @param to Address of the new token owner.\n     * @param id Identifier of the token to transfer.\n     * @param value Amount of token to transfer.\n     * @param data Optional data to send along to a receiver contract.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    ) external;\n\n    /**\n     * Safely transfers a batch of tokens.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if `ids` and `values` have different lengths.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `from` has an insufficient balance for any of `ids`.\n     * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n     * @dev Emits a `TransferBatch` event.\n     * @param from Current token owner.\n     * @param to Address of the new token owner.\n     * @param ids Identifiers of the tokens to transfer.\n     * @param values Amounts of tokens to transfer.\n     * @param data Optional data to send along to a receiver contract.\n     */\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external;\n\n    /**\n     * Retrieves the balance of `id` owned by account `owner`.\n     * @param owner The account to retrieve the balance of.\n     * @param id The identifier to retrieve the balance of.\n     * @return The balance of `id` owned by account `owner`.\n     */\n    function balanceOf(address owner, uint256 id) external view returns (uint256);\n\n    /**\n     * Retrieves the balances of `ids` owned by accounts `owners`. For each pair:\n     * @dev Reverts if `owners` and `ids` have different lengths.\n     * @param owners The addresses of the token holders\n     * @param ids The identifiers to retrieve the balance of.\n     * @return The balances of `ids` owned by accounts `owners`.\n     */\n    function balanceOfBatch(address[] calldata owners, uint256[] calldata ids) external view returns (uint256[] memory);\n\n    /**\n     * Enables or disables an operator's approval.\n     * @dev Emits an `ApprovalForAll` event.\n     * @param operator Address of the operator.\n     * @param approved True to approve the operator, false to revoke an approval.\n     */\n    function setApprovalForAll(address operator, bool approved) external;\n\n    /**\n     * Retrieves the approval status of an operator for a given owner.\n     * @param owner Address of the authorisation giver.\n     * @param operator Address of the operator.\n     * @return True if the operator is approved, false if not.\n     */\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n"
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryFunctions.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Multi Token Standard, optional extension: Inventory.\n * Interface for Fungible/Non-Fungible Tokens management on an ERC1155 contract.\n * @dev See https://eips.ethereum.org/EIPS/eip-xxxx\n * @dev Note: The ERC-165 identifier for this interface is 0x09ce5c46.\n */\ninterface IERC1155InventoryFunctions {\n    function ownerOf(uint256 nftId) external view returns (address);\n\n    function isFungible(uint256 id) external view returns (bool);\n\n    function collectionOf(uint256 nftId) external view returns (uint256);\n}\n"
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryTotalSupply.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Inventory, optional extension: Total Supply.\n * @dev See https://eips.ethereum.org/EIPS/eip-xxxx\n * @dev Note: The ERC-165 identifier for this interface is 0xbd85b039.\n */\ninterface IERC1155InventoryTotalSupply {\n    /**\n     * Retrieves the total supply of `id`.\n     * @param id The identifier for which to retrieve the supply of.\n     * @return\n     *  If `id` represents a collection (Fungible Token or Non-Fungible Collection), the total supply for this collection.\n     *  If `id` represents a Non-Fungible Token, 1 if the token exists, else 0.\n     */\n    function totalSupply(uint256 id) external view returns (uint256);\n}\n"
      },
      "contracts/token/ERC1155721/mocks/ERC1155721InventoryMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IForwarderRegistry} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol\";\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC1155MetadataURI} from \"./../../../token/ERC1155/interfaces/IERC1155MetadataURI.sol\";\nimport {IERC1155InventoryCreator} from \"./../../../token/ERC1155/interfaces/IERC1155InventoryCreator.sol\";\nimport {IERC1155721InventoryMintable} from \"./../interfaces/IERC1155721InventoryMintable.sol\";\nimport {IERC1155721InventoryDeliverable} from \"./../interfaces/IERC1155721InventoryDeliverable.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {Recoverable} from \"@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol\";\nimport {UsingUniversalForwarding} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol\";\nimport {MinterRole} from \"@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol\";\nimport {ERC1155721Inventory} from \"./../ERC1155721Inventory.sol\";\nimport {NFTBaseMetadataURI} from \"./../../../metadata/NFTBaseMetadataURI.sol\";\n\n/**\n * @title ERC1155 & ERC721 Inventory Mock.\n */\ncontract ERC1155721InventoryMock is\n    Recoverable,\n    UsingUniversalForwarding,\n    ERC1155721Inventory,\n    IERC1155721InventoryMintable,\n    IERC1155721InventoryDeliverable,\n    IERC1155InventoryCreator,\n    NFTBaseMetadataURI,\n    MinterRole\n{\n    constructor(\n        IForwarderRegistry forwarderRegistry,\n        address universalForwarder,\n        uint256 collectionMaskLength\n    )\n        ERC1155721Inventory(\"ERC1155721InventoryMock\", \"INV\", collectionMaskLength)\n        UsingUniversalForwarding(forwarderRegistry, universalForwarder)\n        MinterRole(msg.sender)\n    {}\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC1155InventoryCreator).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    //================================================= ERC1155MetadataURI ==================================================//\n\n    /// @inheritdoc IERC1155MetadataURI\n    function uri(uint256 id) public view virtual override returns (string memory) {\n        return _uri(id);\n    }\n\n    //=============================================== ERC1155InventoryCreator ===============================================//\n\n    /// @inheritdoc IERC1155InventoryCreator\n    function creator(uint256 collectionId) external view override returns (address) {\n        return _creator(collectionId);\n    }\n\n    //=========================================== ERC1155InventoryCreator (admin) ===========================================//\n\n    /**\n     * Creates a collection.\n     * @dev Reverts if the sender is not the contract owner.\n     * @dev Reverts if `collectionId` does not represent a collection.\n     * @dev Reverts if `collectionId` has already been created.\n     * @dev Emits a {IERC1155Inventory-CollectionCreated} event.\n     * @param collectionId Identifier of the collection.\n     */\n    function createCollection(uint256 collectionId) external {\n        _requireOwnership(_msgSender());\n        _createCollection(collectionId);\n    }\n\n    //============================================= ERC1155721InventoryMintable =============================================//\n\n    /// @inheritdoc IERC1155721InventoryMintable\n    /// @dev Reverts if the sender is not a minter.\n    function mint(address to, uint256 nftId) external virtual override {\n        _requireMinter(_msgSender());\n        _mint(to, nftId, \"\", false);\n    }\n\n    /// @inheritdoc IERC1155721InventoryMintable\n    /// @dev Reverts if the sender is not a minter.\n    function batchMint(address to, uint256[] calldata nftIds) external virtual override {\n        _requireMinter(_msgSender());\n        _batchMint(to, nftIds);\n    }\n\n    /// @inheritdoc IERC1155721InventoryMintable\n    /// @dev Reverts if the sender is not a minter.\n    function safeMint(\n        address to,\n        uint256 nftId,\n        bytes calldata data\n    ) external virtual override {\n        _requireMinter(_msgSender());\n        _mint(to, nftId, data, true);\n    }\n\n    /// @inheritdoc IERC1155721InventoryMintable\n    /// @dev Reverts if the sender is not a minter.\n    function safeMint(\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    ) external virtual override {\n        _requireMinter(_msgSender());\n        _safeMint(to, id, value, data);\n    }\n\n    /// @inheritdoc IERC1155721InventoryMintable\n    /// @dev Reverts if the sender is not a minter.\n    function safeBatchMint(\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external virtual override {\n        _requireMinter(_msgSender());\n        _safeBatchMint(to, ids, values, data);\n    }\n\n    //============================================ ERC1155721InventoryDeliverable =============================================//\n\n    /// @inheritdoc IERC1155721InventoryDeliverable\n    /// @dev Reverts if the sender is not a minter.\n    function safeDeliver(\n        address[] calldata recipients,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external virtual override {\n        _requireMinter(_msgSender());\n        _safeDeliver(recipients, ids, values, data);\n    }\n\n    //======================================== Meta Transactions Internal Functions =========================================//\n\n    function _msgSender() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (address payable) {\n        return UsingUniversalForwarding._msgSender();\n    }\n\n    function _msgData() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (bytes memory ret) {\n        return UsingUniversalForwarding._msgData();\n    }\n\n    //=============================================== Mock Coverage Functions ===============================================//\n\n    function msgData() external view returns (bytes memory ret) {\n        return _msgData();\n    }\n}\n"
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryCreator.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Inventory, optional extension: Creator.\n * @dev See https://eips.ethereum.org/EIPS/eip-1155\n * @dev Note: The ERC-165 identifier for this interface is 0x510b5158.\n */\ninterface IERC1155InventoryCreator {\n    /**\n     * Returns the creator of a collection, or the zero address if the collection has not been created.\n     * @dev Reverts if `collectionId` does not represent a collection.\n     * @param collectionId Identifier of the collection.\n     * @return The creator of a collection, or the zero address if the collection has not been created.\n     */\n    function creator(uint256 collectionId) external view returns (address);\n}\n"
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryMintable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Inventory with support for ERC721, optional extension: Mintable.\n * @dev The ERC721 Mintable function `safeMint(address,uint256,bytes)` is not provided as\n *  the ERC1155 Mintable function `safeMint(address,uint256,uint256,bytes)` can be used instead.\n */\ninterface IERC1155721InventoryMintable {\n    /**\n     * Safely mints some token (ERC1155-compatible).\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if `id` is not a token.\n     * @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n     * @dev Reverts if `id` represents a Non-Fungible Token which has already been minted.\n     * @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n     * @dev Reverts if `id` represents a Fungible Token and there is an overflow of supply.\n     * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155Received} fails or is refused.\n     * @dev Emits an {IERC721-Transfer} event from the zero address if `id` represents a Non-Fungible Token.\n     * @dev Emits an {IERC1155-TransferSingle} event from the zero address.\n     * @param to Address of the new token owner.\n     * @param id Identifier of the token to mint.\n     * @param value Amount of token to mint.\n     * @param data Optional data to send along to a receiver contract.\n     */\n    function safeMint(\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    ) external;\n\n    /**\n     * Safely mints a batch of tokens (ERC1155-compatible).\n     * @dev Reverts if `ids` and `values` have different lengths.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if one of `ids` is not a token.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token and its paired value is not 1.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token which has already been minted.\n     * @dev Reverts if one of `ids` represents a Fungible Token and its paired value is 0.\n     * @dev Reverts if one of `ids` represents a Fungible Token and there is an overflow of supply.\n     * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n     * @dev Emits an {IERC721-Transfer} event from the zero address for each Non-Fungible Token minted.\n     * @dev Emits an {IERC1155-TransferBatch} event from the zero address.\n     * @param to Address of the new tokens owner.\n     * @param ids Identifiers of the tokens to mint.\n     * @param values Amounts of tokens to mint.\n     * @param data Optional data to send along to a receiver contract.\n     */\n    function safeBatchMint(\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external;\n\n    /**\n     * Unsafely mints a Non-Fungible Token (ERC721-compatible).\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if `nftId` does not represent a Non-Fungible Token.\n     * @dev Reverts if `nftId` has already been minted.\n     * @dev Emits an {IERC721-Transfer} event from the zero address.\n     * @dev Emits an {IERC1155-TransferSingle} event from the zero address.\n     * @dev If `to` is a contract and supports ERC1155TokenReceiver, calls {IERC1155TokenReceiver-onERC1155Received} with empty data.\n     * @param to Address of the new token owner.\n     * @param nftId Identifier of the token to mint.\n     */\n    function mint(address to, uint256 nftId) external;\n\n    /**\n     * Unsafely mints a batch of Non-Fungible Tokens (ERC721-compatible).\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if one of `nftIds` does not represent a Non-Fungible Token.\n     * @dev Reverts if one of `nftIds` has already been minted.\n     * @dev Emits an {IERC721-Transfer} event from the zero address for each of `nftIds`.\n     * @dev Emits an {IERC1155-TransferBatch} event from the zero address.\n     * @dev If `to` is a contract and supports ERC1155TokenReceiver, calls {IERC1155TokenReceiver-onERC1155BatchReceived} with empty data.\n     * @param to Address of the new token owner.\n     * @param nftIds Identifiers of the tokens to mint.\n     */\n    function batchMint(address to, uint256[] calldata nftIds) external;\n\n    /**\n     * Safely mints a token (ERC721-compatible).\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if `tokenId` has already ben minted.\n     * @dev Reverts if `to` is a contract which does not implement IERC721Receiver or IERC1155TokenReceiver.\n     * @dev Reverts if `to` is an IERC1155TokenReceiver or IERC721TokenReceiver contract which refuses the transfer.\n     * @dev Emits an {IERC721-Transfer} event from the zero address.\n     * @dev Emits an {IERC1155-TransferSingle} event from the zero address.\n     * @param to Address of the new token owner.\n     * @param nftId Identifier of the token to mint.\n     * @param data Optional data to pass along to the receiver call.\n     */\n    function safeMint(\n        address to,\n        uint256 nftId,\n        bytes calldata data\n    ) external;\n}\n"
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryDeliverable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Inventory with support for ERC721, optional extension: Deliverable.\n * Provides a minting function which can be used to deliver tokens to several recipients.\n */\ninterface IERC1155721InventoryDeliverable {\n    /**\n     * Safely mints some tokens to a list of recipients.\n     * @dev Reverts if `recipients`, `ids` and `values` have different lengths.\n     * @dev Reverts if one of `recipients` is the zero address.\n     * @dev Reverts if one of `ids` is not a token.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token and its `value` is not 1.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token which has already been minted.\n     * @dev Reverts if one of `ids` represents a Fungible Token and its `value` is 0.\n     * @dev Reverts if one of `ids` represents a Fungible Token and there is an overflow of supply.\n     * @dev Reverts if one of `recipients` is a contract and the call to {IERC1155TokenReceiver-onERC1155Received} fails or is refused.\n     * @dev Emits an {IERC721-Transfer} event from the zero address for each `id` representing a Non-Fungible Token.\n     * @dev Emits an {IERC1155-TransferSingle} event from the zero address.\n     * @param recipients Addresses of the new token owners.\n     * @param ids Identifiers of the tokens to mint.\n     * @param values Amounts of tokens to mint.\n     * @param data Optional data to send along to the receiver contract(s), if any. All receivers receive the same data.\n     */\n    function safeDeliver(\n        address[] calldata recipients,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external;\n}\n"
      },
      "contracts/token/ERC721/mocks/ERC721SimpleMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IForwarderRegistry} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {Recoverable} from \"@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol\";\nimport {UsingUniversalForwarding} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol\";\nimport {MinterRole} from \"@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol\";\nimport {ERC721Simple} from \"./../ERC721Simple.sol\";\n\n/**\n * @title ERC721 Mock.\n */\ncontract ERC721SimpleMock is Recoverable, UsingUniversalForwarding, ERC721Simple, MinterRole {\n    constructor(IForwarderRegistry forwarderRegistry, address universalForwarder)\n        UsingUniversalForwarding(forwarderRegistry, universalForwarder)\n        MinterRole(msg.sender)\n    {}\n\n    //=================================================== Minting (admin) ===================================================//\n\n    /**\n     * Unsafely mints a token.\n     * @dev Reverts if the sender is not a minter.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if `tokenId` has already been minted.\n     * @dev Emits an {IERC721-Transfer} event from the zero address.\n     * @param to Address of the new token owner.\n     * @param tokenId Identifier of the token to mint.\n     */\n    function mint(address to, uint256 tokenId) external {\n        _requireMinter(_msgSender());\n        _mint(to, tokenId);\n    }\n\n    /**\n     * Burns a token.\n     * @dev Reverts if the sender is not a minter.\n     * @dev Reverts if `tokenId` does not exist.\n     * @dev Emits an {IERC721-Transfer} event to the zero address.\n     * @param tokenId Identifier of the token to burn.\n     */\n    function burn(uint256 tokenId) external {\n        _requireMinter(_msgSender());\n        _burn(tokenId);\n    }\n\n    //======================================== Meta Transactions Internal Functions =========================================//\n\n    function _msgSender() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (address payable) {\n        return UsingUniversalForwarding._msgSender();\n    }\n\n    function _msgData() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (bytes memory ret) {\n        return UsingUniversalForwarding._msgData();\n    }\n\n    //=============================================== Mock Coverage Functions ===============================================//\n\n    function msgData() external view returns (bytes memory ret) {\n        return _msgData();\n    }\n}\n"
      },
      "contracts/token/ERC20/polygon/predicate/PolygonERC20MintBurnPredicate.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {PolygonERC20PredicateBase} from \"./PolygonERC20PredicateBase.sol\";\n\n/**\n * @title ERC20 Mint/Burn Predicate (for Polygon).\n * Polygon bridging ERC20 minting/burning predicate which works with a `Withdrawn(address account, uint256 value)` event.\n * @dev This contract should be deployed on the Root Chain (Ethereum).\n * @dev Warning: this predicate must be used only for mintable and burnable tokens.\n */\ncontract PolygonERC20MintBurnPredicate is ManagedIdentity, PolygonERC20PredicateBase {\n    // @inheritdoc PolygonERC20PredicateBase\n    constructor(address rootChainManager_) PolygonERC20PredicateBase(rootChainManager_) {}\n\n    //==================================================== TokenPredicate ===================================================//\n\n    /**\n     * Burns ERC20 tokens for deposit.\n     * @dev Reverts if not called by the manager (RootChainManager).\n     * @param depositor Address who wants to deposit tokens.\n     * @param depositReceiver Address (address) who wants to receive tokens on child chain.\n     * @param rootToken Token which gets deposited.\n     * @param depositData ABI encoded amount.\n     */\n    function lockTokens(\n        address depositor,\n        address depositReceiver,\n        address rootToken,\n        bytes calldata depositData\n    ) external override {\n        _requireManagerRole(_msgSender());\n        uint256 amount = abi.decode(depositData, (uint256));\n        emit LockedERC20(depositor, depositReceiver, rootToken, amount);\n        require(IERC20BurnableMintable(rootToken).burnFrom(depositor, amount), \"Predicate: burn failed\");\n    }\n\n    /**\n     * Validates the {Withdrawn} log signature, then mints the correct amount to withdrawer.\n     * @dev Reverts if not called only by the manager (RootChainManager).\n     * @param rootToken Token which gets withdrawn\n     * @param log Valid ERC20 burn log from child chain\n     */\n    function exitTokens(\n        address,\n        address rootToken,\n        bytes memory log\n    ) public override {\n        _requireManagerRole(_msgSender());\n        (address withdrawer, uint256 amount) = _verifyWithdrawalLog(log);\n        IERC20BurnableMintable(rootToken).mint(withdrawer, amount);\n    }\n}\n\ninterface IERC20BurnableMintable {\n    function burnFrom(address from, uint256 value) external returns (bool);\n\n    function mint(address to, uint256 value) external;\n}\n"
      },
      "contracts/token/ERC20/polygon/predicate/PolygonERC20PredicateBase.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IPolygonTokenPredicate} from \"../../../common/polygon/interfaces/IPolygonTokenPredicate.sol\";\nimport {RLPReader} from \"@animoca/ethereum-contracts-core/contracts/utils/RLPReader.sol\";\n\n/**\n * @title ERC20 Predicate Base (for Polygon).\n * Polygon bridging ERC20 predicate which works with a `Withdrawn(address account, uint256 value)` event.\n * @dev This contract should be deployed on the Root Chain (Ethereum).\n * @dev The functions `lockTokens(address,address,address,bytes)` and `exitTokens(address,address,byte)` need to be implemented by a child contract.\n */\nabstract contract PolygonERC20PredicateBase is IPolygonTokenPredicate {\n    using RLPReader for bytes;\n    using RLPReader for RLPReader.RLPItem;\n\n    event LockedERC20(address indexed depositor, address indexed depositReceiver, address indexed rootToken, uint256 amount);\n\n    // keccak256(\"Withdrawn(address account, uint256 value)\");\n    bytes32 public constant WITHDRAWN_EVENT_SIG = 0x7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5;\n\n    // see https://github.com/maticnetwork/pos-portal/blob/master/contracts/root/RootChainManager/RootChainManager.sol\n    address public rootChainManager;\n\n    /**\n     * Constructor\n     * @param rootChainManager_ the Polygon/MATIC RootChainManager proxy address.\n     */\n    constructor(address rootChainManager_) {\n        rootChainManager = rootChainManager_;\n    }\n\n    //============================================== Helper Internal Functions ==============================================//\n\n    function _requireManagerRole(address account) internal view {\n        require(account == rootChainManager, \"Predicate: only manager\");\n    }\n\n    function _verifyWithdrawalLog(bytes memory log) internal pure returns (address withdrawer, uint256 amount) {\n        RLPReader.RLPItem[] memory logRLPList = log.toRlpItem().toList();\n        RLPReader.RLPItem[] memory logTopicRLPList = logRLPList[1].toList(); // topics\n\n        require(\n            bytes32(logTopicRLPList[0].toUint()) == WITHDRAWN_EVENT_SIG, // topic0 is event sig\n            \"Predicate: invalid signature\"\n        );\n\n        bytes memory logData = logRLPList[2].toBytes();\n        (withdrawer, amount) = abi.decode(logData, (address, uint256));\n    }\n}\n"
      },
      "contracts/token/common/polygon/interfaces/IPolygonTokenPredicate.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title Token Predicate interface for Polygon POS portal.\n */\ninterface IPolygonTokenPredicate {\n    /**\n     * Deposit tokens into POS portal.\n     * @param depositor Address who wants to deposit tokens\n     * @param depositReceiver Address (address) who wants to receive tokens on side chain\n     * @param rootToken Token which gets deposited\n     * @param depositData Extra data for deposit (amount for ERC20, token id for ERC721 etc.) [ABI encoded]\n     */\n    function lockTokens(\n        address depositor,\n        address depositReceiver,\n        address rootToken,\n        bytes calldata depositData\n    ) external;\n\n    /**\n     * Validates and processes exit while withdraw process\n     * @dev Validates exit log emitted on sidechain. Reverts if validation fails.\n     * @dev Processes withdraw based on custom logic. Example: transfer ERC20/ERC721, mint ERC721 if mintable withdraw\n     * @param sender Address\n     * @param rootToken Token which gets withdrawn\n     * @param logRLPList Valid sidechain log for data like amount, token id etc.\n     */\n    function exitTokens(\n        address sender,\n        address rootToken,\n        bytes calldata logRLPList\n    ) external;\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/utils/RLPReader.sol": {
        "content": "// SPDX-License-Identifier: Apache\n\n/*\n * @author Hamdi Allam hamdi.allam97@gmail.com\n * Please reach out with any questions or concerns\n * https://github.com/hamdiallam/Solidity-RLP/blob/e681e25a376dbd5426b509380bc03446f05d0f97/contracts/RLPReader.sol\n */\npragma solidity >=0.7.6 <0.8.0;\n\nlibrary RLPReader {\n    uint8 private constant _STRING_SHORT_START = 0x80;\n    uint8 private constant _STRING_LONG_START = 0xb8;\n    uint8 private constant _LIST_SHORT_START = 0xc0;\n    uint8 private constant _LIST_LONG_START = 0xf8;\n    uint8 private constant _WORD_SIZE = 32;\n\n    struct RLPItem {\n        uint256 len;\n        uint256 memPtr;\n    }\n\n    /*\n     * @param item RLP encoded bytes\n     */\n    function toRlpItem(bytes memory item) internal pure returns (RLPItem memory) {\n        require(item.length > 0, \"RLPReader: INVALID_BYTES_LENGTH\");\n        uint256 memPtr;\n        assembly {\n            memPtr := add(item, 0x20)\n        }\n\n        return RLPItem(item.length, memPtr);\n    }\n\n    /*\n     * @param item RLP encoded list in bytes\n     */\n    function toList(RLPItem memory item) internal pure returns (RLPItem[] memory) {\n        require(isList(item), \"RLP: ITEM_NOT_LIST\");\n\n        uint256 items = numItems(item);\n        RLPItem[] memory result = new RLPItem[](items);\n        uint256 listLength = _itemLength(item.memPtr);\n        require(listLength == item.len, \"RLP: LIST_LENGTH_MISMATCH\");\n\n        uint256 memPtr = item.memPtr + _payloadOffset(item.memPtr);\n        uint256 dataLen;\n        for (uint256 i = 0; i < items; i++) {\n            dataLen = _itemLength(memPtr);\n            result[i] = RLPItem(dataLen, memPtr);\n            memPtr = memPtr + dataLen;\n        }\n\n        return result;\n    }\n\n    // @return indicator whether encoded payload is a list. negate this function call for isData.\n    function isList(RLPItem memory item) internal pure returns (bool) {\n        uint8 byte0;\n        uint256 memPtr = item.memPtr;\n        assembly {\n            byte0 := byte(0, mload(memPtr))\n        }\n\n        if (byte0 < _LIST_SHORT_START) return false;\n        return true;\n    }\n\n    /** RLPItem conversions into data types **/\n\n    // @returns raw rlp encoding in bytes\n    function toRlpBytes(RLPItem memory item) internal pure returns (bytes memory) {\n        bytes memory result = new bytes(item.len);\n\n        uint256 ptr;\n        assembly {\n            ptr := add(0x20, result)\n        }\n\n        copy(item.memPtr, ptr, item.len);\n        return result;\n    }\n\n    function toAddress(RLPItem memory item) internal pure returns (address) {\n        require(!isList(item), \"RLP: DECODING_LIST_AS_ADDRESS\");\n        // 1 byte for the length prefix\n        require(item.len == 21, \"RLP: INVALID_ADDRESS_LEN\");\n\n        return address(toUint(item));\n    }\n\n    function toUint(RLPItem memory item) internal pure returns (uint256) {\n        require(!isList(item), \"RLP: DECODING_LIST_AS_UINT\");\n        require(item.len <= 33, \"RLP: INVALID_UINT_LEN\");\n\n        uint256 itemLength = _itemLength(item.memPtr);\n        require(itemLength == item.len, \"RLP: UINT_LEN_MISMATCH\");\n\n        uint256 offset = _payloadOffset(item.memPtr);\n        uint256 len = item.len - offset;\n        uint256 result;\n        uint256 memPtr = item.memPtr + offset;\n        assembly {\n            result := mload(memPtr)\n\n            // shfit to the correct location if neccesary\n            if lt(len, 32) {\n                result := div(result, exp(256, sub(32, len)))\n            }\n        }\n\n        return result;\n    }\n\n    // enforces 32 byte length\n    function toUintStrict(RLPItem memory item) internal pure returns (uint256) {\n        uint256 itemLength = _itemLength(item.memPtr);\n        require(itemLength == item.len, \"RLP: UINT_STRICT_LEN_MISMATCH\");\n        // one byte prefix\n        require(item.len == 33, \"RLP: INVALID_UINT_STRICT_LEN\");\n\n        uint256 result;\n        uint256 memPtr = item.memPtr + 1;\n        assembly {\n            result := mload(memPtr)\n        }\n\n        return result;\n    }\n\n    function toBytes(RLPItem memory item) internal pure returns (bytes memory) {\n        uint256 listLength = _itemLength(item.memPtr);\n        require(listLength == item.len, \"RLP: BYTES_LEN_MISMATCH\");\n        uint256 offset = _payloadOffset(item.memPtr);\n\n        uint256 len = item.len - offset; // data length\n        bytes memory result = new bytes(len);\n\n        uint256 destPtr;\n        assembly {\n            destPtr := add(0x20, result)\n        }\n\n        copy(item.memPtr + offset, destPtr, len);\n        return result;\n    }\n\n    /*\n     * Private Helpers\n     */\n\n    // @return number of payload items inside an encoded list.\n    function numItems(RLPItem memory item) private pure returns (uint256) {\n        // add `isList` check if `item` is expected to be passsed without a check from calling function\n        // require(isList(item), \"RLPReader: NUM_ITEMS_NOT_LIST\");\n\n        uint256 count = 0;\n        uint256 currPtr = item.memPtr + _payloadOffset(item.memPtr);\n        uint256 endPtr = item.memPtr + item.len;\n        while (currPtr < endPtr) {\n            currPtr = currPtr + _itemLength(currPtr); // skip over an item\n            require(currPtr <= endPtr, \"RLP: NUM_ITEMS_LEN_MISMATCH\");\n            count++;\n        }\n\n        return count;\n    }\n\n    // @return entire rlp item byte length\n    function _itemLength(uint256 memPtr) private pure returns (uint256) {\n        uint256 itemLen;\n        uint256 byte0;\n        assembly {\n            byte0 := byte(0, mload(memPtr))\n        }\n\n        if (byte0 < _STRING_SHORT_START) itemLen = 1;\n        else if (byte0 < _STRING_LONG_START) itemLen = byte0 - _STRING_SHORT_START + 1;\n        else if (byte0 < _LIST_SHORT_START) {\n            assembly {\n                let byteLen := sub(byte0, 0xb7) // # of bytes the actual length is\n                memPtr := add(memPtr, 1) // skip over the first byte\n\n                /* 32 byte word size */\n                let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to get the len\n                itemLen := add(dataLen, add(byteLen, 1))\n            }\n        } else if (byte0 < _LIST_LONG_START) {\n            itemLen = byte0 - _LIST_SHORT_START + 1;\n        } else {\n            assembly {\n                let byteLen := sub(byte0, 0xf7)\n                memPtr := add(memPtr, 1)\n\n                let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to the correct length\n                itemLen := add(dataLen, add(byteLen, 1))\n            }\n        }\n\n        return itemLen;\n    }\n\n    // @return number of bytes until the data\n    function _payloadOffset(uint256 memPtr) private pure returns (uint256) {\n        uint256 byte0;\n        assembly {\n            byte0 := byte(0, mload(memPtr))\n        }\n\n        if (byte0 < _STRING_SHORT_START) return 0;\n        else if (byte0 < _STRING_LONG_START || (byte0 >= _LIST_SHORT_START && byte0 < _LIST_LONG_START)) return 1;\n        else if (byte0 < _LIST_SHORT_START)\n            // being explicit\n            return byte0 - (_STRING_LONG_START - 1) + 1;\n        else return byte0 - (_LIST_LONG_START - 1) + 1;\n    }\n\n    /*\n     * @param src Pointer to source\n     * @param dest Pointer to destination\n     * @param len Amount of memory to copy from the source\n     */\n    function copy(\n        uint256 src,\n        uint256 dest,\n        uint256 len\n    ) private pure {\n        if (len == 0) return;\n\n        // copy as many word sizes as possible\n        for (; len >= _WORD_SIZE; len -= _WORD_SIZE) {\n            assembly {\n                mstore(dest, mload(src))\n            }\n\n            src += _WORD_SIZE;\n            dest += _WORD_SIZE;\n        }\n\n        // left over bytes. Mask is used to remove unwanted bytes from the word\n        uint256 mask = 256**(_WORD_SIZE - len) - 1;\n        assembly {\n            let srcpart := and(mload(src), not(mask)) // zero out src\n            let destpart := and(mload(dest), mask) // retrieve the bytes\n            mstore(dest, or(destpart, srcpart))\n        }\n    }\n}\n"
      },
      "contracts/token/ERC20/polygon/predicate/PolygonERC20EscrowPredicate.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IWrappedERC20, ERC20Wrapper} from \"@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {PolygonERC20PredicateBase} from \"./PolygonERC20PredicateBase.sol\";\n\n/**\n * @title ERC20 Escrow Predicate (for Polygon).\n * Polygon bridging ERC20 escrowing predicate which works with a `Withdrawn(address account, uint256 value)` event.\n * @dev This contract should be deployed on the Root Chain (Ethereum).\n */\ncontract PolygonERC20EscrowPredicate is ManagedIdentity, PolygonERC20PredicateBase {\n    using ERC20Wrapper for IWrappedERC20;\n\n    // @inheritdoc PolygonERC20PredicateBase\n    constructor(address rootChainManager_) PolygonERC20PredicateBase(rootChainManager_) {}\n\n    //==================================================== TokenPredicate ===================================================//\n\n    /**\n     * Locks ERC20 tokens for deposit.\n     * @dev Reverts if not called by the manager (RootChainManager).\n     * @param depositor Address who wants to deposit tokens.\n     * @param depositReceiver Address (address) who wants to receive tokens on child chain.\n     * @param rootToken Token which gets deposited.\n     * @param depositData ABI encoded amount.\n     */\n    function lockTokens(\n        address depositor,\n        address depositReceiver,\n        address rootToken,\n        bytes calldata depositData\n    ) external override {\n        _requireManagerRole(_msgSender());\n        uint256 amount = abi.decode(depositData, (uint256));\n        emit LockedERC20(depositor, depositReceiver, rootToken, amount);\n        IWrappedERC20(rootToken).wrappedTransferFrom(depositor, address(this), amount);\n    }\n\n    /**\n     * Validates the {Withdrawn} log signature, then sends the correct amount to withdrawer.\n     * @dev Reverts if not called only by the manager (RootChainManager).\n     * @param rootToken Token which gets withdrawn.\n     * @param log Valid ERC20 burn log from child chain.\n     */\n    function exitTokens(\n        address,\n        address rootToken,\n        bytes memory log\n    ) public override {\n        _requireManagerRole(_msgSender());\n        (address withdrawer, uint256 amount) = _verifyWithdrawalLog(log);\n        IWrappedERC20(rootToken).wrappedTransfer(withdrawer, amount);\n    }\n}\n"
      },
      "contracts/token/utils/mocks/ERC1155VouchersRedeemerMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IWrappedERC20} from \"@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol\";\nimport {IERC1155InventoryBurnable} from \"./../../../token/ERC1155/interfaces/IERC1155InventoryBurnable.sol\";\nimport {ERC1155VouchersRedeemer} from \"./../ERC1155VouchersRedeemer.sol\";\n\ncontract ERC1155VouchersRedeemerMock is ERC1155VouchersRedeemer {\n    constructor(\n        IERC1155InventoryBurnable vouchers,\n        IWrappedERC20 deliverable,\n        address tokenHolder\n    ) ERC1155VouchersRedeemer(vouchers, deliverable, tokenHolder) {}\n\n    function _voucherValue(uint256 tokenId) internal pure override returns (uint256) {\n        return tokenId;\n    }\n}\n"
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryBurnable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Inventory. optional extension: Burnable.\n * @dev See https://eips.ethereum.org/EIPS/eip-1155\n * @dev Note: The ERC-165 identifier for this interface is 0x921ed8d1.\n */\ninterface IERC1155InventoryBurnable {\n    /**\n     * Burns some token.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `id` does not represent a token.\n     * @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n     * @dev Reverts if `id` represents a Fungible Token and `value` is higher than `from`'s balance.\n     * @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n     * @dev Reverts if `id` represents a Non-Fungible Token which is not owned by `from`.\n     * @dev Emits an {IERC1155-TransferSingle} event.\n     * @param from Address of the current token owner.\n     * @param id Identifier of the token to burn.\n     * @param value Amount of token to burn.\n     */\n    function burnFrom(\n        address from,\n        uint256 id,\n        uint256 value\n    ) external;\n\n    /**\n     * Burns multiple tokens.\n     * @dev Reverts if `ids` and `values` have different lengths.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if one of `ids` does not represent a token.\n     * @dev Reverts if one of `ids` represents a Fungible Token and `value` is 0.\n     * @dev Reverts if one of `ids` represents a Fungible Token and `value` is higher than `from`'s balance.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token and `value` is not 1.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token which is not owned by `from`.\n     * @dev Emits an {IERC1155-TransferBatch} event.\n     * @param from Address of the current tokens owner.\n     * @param ids Identifiers of the tokens to burn.\n     * @param values Amounts of tokens to burn.\n     */\n    function batchBurnFrom(\n        address from,\n        uint256[] calldata ids,\n        uint256[] calldata values\n    ) external;\n}\n"
      },
      "contracts/token/utils/ERC1155VouchersRedeemer.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IWrappedERC20, ERC20Wrapper} from \"@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol\";\nimport {IERC1155TokenReceiver} from \"./../ERC1155/interfaces/IERC1155TokenReceiver.sol\";\nimport {IERC1155InventoryBurnable} from \"./../ERC1155/interfaces/IERC1155InventoryBurnable.sol\";\nimport {Ownable} from \"@animoca/ethereum-contracts-core/contracts/access/Ownable.sol\";\nimport {Recoverable} from \"@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol\";\nimport {ERC1155TokenReceiver} from \"./../ERC1155/ERC1155TokenReceiver.sol\";\n\n/**\n * @title ERC1155 Vouchers Redeemer.\n * An ERC1155TokenReceiver contract used to redeem (burn) vouchers for their representative value in a given ERC20 token.\n * @dev The function `_voucherValue(uint256)` needs to be implemented by a child contract.\n */\nabstract contract ERC1155VouchersRedeemer is ERC1155TokenReceiver, Recoverable {\n    using ERC20Wrapper for IWrappedERC20;\n\n    IERC1155InventoryBurnable public immutable vouchers;\n    IWrappedERC20 public immutable deliverable;\n    address public tokenHolder;\n\n    /**\n     * Constructor.\n     * @param vouchers_ the address of the vouchers contract.\n     * @param deliverable_ the address of the ERC20 token contract.\n     * @param tokenHolder_ the address of the ERC20 token holder.\n     */\n    constructor(\n        IERC1155InventoryBurnable vouchers_,\n        IWrappedERC20 deliverable_,\n        address tokenHolder_\n    ) Ownable(msg.sender) {\n        vouchers = vouchers_;\n        deliverable = deliverable_;\n        tokenHolder = tokenHolder_;\n    }\n\n    /**\n     * Called for redeeming one type of vouchers.\n     * @dev Reverts if the sender is not the vouchers contract.\n     * @dev Reverts if the amount of ERC20 token to deliver overflows.\n     * @dev Reverts if the token holder does not have enough ERC20 balance.\n     * @dev Reverts if this contract does not have enough ERC20 allowance from the token holder.\n     * @dev Emits an {IERC1155-TransferSingle} event for the burning of the voucher(s).\n     * @dev Emits an {IERC20-Transfer} event for the for the delivery of the ERC20.\n     * @inheritdoc IERC1155TokenReceiver\n     */\n    function onERC1155Received(\n        address, /*operator*/\n        address from,\n        uint256 id,\n        uint256 value,\n        bytes calldata /*data*/\n    ) external virtual override returns (bytes4) {\n        require(msg.sender == address(vouchers), \"Redeemer: wrong sender\");\n        vouchers.burnFrom(address(this), id, value);\n        uint256 voucherValue = _voucherValue(id);\n        uint256 tokenAmount = voucherValue * value;\n        require(tokenAmount / voucherValue == value, \"Redeemer: amount overflow\");\n        deliverable.wrappedTransferFrom(tokenHolder, from, tokenAmount);\n        return _ERC1155_RECEIVED;\n    }\n\n    /**\n     * Called for redeeming several types of vouchers.\n     * @dev Reverts if the sender is not the vouchers contract.\n     * @dev Reverts if an individual amount of ERC20 token to deliver overflows.\n     * @dev Reverts if the total amount of ERC20 token to deliver overflows.\n     * @dev Reverts if the token holder does not have enough ERC20 balance.\n     * @dev Reverts if this contract does not have enough ERC20 allowance from the token holder.\n     * @dev Emits an {IERC1155-TransferBatch} event for the burning of the voucher(s).\n     * @dev Emits an {IERC20-Transfer} event for the for the delivery of the ERC20.\n     * @inheritdoc IERC1155TokenReceiver\n     */\n    function onERC1155BatchReceived(\n        address, /*operator*/\n        address from,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata /*data*/\n    ) external virtual override returns (bytes4) {\n        require(msg.sender == address(vouchers), \"Redeemer: wrong sender\");\n        vouchers.batchBurnFrom(address(this), ids, values);\n        uint256 tokenAmount;\n        for (uint256 i; i != ids.length; ++i) {\n            uint256 id = ids[i];\n            uint256 value = values[i];\n            uint256 voucherValue = _voucherValue(id);\n            uint256 amount = voucherValue * value;\n            require(amount / voucherValue == value, \"Redeemer: amount overflow\");\n            uint256 newAmount = tokenAmount + amount;\n            require(newAmount >= tokenAmount, \"Redeemer: amount overflow\");\n            tokenAmount = newAmount;\n        }\n        deliverable.wrappedTransferFrom(tokenHolder, from, tokenAmount);\n        return _ERC1155_BATCH_RECEIVED;\n    }\n\n    /**\n     * Sets the token holder address.\n     * @dev Reverts if the sender is not the contract owner.\n     * @param tokenHolder_ the new address for the token holder.\n     */\n    function setTokenHolder(address tokenHolder_) external virtual {\n        _requireOwnership(_msgSender());\n        tokenHolder = tokenHolder_;\n    }\n\n    /**\n     * Validates the validity of the voucher for a specific redeemer deployment and returns the value of the voucher.\n     * @dev Reverts if the voucher is not valid for this redeemer.\n     * @param tokenId the id of the voucher.\n     * @return the value of the voucher in ERC20 token.\n     */\n    function _voucherValue(uint256 tokenId) internal view virtual returns (uint256);\n}\n"
      },
      "contracts/token/ERC1155/ERC1155TokenReceiver.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC1155TokenReceiver} from \"./interfaces/IERC1155TokenReceiver.sol\";\n\n/**\n * @title ERC1155 Transfers Receiver Contract.\n * @dev The functions `onERC1155Received(address,address,uint256,uint256,bytes)`\n *  and `onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)` need to be implemented by a child contract.\n */\nabstract contract ERC1155TokenReceiver is IERC165, IERC1155TokenReceiver {\n    // bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))\n    bytes4 internal constant _ERC1155_RECEIVED = 0xf23a6e61;\n\n    // bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))\n    bytes4 internal constant _ERC1155_BATCH_RECEIVED = 0xbc197c81;\n\n    bytes4 internal constant _ERC1155_REJECTED = 0xffffffff;\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC165).interfaceId || interfaceId == type(IERC1155TokenReceiver).interfaceId;\n    }\n}\n"
      },
      "contracts/token/ERC1155/mocks/ERC1155TokenReceiverMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IERC1155TokenReceiver} from \"./../interfaces/IERC1155TokenReceiver.sol\";\nimport {ERC1155TokenReceiver} from \"./../ERC1155TokenReceiver.sol\";\n\n/**\n * @title ERC1155 Token Receiver Mock.\n */\ncontract ERC1155TokenReceiverMock is ERC1155TokenReceiver {\n    event ReceivedSingle(address operator, address from, uint256 id, uint256 value, bytes data, uint256 gas);\n\n    event ReceivedBatch(address operator, address from, uint256[] ids, uint256[] values, bytes data, uint256 gas);\n\n    bool internal immutable _accept1155;\n    address internal immutable _tokenAddress1155;\n\n    constructor(bool accept1155, address tokenAddress) ERC1155TokenReceiver() {\n        _accept1155 = accept1155;\n        _tokenAddress1155 = tokenAddress;\n    }\n\n    //================================================ ERC1155TokenReceiver =================================================//\n\n    /// @inheritdoc IERC1155TokenReceiver\n    /// @dev reverts if the sender is not the supported ERC1155 contract.\n    function onERC1155Received(\n        address operator,\n        address from,\n        uint256 id,\n        uint256 value,\n        bytes memory data\n    ) public virtual override returns (bytes4) {\n        require(msg.sender == _tokenAddress1155, \"ERC1155Receiver: wrong token\");\n        if (_accept1155) {\n            emit ReceivedSingle(operator, from, id, value, data, gasleft());\n            return _ERC1155_RECEIVED;\n        } else {\n            return _ERC1155_REJECTED;\n        }\n    }\n\n    /// @inheritdoc IERC1155TokenReceiver\n    /// @dev reverts if the sender is not the supported ERC1155 contract.\n    function onERC1155BatchReceived(\n        address operator,\n        address from,\n        uint256[] memory ids,\n        uint256[] memory values,\n        bytes memory data\n    ) public virtual override returns (bytes4) {\n        require(msg.sender == _tokenAddress1155, \"ERC1155Receiver: wrong token\");\n        if (_accept1155) {\n            emit ReceivedBatch(operator, from, ids, values, data, gasleft());\n            return _ERC1155_BATCH_RECEIVED;\n        } else {\n            return _ERC1155_REJECTED;\n        }\n    }\n}\n"
      },
      "contracts/token/ERC1155721/mocks/ERC1155721ReceiverMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {ERC721Receiver, ERC721ReceiverMock} from \"./../../ERC721/mocks/ERC721ReceiverMock.sol\";\nimport {ERC1155TokenReceiver, ERC1155TokenReceiverMock} from \"./../../ERC1155/mocks/ERC1155TokenReceiverMock.sol\";\n\n/**\n * @title ERC721 Receiver & ERC1155 Token Receiver Mock.\n */\ncontract ERC1155721ReceiverMock is ERC721ReceiverMock, ERC1155TokenReceiverMock {\n    constructor(\n        bool supports721,\n        bool supports1155,\n        address tokenAddress\n    ) ERC721ReceiverMock(supports721, tokenAddress) ERC1155TokenReceiverMock(supports1155, tokenAddress) {}\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721Receiver, ERC1155TokenReceiver) returns (bool) {\n        return ERC721Receiver.supportsInterface(interfaceId) || ERC1155TokenReceiver.supportsInterface(interfaceId);\n    }\n}\n"
      },
      "contracts/token/ERC721/mocks/ERC721ReceiverMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IERC721Receiver} from \"./../interfaces/IERC721Receiver.sol\";\nimport {ERC721Receiver} from \"./../ERC721Receiver.sol\";\n\n/**\n * @title ERC721 Receiver Mock.\n */\ncontract ERC721ReceiverMock is ERC721Receiver {\n    event Received(address operator, address from, uint256 tokenId, bytes data, uint256 gas);\n\n    bool internal immutable _accept721;\n    address internal immutable _tokenAddress721;\n\n    constructor(bool accept721, address tokenAddress) ERC721Receiver() {\n        _accept721 = accept721;\n        _tokenAddress721 = tokenAddress;\n    }\n\n    //=================================================== ERC721Receiver ====================================================//\n\n    /// @inheritdoc IERC721Receiver\n    /// @dev reverts if the sender is not the supported ERC721 contract.\n    function onERC721Received(\n        address operator,\n        address from,\n        uint256 tokenId,\n        bytes memory data\n    ) public virtual override returns (bytes4) {\n        require(msg.sender == _tokenAddress721, \"ERC721Receiver: wrong token\");\n        if (_accept721) {\n            emit Received(operator, from, tokenId, data, gasleft());\n            return _ERC721_RECEIVED;\n        } else {\n            return _ERC721_REJECTED;\n        }\n    }\n}\n"
      },
      "contracts/token/ERC721/ERC721Receiver.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC721Receiver} from \"./interfaces/IERC721Receiver.sol\";\n\n/**\n * @title ERC721 Safe Transfers Receiver Contract.\n * @dev The function `onERC721Received(address,address,uint256,bytes)` needs to be implemented by a child contract.\n */\nabstract contract ERC721Receiver is IERC165, IERC721Receiver {\n    bytes4 internal constant _ERC721_RECEIVED = type(IERC721Receiver).interfaceId;\n    bytes4 internal constant _ERC721_REJECTED = 0xffffffff;\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC165).interfaceId || interfaceId == type(IERC721Receiver).interfaceId;\n    }\n}\n"
      },
      "contracts/token/ERC20/polygon/child/PolygonChildERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC20Receiver} from \"./../../interfaces/IERC20Receiver.sol\";\nimport {ERC20Receiver, PolygonChildERC20Base} from \"./PolygonChildERC20Base.sol\";\nimport {ERC20} from \"./../../ERC20.sol\";\n\n/**\n * @title ERC20 Fungible Token Contract, Child version (for Polygon).\n * Polygon bridging ERC20 child token which escrows the token and emits a `Withdrawn(address account, uint256 value)` event on exit.\n * @dev This contract should be deployed on the Child Chain (Polygon).\n */\ncontract PolygonChildERC20 is ERC20, PolygonChildERC20Base {\n    constructor(\n        string memory name_,\n        string memory symbol_,\n        uint8 decimals_,\n        address childChainManager\n    ) ERC20(name_, symbol_, decimals_) PolygonChildERC20Base(childChainManager) {}\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC20, ERC20Receiver) returns (bool) {\n        return ERC20.supportsInterface(interfaceId) || ERC20Receiver.supportsInterface(interfaceId);\n    }\n\n    //===================================================== ChildToken ======================================================//\n\n    /**\n     * Called when tokens have been deposited on the root chain.\n     * @dev Should handle deposit by un-escrowing the required amount for user.\n     * @dev Reverts if not sent by the depositor (ChildChainManager).\n     * @param user address for whom deposit has been done.\n     * @param depositData abi encoded amount.\n     */\n    function deposit(address user, bytes calldata depositData) public virtual override {\n        _requireDepositorRole(_msgSender());\n        uint256 amount = abi.decode(depositData, (uint256));\n        _transfer(address(this), user, amount);\n    }\n\n    /**\n     * Called when user wants to withdraw tokens back to the root chain.\n     * @dev Should escrow user's tokens. This transaction will be verified when exiting on root chain.\n     * @dev Emits a {Withdrawn} event.\n     * @param amount amount of tokens to withdraw.\n     */\n    function withdraw(uint256 amount) public virtual {\n        address sender = _msgSender();\n        _transferFrom(sender, sender, address(this), amount);\n        emit Withdrawn(sender, amount);\n    }\n\n    //==================================================== ERC20Receiver ====================================================//\n\n    /**\n     * Called when user wants to withdraw tokens back to the root chain (no pre-approval required).\n     * @dev Should escrow user's tokens. This transaction will be verified when exiting on root chain.\n     * @dev Reverts if the sender is not this contract.\n     * @dev Emits a {Withdrawn} event.\n     * @inheritdoc IERC20Receiver\n     */\n    function onERC20Received(\n        address, /*operator*/\n        address from,\n        uint256 amount,\n        bytes calldata /*data*/\n    ) public virtual override returns (bytes4) {\n        require(msg.sender == address(this), \"ChildERC20: wrong sender\");\n        emit Withdrawn(from, amount);\n        return _ERC20_RECEIVED;\n    }\n}\n"
      },
      "contracts/token/ERC20/interfaces/IERC20Receiver.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC20 Token Standard, Tokens Receiver.\n * Interface for any contract that wants to support safeTransfers from ERC20 contracts with Safe Transfers extension.\n * @dev See https://eips.ethereum.org/EIPS/eip-20\n * @dev Note: the ERC-165 identifier for this interface is 0x4fc35859.\n */\ninterface IERC20Receiver {\n    /**\n     * Handles the receipt of ERC20 tokens.\n     * @param sender The initiator of the transfer.\n     * @param from The address which transferred the tokens.\n     * @param value The amount of tokens transferred.\n     * @param data Optional additional data with no specified format.\n     * @return bytes4 `bytes4(keccak256(\"onERC20Received(address,address,uint256,bytes)\"))`\n     */\n    function onERC20Received(\n        address sender,\n        address from,\n        uint256 value,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n"
      },
      "contracts/token/ERC20/polygon/child/PolygonChildERC20Base.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IPolygonChildToken} from \"../../../common/polygon/interfaces/IPolygonChildToken.sol\";\nimport {IERC20Receiver} from \"./../../interfaces/IERC20Receiver.sol\";\nimport {ERC20Receiver} from \"./../../ERC20Receiver.sol\";\n\n/**\n * @title ERC20 Child Token Base (for Polygon).\n * Polygon bridging ERC20 child token which emits a `Withdrawn(address account, uint256 value)` event on exit.\n * @dev This contract should be deployed on the Child Chain (Polygon).\n * @dev The function `deposit(address,bytes)` needs to be implemented by a child contract.\n * @dev A function `withdraw(uint256)` can be implemented by a child contract to better integrate with Polygon bridge website.\n */\nabstract contract PolygonChildERC20Base is IPolygonChildToken, ERC20Receiver {\n    event Withdrawn(address account, uint256 value);\n\n    // see https://github.com/maticnetwork/pos-portal/blob/master/contracts/child/ChildChainManager/ChildChainManager.sol\n    address public childChainManager;\n\n    /**\n     * Constructor\n     * @param childChainManager_ the Polygon/MATIC ChildChainManager proxy address.\n     */\n    constructor(address childChainManager_) {\n        childChainManager = childChainManager_;\n    }\n\n    //============================================== Helper Internal Functions ==============================================//\n\n    function _requireDepositorRole(address account) internal view {\n        require(account == childChainManager, \"ChildERC20: only depositor\");\n    }\n}\n"
      },
      "contracts/token/ERC20/ERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {AddressIsContract} from \"@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol\";\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC20} from \"./interfaces/IERC20.sol\";\nimport {IERC20Detailed} from \"./interfaces/IERC20Detailed.sol\";\nimport {IERC20Allowance} from \"./interfaces/IERC20Allowance.sol\";\nimport {IERC20SafeTransfers} from \"./interfaces/IERC20SafeTransfers.sol\";\nimport {IERC20BatchTransfers} from \"./interfaces/IERC20BatchTransfers.sol\";\nimport {IERC20Metadata} from \"./interfaces/IERC20Metadata.sol\";\nimport {IERC20Permit} from \"./interfaces/IERC20Permit.sol\";\nimport {IERC20Receiver} from \"./interfaces/IERC20Receiver.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\n\n/**\n * @title ERC20 Fungible Token Contract.\n */\ncontract ERC20 is\n    ManagedIdentity,\n    IERC165,\n    IERC20,\n    IERC20Detailed,\n    IERC20Metadata,\n    IERC20Allowance,\n    IERC20BatchTransfers,\n    IERC20SafeTransfers,\n    IERC20Permit\n{\n    using AddressIsContract for address;\n\n    // keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\")\n    bytes32 internal constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\n\n    uint256 public immutable deploymentChainId;\n\n    // solhint-disable-next-line var-name-mixedcase\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\n\n    /// @inheritdoc IERC20Permit\n    mapping(address => uint256) public override nonces;\n\n    string internal _name;\n    string internal _symbol;\n    uint8 internal immutable _decimals;\n    string internal _tokenURI;\n\n    mapping(address => uint256) internal _balances;\n    mapping(address => mapping(address => uint256)) internal _allowances;\n    uint256 internal _totalSupply;\n\n    constructor(\n        string memory name_,\n        string memory symbol_,\n        uint8 decimals_\n    ) {\n        _name = name_;\n        _symbol = symbol_;\n        _decimals = decimals_;\n\n        uint256 chainId;\n        assembly {\n            chainId := chainid()\n        }\n        deploymentChainId = chainId;\n        _DOMAIN_SEPARATOR = _calculateDomainSeparator(chainId, bytes(name_));\n    }\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return\n            interfaceId == type(IERC165).interfaceId ||\n            interfaceId == type(IERC20).interfaceId ||\n            interfaceId == type(IERC20Detailed).interfaceId ||\n            interfaceId == type(IERC20Metadata).interfaceId ||\n            interfaceId == type(IERC20Allowance).interfaceId ||\n            interfaceId == type(IERC20BatchTransfers).interfaceId ||\n            interfaceId == type(IERC20SafeTransfers).interfaceId ||\n            interfaceId == type(IERC20Permit).interfaceId;\n    }\n\n    //======================================================== ERC20 ========================================================//\n\n    /// @inheritdoc IERC20\n    function totalSupply() external view override returns (uint256) {\n        return _totalSupply;\n    }\n\n    /// @inheritdoc IERC20\n    function balanceOf(address account) external view override returns (uint256) {\n        return _balances[account];\n    }\n\n    /// @inheritdoc IERC20\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\n        return _allowances[owner][spender];\n    }\n\n    /// @inheritdoc IERC20\n    function approve(address spender, uint256 value) external virtual override returns (bool) {\n        _approve(_msgSender(), spender, value);\n        return true;\n    }\n\n    /// @inheritdoc IERC20\n    function transfer(address to, uint256 value) external virtual override returns (bool) {\n        _transfer(_msgSender(), to, value);\n        return true;\n    }\n\n    /// @inheritdoc IERC20\n    function transferFrom(\n        address from,\n        address to,\n        uint256 value\n    ) external virtual override returns (bool) {\n        _transferFrom(_msgSender(), from, to, value);\n        return true;\n    }\n\n    //==================================================== ERC20Detailed ====================================================//\n\n    /// @inheritdoc IERC20Detailed\n    function name() external view override returns (string memory) {\n        return _name;\n    }\n\n    /// @inheritdoc IERC20Detailed\n    function symbol() external view override returns (string memory) {\n        return _symbol;\n    }\n\n    /// @inheritdoc IERC20Detailed\n    function decimals() external view override returns (uint8) {\n        return _decimals;\n    }\n\n    //==================================================== ERC20Metadata ====================================================//\n\n    /// @inheritdoc IERC20Metadata\n    function tokenURI() external view override returns (string memory) {\n        return _tokenURI;\n    }\n\n    //=================================================== ERC20Allowance ====================================================//\n\n    /// @inheritdoc IERC20Allowance\n    function increaseAllowance(address spender, uint256 addedValue) external virtual override returns (bool) {\n        require(spender != address(0), \"ERC20: zero address spender\");\n        address owner = _msgSender();\n        uint256 allowance_ = _allowances[owner][spender];\n        if (addedValue != 0) {\n            uint256 newAllowance = allowance_ + addedValue;\n            require(newAllowance > allowance_, \"ERC20: allowance overflow\");\n            _allowances[owner][spender] = newAllowance;\n            allowance_ = newAllowance;\n        }\n        emit Approval(owner, spender, allowance_);\n\n        return true;\n    }\n\n    /// @inheritdoc IERC20Allowance\n    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual override returns (bool) {\n        require(spender != address(0), \"ERC20: zero address spender\");\n        _decreaseAllowance(_msgSender(), spender, subtractedValue);\n        return true;\n    }\n\n    //================================================= ERC20BatchTransfers =================================================//\n\n    /// @inheritdoc IERC20BatchTransfers\n    function batchTransfer(address[] calldata recipients, uint256[] calldata values) external virtual override returns (bool) {\n        uint256 length = recipients.length;\n        require(length == values.length, \"ERC20: inconsistent arrays\");\n        address sender = _msgSender();\n        uint256 balance = _balances[sender];\n\n        uint256 totalValue;\n        uint256 selfTransferTotalValue;\n        for (uint256 i; i != length; ++i) {\n            address to = recipients[i];\n            require(to != address(0), \"ERC20: to zero address\");\n\n            uint256 value = values[i];\n            if (value != 0) {\n                uint256 newTotalValue = totalValue + value;\n                require(newTotalValue > totalValue, \"ERC20: values overflow\");\n                totalValue = newTotalValue;\n                if (sender != to) {\n                    _balances[to] += value;\n                } else {\n                    require(value <= balance, \"ERC20: insufficient balance\");\n                    selfTransferTotalValue += value; // cannot overflow as 'selfTransferTotalValue <= totalValue' is always true\n                }\n            }\n            emit Transfer(sender, to, value);\n        }\n\n        if (totalValue != 0 && totalValue != selfTransferTotalValue) {\n            uint256 newBalance = balance - totalValue;\n            require(newBalance < balance, \"ERC20: insufficient balance\"); // balance must be sufficient, including self-transfers\n            _balances[sender] = newBalance + selfTransferTotalValue; // do not deduct self-transfers from the sender balance\n        }\n        return true;\n    }\n\n    /// @inheritdoc IERC20BatchTransfers\n    function batchTransferFrom(\n        address from,\n        address[] calldata recipients,\n        uint256[] calldata values\n    ) external virtual override returns (bool) {\n        uint256 length = recipients.length;\n        require(length == values.length, \"ERC20: inconsistent arrays\");\n\n        uint256 balance = _balances[from];\n\n        uint256 totalValue;\n        uint256 selfTransferTotalValue;\n        for (uint256 i; i != length; ++i) {\n            address to = recipients[i];\n            require(to != address(0), \"ERC20: to zero address\");\n\n            uint256 value = values[i];\n\n            if (value != 0) {\n                uint256 newTotalValue = totalValue + value;\n                require(newTotalValue > totalValue, \"ERC20: values overflow\");\n                totalValue = newTotalValue;\n                if (from != to) {\n                    _balances[to] += value;\n                } else {\n                    require(value <= balance, \"ERC20: insufficient balance\");\n                    selfTransferTotalValue += value; // cannot overflow as 'selfTransferTotalValue <= totalValue' is always true\n                }\n            }\n\n            emit Transfer(from, to, value);\n        }\n\n        if (totalValue != 0 && totalValue != selfTransferTotalValue) {\n            uint256 newBalance = balance - totalValue;\n            require(newBalance < balance, \"ERC20: insufficient balance\"); // balance must be sufficient, including self-transfers\n            _balances[from] = newBalance + selfTransferTotalValue; // do not deduct self-transfers from the sender balance\n        }\n\n        address sender = _msgSender();\n        if (from != sender) {\n            _decreaseAllowance(from, sender, totalValue);\n        }\n\n        return true;\n    }\n\n    //================================================= ERC20SafeTransfers ==================================================//\n\n    /// @inheritdoc IERC20SafeTransfers\n    function safeTransfer(\n        address to,\n        uint256 amount,\n        bytes calldata data\n    ) external virtual override returns (bool) {\n        address sender = _msgSender();\n        _transfer(sender, to, amount);\n        if (to.isContract()) {\n            require(IERC20Receiver(to).onERC20Received(sender, sender, amount, data) == type(IERC20Receiver).interfaceId, \"ERC20: transfer refused\");\n        }\n        return true;\n    }\n\n    /// @inheritdoc IERC20SafeTransfers\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 amount,\n        bytes calldata data\n    ) external virtual override returns (bool) {\n        address sender = _msgSender();\n        _transferFrom(sender, from, to, amount);\n        if (to.isContract()) {\n            require(IERC20Receiver(to).onERC20Received(sender, from, amount, data) == type(IERC20Receiver).interfaceId, \"ERC20: transfer refused\");\n        }\n        return true;\n    }\n\n    //===================================================== ERC20Permit =====================================================//\n\n    /// @inheritdoc IERC20Permit\n    // solhint-disable-next-line func-name-mixedcase\n    function DOMAIN_SEPARATOR() public view override returns (bytes32) {\n        uint256 chainId;\n        assembly {\n            chainId := chainid()\n        }\n        // recompute the domain separator in case of fork and chainid update\n        return chainId == deploymentChainId ? _DOMAIN_SEPARATOR : _calculateDomainSeparator(chainId, bytes(_name));\n    }\n\n    /// @inheritdoc IERC20Permit\n    function permit(\n        address owner,\n        address spender,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external virtual override {\n        require(owner != address(0), \"ERC20: zero address owner\");\n        require(block.timestamp <= deadline, \"ERC20: expired permit\");\n        bytes32 hashStruct = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline));\n        bytes32 hash = keccak256(abi.encodePacked(\"\\x19\\x01\", DOMAIN_SEPARATOR(), hashStruct));\n        address signer = ecrecover(hash, v, r, s);\n        require(signer == owner, \"ERC20: invalid permit\");\n        _approve(owner, spender, value);\n    }\n\n    //============================================ High-level Internal Functions ============================================//\n\n    function _approve(\n        address owner,\n        address spender,\n        uint256 value\n    ) internal {\n        require(spender != address(0), \"ERC20: zero address spender\");\n        _allowances[owner][spender] = value;\n        emit Approval(owner, spender, value);\n    }\n\n    function _decreaseAllowance(\n        address owner,\n        address spender,\n        uint256 subtractedValue\n    ) internal {\n        uint256 allowance_ = _allowances[owner][spender];\n\n        if (allowance_ != type(uint256).max && subtractedValue != 0) {\n            // save gas when allowance is maximal by not reducing it (see https://github.com/ethereum/EIPs/issues/717)\n            uint256 newAllowance = allowance_ - subtractedValue;\n            require(newAllowance < allowance_, \"ERC20: insufficient allowance\");\n            _allowances[owner][spender] = newAllowance;\n            allowance_ = newAllowance;\n        }\n        emit Approval(owner, spender, allowance_);\n    }\n\n    function _transfer(\n        address from,\n        address to,\n        uint256 value\n    ) internal virtual {\n        require(to != address(0), \"ERC20: to zero address\");\n\n        if (value != 0) {\n            uint256 balance = _balances[from];\n            uint256 newBalance = balance - value;\n            require(newBalance < balance, \"ERC20: insufficient balance\");\n            if (from != to) {\n                _balances[from] = newBalance;\n                _balances[to] += value;\n            }\n        }\n\n        emit Transfer(from, to, value);\n    }\n\n    function _transferFrom(\n        address sender,\n        address from,\n        address to,\n        uint256 value\n    ) internal {\n        _transfer(from, to, value);\n        if (from != sender) {\n            _decreaseAllowance(from, sender, value);\n        }\n    }\n\n    function _mint(address to, uint256 value) internal virtual {\n        require(to != address(0), \"ERC20: zero address\");\n        uint256 supply = _totalSupply;\n        if (value != 0) {\n            uint256 newSupply = supply + value;\n            require(newSupply > supply, \"ERC20: supply overflow\");\n            _totalSupply = newSupply;\n            _balances[to] += value; // balance cannot overflow if supply does not\n        }\n        emit Transfer(address(0), to, value);\n    }\n\n    function _batchMint(address[] memory recipients, uint256[] memory values) internal virtual {\n        uint256 length = recipients.length;\n        require(length == values.length, \"ERC20: inconsistent arrays\");\n\n        uint256 totalValue;\n        for (uint256 i; i != length; ++i) {\n            address to = recipients[i];\n            require(to != address(0), \"ERC20: zero address\");\n\n            uint256 value = values[i];\n            if (value != 0) {\n                uint256 newTotalValue = totalValue + value;\n                require(newTotalValue > totalValue, \"ERC20: values overflow\");\n                totalValue = newTotalValue;\n                _balances[to] += value; // balance cannot overflow if supply does not\n            }\n            emit Transfer(address(0), to, value);\n        }\n\n        if (totalValue != 0) {\n            uint256 supply = _totalSupply;\n            uint256 newSupply = supply + totalValue;\n            require(newSupply > supply, \"ERC20: supply overflow\");\n            _totalSupply = newSupply;\n        }\n    }\n\n    function _burn(address from, uint256 value) internal virtual {\n        if (value != 0) {\n            uint256 balance = _balances[from];\n            uint256 newBalance = balance - value;\n            require(newBalance < balance, \"ERC20: insufficient balance\");\n            _balances[from] = newBalance;\n            _totalSupply -= value; // will not underflow if balance does not\n        }\n        emit Transfer(from, address(0), value);\n    }\n\n    function _burnFrom(address from, uint256 value) internal virtual {\n        _burn(from, value);\n        address sender = _msgSender();\n        if (from != sender) {\n            _decreaseAllowance(from, sender, value);\n        }\n    }\n\n    function _batchBurnFrom(address[] memory owners, uint256[] memory values) internal virtual {\n        uint256 length = owners.length;\n        require(length == values.length, \"ERC20: inconsistent arrays\");\n\n        address sender = _msgSender();\n\n        uint256 totalValue;\n        for (uint256 i; i != length; ++i) {\n            address from = owners[i];\n            uint256 value = values[i];\n            if (value != 0) {\n                uint256 balance = _balances[from];\n                uint256 newBalance = balance - value;\n                require(newBalance < balance, \"ERC20: insufficient balance\");\n                _balances[from] = newBalance;\n                totalValue += value; // totalValue cannot overflow if the individual balances do not underflow\n            }\n            emit Transfer(from, address(0), value);\n\n            if (from != sender) {\n                _decreaseAllowance(from, sender, value);\n            }\n        }\n\n        if (totalValue != 0) {\n            _totalSupply -= totalValue; // _totalSupply cannot underfow as balances do not underflow\n        }\n    }\n\n    //============================================== Helper Internal Functions ==============================================//\n\n    function _calculateDomainSeparator(uint256 chainId, bytes memory name_) private view returns (bytes32) {\n        return\n            keccak256(\n                abi.encode(\n                    keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"),\n                    keccak256(name_),\n                    keccak256(\"1\"),\n                    chainId,\n                    address(this)\n                )\n            );\n    }\n}\n"
      },
      "contracts/token/common/polygon/interfaces/IPolygonChildToken.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title Child Token interface for Polygon POS portal.\n */\ninterface IPolygonChildToken {\n    /**\n     * Receive a deposit from the POS portal.\n     * @dev Reverts if the sender is not the Child Chain manager.\n     * @param user Address who receives the deposit.\n     * @param depositData Extra data for deposit (amount for ERC20, token id for ERC721 etc.) [ABI encoded]\n     */\n    function deposit(address user, bytes calldata depositData) external;\n}\n"
      },
      "contracts/token/ERC20/ERC20Receiver.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC20Receiver} from \"./interfaces/IERC20Receiver.sol\";\n\n/**\n * @title ERC20 Safe Transfers Receiver Contract.\n * @dev The function `onERC20Received(address,address,uint256,bytes)` needs to be implemented by a child contract.\n */\nabstract contract ERC20Receiver is IERC20Receiver, IERC165 {\n    bytes4 internal constant _ERC20_RECEIVED = type(IERC20Receiver).interfaceId;\n    bytes4 internal constant _ERC20_REJECTED = 0xffffffff;\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC165).interfaceId || interfaceId == type(IERC20Receiver).interfaceId;\n    }\n}\n"
      },
      "contracts/token/ERC20/interfaces/IERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC20 Token Standard, basic interface.\n * @dev See https://eips.ethereum.org/EIPS/eip-20\n * @dev Note: The ERC-165 identifier for this interface is 0x36372b07.\n */\ninterface IERC20 {\n    /**\n     * @dev Emitted when tokens are transferred, including zero value transfers.\n     * @param _from The account where the transferred tokens are withdrawn from.\n     * @param _to The account where the transferred tokens are deposited to.\n     * @param _value The amount of tokens being transferred.\n     */\n    event Transfer(address indexed _from, address indexed _to, uint256 _value);\n\n    /**\n     * @dev Emitted when a successful call to {IERC20-approve(address,uint256)} is made.\n     * @param _owner The account granting an allowance to `_spender`.\n     * @param _spender The account being granted an allowance from `_owner`.\n     * @param _value The allowance amount being granted.\n     */\n    event Approval(address indexed _owner, address indexed _spender, uint256 _value);\n\n    /**\n     * @notice Returns the total token supply.\n     * @return The total token supply.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @notice Returns the account balance of another account with address `owner`.\n     * @param owner The account whose balance will be returned.\n     * @return The account balance of another account with address `owner`.\n     */\n    function balanceOf(address owner) external view returns (uint256);\n\n    /**\n     * Transfers `value` amount of tokens to address `to`.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender does not have enough balance.\n     * @dev Emits an {IERC20-Transfer} event.\n     * @dev Transfers of 0 values are treated as normal transfers and fire the {IERC20-Transfer} event.\n     * @param to The receiver account.\n     * @param value The amount of tokens to transfer.\n     * @return True if the transfer succeeds, false otherwise.\n     */\n    function transfer(address to, uint256 value) external returns (bool);\n\n    /**\n     * @notice Transfers `value` amount of tokens from address `from` to address `to`.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if `from` does not have at least `value` of balance.\n     * @dev Reverts if the sender is not `from` and has not been approved by `from` for at least `value`.\n     * @dev Emits an {IERC20-Transfer} event.\n     * @dev Transfers of 0 values are treated as normal transfers and fire the {IERC20-Transfer} event.\n     * @param from The emitter account.\n     * @param to The receiver account.\n     * @param value The amount of tokens to transfer.\n     * @return True if the transfer succeeds, false otherwise.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 value\n    ) external returns (bool);\n\n    /**\n     * Sets `value` as the allowance from the caller to `spender`.\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: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     * @dev Reverts if `spender` is the zero address.\n     * @dev Emits the {IERC20-Approval} event.\n     * @param spender The account being granted the allowance by the message caller.\n     * @param value The allowance amount to grant.\n     * @return True if the approval succeeds, false otherwise.\n     */\n    function approve(address spender, uint256 value) external returns (bool);\n\n    /**\n     * Returns the amount which `spender` is allowed to spend on behalf of `owner`.\n     * @param owner The account that has granted an allowance to `spender`.\n     * @param spender The account that was granted an allowance by `owner`.\n     * @return The amount which `spender` is allowed to spend on behalf of `owner`.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n}\n"
      },
      "contracts/token/ERC20/interfaces/IERC20Detailed.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC20 Token Standard, optional extension: Detailed.\n * @dev See https://eips.ethereum.org/EIPS/eip-20\n * @dev Note: the ERC-165 identifier for this interface is 0xa219a025.\n */\ninterface IERC20Detailed {\n    /**\n     * Returns the name of the token. E.g. \"My Token\".\n     * @return The name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * Returns the symbol of the token. E.g. \"HIX\".\n     * @return The symbol of the token.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * Returns the number of decimals used to display the balances.\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 Ether and Wei.\n     *\n     * @dev Note: This information is only used for _display_ purposes: it does  not impact the arithmetic of the contract.\n     * @return The number of decimals used to display the balances.\n     */\n    function decimals() external view returns (uint8);\n}\n"
      },
      "contracts/token/ERC20/interfaces/IERC20Allowance.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC20 Token Standard, optional extension: Allowance.\n * @dev See https://eips.ethereum.org/EIPS/eip-20\n * @dev Note: the ERC-165 identifier for this interface is 0x9d075186.\n */\ninterface IERC20Allowance {\n    /**\n     * Increases the allowance granted by the sender to `spender` by `value`.\n     *  This is an alternative to {approve} that can be used as a mitigation for\n     *  problems described in {IERC20-approve}.\n     * @dev Reverts if `spender` is the zero address.\n     * @dev Reverts if `spender`'s allowance overflows.\n     * @dev Emits an {IERC20-Approval} event with an updated allowance for `spender`.\n     * @param spender The account whose allowance is being increased by the message caller.\n     * @param value The allowance amount increase.\n     * @return True if the allowance increase succeeds, false otherwise.\n     */\n    function increaseAllowance(address spender, uint256 value) external returns (bool);\n\n    /**\n     * Decreases the allowance granted by the sender to `spender` by `value`.\n     *  This is an alternative to {approve} that can be used as a mitigation for\n     *  problems described in {IERC20-approve}.\n     * @dev Reverts if `spender` is the zero address.\n     * @dev Reverts if `spender` has an allowance with the message caller for less than `value`.\n     * @dev Emits an {IERC20-Approval} event with an updated allowance for `spender`.\n     * @param spender The account whose allowance is being decreased by the message caller.\n     * @param value The allowance amount decrease.\n     * @return True if the allowance decrease succeeds, false otherwise.\n     */\n    function decreaseAllowance(address spender, uint256 value) external returns (bool);\n}\n"
      },
      "contracts/token/ERC20/interfaces/IERC20SafeTransfers.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC20 Token Standard, optional extension: Safe Transfers.\n * @dev See https://eips.ethereum.org/EIPS/eip-20\n * @dev Note: the ERC-165 identifier for this interface is 0x53f41a97.\n */\ninterface IERC20SafeTransfers {\n    /**\n     * Transfers tokens from the caller to `to`. If this address is a contract, then calls `onERC20Received(address,address,uint256,bytes)` on it.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if `value` is greater than the sender's balance.\n     * @dev Reverts if `to` is a contract which does not implement `onERC20Received(address,address,uint256,bytes)`.\n     * @dev Reverts if `to` is a contract and the call to `onERC20Received(address,address,uint256,bytes)` returns a wrong value.\n     * @dev Emits an {IERC20-Transfer} event.\n     * @param to The address for the tokens to be transferred to.\n     * @param amount The amount of tokens to be transferred.\n     * @param data Optional additional data with no specified format, to be passed to the receiver contract.\n     * @return true.\n     */\n    function safeTransfer(\n        address to,\n        uint256 amount,\n        bytes calldata data\n    ) external returns (bool);\n\n    /**\n     * Transfers tokens from `from` to another address, using the allowance mechanism.\n     *  If this address is a contract, then calls `onERC20Received(address,address,uint256,bytes)` on it.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if `value` is greater than `from`'s balance.\n     * @dev Reverts if the sender does not have at least `value` allowance by `from`.\n     * @dev Reverts if `to` is a contract which does not implement `onERC20Received(address,address,uint256,bytes)`.\n     * @dev Reverts if `to` is a contract and the call to `onERC20Received(address,address,uint256,bytes)` returns a wrong value.\n     * @dev Emits an {IERC20-Transfer} event.\n     * @param from The address which owns the tokens to be transferred.\n     * @param to The address for the tokens to be transferred to.\n     * @param amount The amount of tokens to be transferred.\n     * @param data Optional additional data with no specified format, to be passed to the receiver contract.\n     * @return true.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 amount,\n        bytes calldata data\n    ) external returns (bool);\n}\n"
      },
      "contracts/token/ERC20/interfaces/IERC20BatchTransfers.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC20 Token Standard, optional extension: Batch Transfers.\n * @dev See https://eips.ethereum.org/EIPS/eip-20\n * @dev Note: the ERC-165 identifier for this interface is 0xc05327e6.\n */\ninterface IERC20BatchTransfers {\n    /**\n     * Moves multiple `amounts` tokens from the caller's account to each of `recipients`.\n     * @dev Reverts if `recipients` and `amounts` have different lengths.\n     * @dev Reverts if one of `recipients` is the zero address.\n     * @dev Reverts if the caller has an insufficient balance.\n     * @dev Emits an {IERC20-Transfer} event for each individual transfer.\n     * @param recipients the list of recipients to transfer the tokens to.\n     * @param amounts the amounts of tokens to transfer to each of `recipients`.\n     * @return a boolean value indicating whether the operation succeeded.\n     */\n    function batchTransfer(address[] calldata recipients, uint256[] calldata amounts) external returns (bool);\n\n    /**\n     * Moves multiple `amounts` tokens from an account to each of `recipients`.\n     * @dev Reverts if `recipients` and `amounts` have different lengths.\n     * @dev Reverts if one of `recipients` is the zero address.\n     * @dev Reverts if `from` has an insufficient balance.\n     * @dev Reverts if the sender is not `from` and has an insufficient allowance.\n     * @dev Emits an {IERC20-Transfer} event for each individual transfer.\n     * @dev Emits an {IERC20-Approval} event.\n     * @param from The address which owns the tokens to be transferred.\n     * @param recipients the list of recipients to transfer the tokens to.\n     * @param amounts the amounts of tokens to transfer to each of `recipients`.\n     * @return a boolean value indicating whether the operation succeeded.\n     */\n    function batchTransferFrom(\n        address from,\n        address[] calldata recipients,\n        uint256[] calldata amounts\n    ) external returns (bool);\n}\n"
      },
      "contracts/token/ERC20/interfaces/IERC20Metadata.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC20 Token Standard, ERC1046 optional extension: Metadata.\n * @dev See https://eips.ethereum.org/EIPS/eip-1046\n * @dev Note: the ERC-165 identifier for this interface is 0x3c130d90.\n */\ninterface IERC20Metadata {\n    /**\n     * Returns a distinct Uniform Resource Identifier (URI) for the token metadata.\n     * @return a distinct Uniform Resource Identifier (URI) for the token metadata.\n     */\n    function tokenURI() external view returns (string memory);\n}\n"
      },
      "contracts/token/ERC20/interfaces/IERC20Permit.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC20 Token Standard, ERC2612 optional extension: permit – 712-signed approvals\n * Interface for allowing ERC20 approvals to be made via ECDSA `secp256k1` signatures.\n * @dev See https://eips.ethereum.org/EIPS/eip-2612\n * @dev Note: the ERC-165 identifier for this interface is 0x9d8ff7da.\n */\ninterface IERC20Permit {\n    /**\n     * Sets `value` as the allowance of `spender` over the tokens of `owner`, given `owner` account's signed permit.\n     * @dev WARNING: The standard ERC-20 race condition for approvals applies to `permit()` as well: https://swcregistry.io/docs/SWC-114\n     * @dev Reverts if `owner` is the zero address.\n     * @dev Reverts if the current blocktime is > `deadline`.\n     * @dev Reverts if `r`, `s`, and `v` is not a valid `secp256k1` signature from `owner`.\n     * @dev Emits an {IERC20-Approval} event.\n     * @param owner The token owner granting the allowance to `spender`.\n     * @param spender The token spender being granted the allowance by `owner`.\n     * @param value The token amount of the allowance.\n     * @param deadline The deadline from which the permit signature is no longer valid.\n     * @param v Permit signature v parameter\n     * @param r Permit signature r parameter.\n     * @param s Permis signature s parameter.\n     */\n    function permit(\n        address owner,\n        address spender,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external;\n\n    /**\n     * Returns the current permit nonce of `owner`.\n     * @param owner the address to check the nonce of.\n     * @return the current permit nonce of `owner`.\n     */\n    function nonces(address owner) external view returns (uint256);\n\n    /**\n     * Returns the EIP-712 encoded hash struct of the domain-specific information for permits.\n     *\n     * @dev A common ERC-20 permit implementation choice for the `DOMAIN_SEPARATOR` is:\n     *\n     *  keccak256(\n     *      abi.encode(\n     *          keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"),\n     *          keccak256(bytes(name)),\n     *          keccak256(bytes(version)),\n     *          chainId,\n     *          address(this)))\n     *\n     *  where\n     *   - `name` (string) is the ERC-20 token name.\n     *   - `version` (string) refers to the ERC-20 token contract version.\n     *   - `chainId` (uint256) is the chain ID to which the ERC-20 token contract is deployed to.\n     *   - `verifyingContract` (address) is the ERC-20 token contract address.\n     *\n     * @return the EIP-712 encoded hash struct of the domain-specific information for permits.\n     */\n    // solhint-disable-next-line func-name-mixedcase\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"
      },
      "contracts/token/ERC20/mocks/ERC20Mock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IForwarderRegistry} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol\";\nimport {IERC20Mintable} from \"./../interfaces/IERC20Mintable.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {Recoverable} from \"@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol\";\nimport {UsingUniversalForwarding} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol\";\nimport {MinterRole} from \"@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol\";\nimport {ERC20} from \"./../ERC20.sol\";\n\n/**\n * @title ERC20 Mock.\n */\ncontract ERC20Mock is Recoverable, UsingUniversalForwarding, ERC20, IERC20Mintable, MinterRole {\n    constructor(\n        address[] memory recipients,\n        uint256[] memory values,\n        IForwarderRegistry forwarderRegistry,\n        address universalForwarder\n    ) ERC20(\"ERC20 Mock\", \"E20\", 18) MinterRole(msg.sender) UsingUniversalForwarding(forwarderRegistry, universalForwarder) {\n        _batchMint(recipients, values);\n    }\n\n    //================================================ ERC20Metadata (admin) ================================================//\n\n    /**\n     * Sets the token metadata URI.\n     * @dev Reverts if not called by the contract owner.\n     * @param tokenURI_ the new token metadata URI.\n     */\n    function setTokenURI(string calldata tokenURI_) external {\n        _requireOwnership(_msgSender());\n        _tokenURI = tokenURI_;\n    }\n\n    //================================================ ERC20Mintable (admin) ================================================//\n\n    /// @inheritdoc IERC20Mintable\n    /// @dev Reverts if the sender is not a minter.\n    function mint(address to, uint256 value) public virtual override {\n        _requireMinter(_msgSender());\n        _mint(to, value);\n    }\n\n    /// @inheritdoc IERC20Mintable\n    /// @dev Reverts if the sender is not a minter.\n    function batchMint(address[] memory recipients, uint256[] memory values) public virtual override {\n        _requireMinter(_msgSender());\n        _batchMint(recipients, values);\n    }\n\n    //======================================== Meta Transactions Internal Functions =========================================//\n\n    function _msgSender() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (address payable) {\n        return UsingUniversalForwarding._msgSender();\n    }\n\n    function _msgData() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (bytes memory ret) {\n        return UsingUniversalForwarding._msgData();\n    }\n\n    //=============================================== Mock Coverage Functions ===============================================//\n\n    function msgData() external view returns (bytes memory ret) {\n        return _msgData();\n    }\n}\n"
      },
      "contracts/token/ERC20/interfaces/IERC20Mintable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC20 Token Standard, optional extension: Mintable.\n * @dev See https://eips.ethereum.org/EIPS/eip-20\n */\ninterface IERC20Mintable {\n    /**\n     * Mints `value` tokens and assigns them to `to`, increasing the total supply.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the total supply overflows.\n     * @dev Emits a {IERC20-Transfer} event with `from` set to the zero address.\n     * @param to the account to deliver the tokens to.\n     * @param value the amount of tokens to mint.\n     */\n    function mint(address to, uint256 value) external;\n\n    /**\n     * Mints `values` tokens and assigns them to `recipients`, increasing the total supply.\n     * @dev Reverts if `recipients` and `values` have different lengths.\n     * @dev Reverts if one of `recipients` is the zero address.\n     * @dev Reverts if the total supply overflows.\n     * @dev Emits an {IERC20-Transfer} event for each transfer with `_from` set to the zero address.\n     * @param recipients the accounts to deliver the tokens to.\n     * @param values the amounts of tokens to mint to each of `recipients`.\n     */\n    function batchMint(address[] calldata recipients, uint256[] calldata values) external;\n}\n"
      },
      "contracts/token/ERC20/polygon/child/mocks/PolygonChildERC20Mock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IWrappedERC20, ERC20Wrapper} from \"@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol\";\nimport {IForwarderRegistry} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol\";\nimport {IERC20Mintable} from \"./../../../interfaces/IERC20Mintable.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {Recoverable} from \"@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol\";\nimport {UsingUniversalForwarding} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol\";\nimport {MinterRole} from \"@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol\";\nimport {PolygonChildERC20} from \"./../PolygonChildERC20.sol\";\n\n/**\n * @title Child ERC20 Mock.\n */\ncontract PolygonChildERC20Mock is Recoverable, UsingUniversalForwarding, PolygonChildERC20, IERC20Mintable, MinterRole {\n    using ERC20Wrapper for IWrappedERC20;\n\n    uint256 internal _inEscrow;\n\n    constructor(\n        address[] memory recipients,\n        uint256[] memory values,\n        address childChainManager,\n        IForwarderRegistry forwarderRegistry,\n        address universalForwarder\n    )\n        PolygonChildERC20(\"Child ERC20 Mock\", \"CE20\", 18, childChainManager)\n        MinterRole(msg.sender)\n        UsingUniversalForwarding(forwarderRegistry, universalForwarder)\n    {\n        _batchMint(recipients, values);\n    }\n\n    //================================================ ERC20Metadata (admin) ================================================//\n\n    /**\n     * Sets the token metadata URI.\n     * @dev Reverts if not called by the contract owner.\n     * @param tokenURI_ the new token metadata URI.\n     */\n    function setTokenURI(string calldata tokenURI_) external {\n        _requireOwnership(_msgSender());\n        _tokenURI = tokenURI_;\n    }\n\n    //================================================ ERC20Mintable (admin) ================================================//\n\n    /// @inheritdoc IERC20Mintable\n    /// @dev Reverts if the sender is not a minter.\n    function mint(address to, uint256 value) public virtual override {\n        _requireMinter(_msgSender());\n        _mint(to, value);\n    }\n\n    /// @inheritdoc IERC20Mintable\n    /// @dev Reverts if the sender is not a minter.\n    function batchMint(address[] memory recipients, uint256[] memory values) public virtual override {\n        _requireMinter(_msgSender());\n        _batchMint(recipients, values);\n    }\n\n    //================================================== PolygonChildERC20 ==================================================//\n\n    /// @inheritdoc PolygonChildERC20\n    function deposit(address user, bytes calldata depositData) public virtual override {\n        _inEscrow -= abi.decode(depositData, (uint256));\n        super.deposit(user, depositData);\n    }\n\n    /// @inheritdoc PolygonChildERC20\n    function withdraw(uint256 amount) public virtual override {\n        _inEscrow += amount;\n        super.withdraw(amount);\n    }\n\n    /// @inheritdoc PolygonChildERC20\n    function onERC20Received(\n        address operator,\n        address from,\n        uint256 amount,\n        bytes calldata data\n    ) public virtual override returns (bytes4) {\n        _inEscrow += amount;\n        return super.onERC20Received(operator, from, amount, data);\n    }\n\n    //===================================================== Recoverable =====================================================//\n\n    /// @inheritdoc Recoverable\n    /// @dev Reverts if one of `tokens` is this contract and if the amount being recovered corresponds to escrowed tokens for bridging.\n    function recoverERC20s(\n        address[] calldata accounts,\n        address[] calldata tokens,\n        uint256[] calldata amounts\n    ) external virtual override {\n        _requireOwnership(_msgSender());\n        uint256 length = accounts.length;\n        require(length == tokens.length && length == amounts.length, \"Recov: inconsistent arrays\");\n        for (uint256 i = 0; i != length; ++i) {\n            address token = tokens[i];\n            uint256 amount = amounts[i];\n            if (token == address(this)) {\n                uint256 recoverable = _balances[address(this)] - _inEscrow;\n                require(amount <= recoverable, \"Recov: insufficient balance\");\n            }\n            IWrappedERC20(token).wrappedTransfer(accounts[i], amount);\n        }\n    }\n\n    //======================================== Meta Transactions Internal Functions =========================================//\n\n    function _msgSender() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (address payable) {\n        return UsingUniversalForwarding._msgSender();\n    }\n\n    function _msgData() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (bytes memory ret) {\n        return UsingUniversalForwarding._msgData();\n    }\n\n    //=============================================== Mock Coverage Functions ===============================================//\n\n    function msgData() external view returns (bytes memory ret) {\n        return _msgData();\n    }\n}\n"
      },
      "contracts/token/ERC20/polygon/child/mocks/PolygonChildERC20BurnableMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IForwarderRegistry} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol\";\nimport {IERC20Mintable} from \"./../../../interfaces/IERC20Mintable.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {Recoverable} from \"@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol\";\nimport {UsingUniversalForwarding} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol\";\nimport {MinterRole} from \"@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol\";\nimport {PolygonChildERC20Burnable} from \"./../PolygonChildERC20Burnable.sol\";\n\n/**\n * @title Child ERC20 Burnable Mock.\n */\ncontract PolygonChildERC20BurnableMock is Recoverable, UsingUniversalForwarding, PolygonChildERC20Burnable, IERC20Mintable, MinterRole {\n    constructor(\n        address[] memory recipients,\n        uint256[] memory values,\n        address childChainManager,\n        IForwarderRegistry forwarderRegistry,\n        address universalForwarder\n    )\n        PolygonChildERC20Burnable(\"Child ERC20 Mock\", \"CE20\", 18, childChainManager)\n        MinterRole(msg.sender)\n        UsingUniversalForwarding(forwarderRegistry, universalForwarder)\n    {\n        _batchMint(recipients, values);\n    }\n\n    //================================================ ERC20Metadata (admin) ================================================//\n\n    /**\n     * Sets the token metadata URI.\n     * @dev Reverts if not called by the contract owner.\n     * @param tokenURI_ the new token metadata URI.\n     */\n    function setTokenURI(string calldata tokenURI_) external {\n        _requireOwnership(_msgSender());\n        _tokenURI = tokenURI_;\n    }\n\n    //================================================ ERC20Mintable (admin) ================================================//\n\n    /// @inheritdoc IERC20Mintable\n    /// @dev Reverts if the sender is not a minter.\n    function mint(address to, uint256 value) public virtual override {\n        _requireMinter(_msgSender());\n        _mint(to, value);\n    }\n\n    /// @inheritdoc IERC20Mintable\n    /// @dev Reverts if the sender is not a minter.\n    function batchMint(address[] memory recipients, uint256[] memory values) public virtual override {\n        _requireMinter(_msgSender());\n        _batchMint(recipients, values);\n    }\n\n    //======================================== Meta Transactions Internal Functions =========================================//\n\n    function _msgSender() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (address payable) {\n        return UsingUniversalForwarding._msgSender();\n    }\n\n    function _msgData() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (bytes memory ret) {\n        return UsingUniversalForwarding._msgData();\n    }\n\n    //=============================================== Mock Coverage Functions ===============================================//\n\n    function msgData() external view returns (bytes memory ret) {\n        return _msgData();\n    }\n}\n"
      },
      "contracts/token/ERC20/polygon/child/PolygonChildERC20Burnable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC20Receiver} from \"./../../interfaces/IERC20Receiver.sol\";\nimport {ERC20Receiver, PolygonChildERC20Base} from \"./PolygonChildERC20Base.sol\";\nimport {ERC20Burnable} from \"./../../ERC20Burnable.sol\";\n\n/**\n * @title ERC20 Fungible Token Contract, Child Burnable version (for Polygon).\n * Polygon bridging ERC20 child token which burns the token and emits a `Withdrawn(address account, uint256 value)` event on exit.\n * @dev This contract should be deployed on the Child Chain (Polygon).\n */\ncontract PolygonChildERC20Burnable is ERC20Burnable, PolygonChildERC20Base {\n    constructor(\n        string memory name_,\n        string memory symbol_,\n        uint8 decimals_,\n        address childChainManager\n    ) ERC20Burnable(name_, symbol_, decimals_) PolygonChildERC20Base(childChainManager) {}\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC20Burnable, ERC20Receiver) returns (bool) {\n        return ERC20Burnable.supportsInterface(interfaceId) || ERC20Receiver.supportsInterface(interfaceId);\n    }\n\n    //===================================================== ChildToken ======================================================//\n\n    /**\n     * Called when tokens have been deposited on the root chain.\n     * @dev Should handle deposit by minting the required amount for user.\n     * @dev Reverts if not sent by the depositor (ChildChainManager).\n     * @param user address for whom deposit has been done.\n     * @param depositData abi encoded amount.\n     */\n    function deposit(address user, bytes calldata depositData) external override {\n        _requireDepositorRole(_msgSender());\n        uint256 amount = abi.decode(depositData, (uint256));\n        _mint(user, amount);\n    }\n\n    /**\n     * Called when user wants to withdraw tokens back to the root chain.\n     * @dev Should burn user's tokens. This transaction will be verified when exiting on the root chain.\n     * @dev Emits a {Withdrawn} event.\n     * @param amount amount of tokens to withdraw\n     */\n    function withdraw(uint256 amount) external {\n        address sender = _msgSender();\n        _burnFrom(sender, amount);\n        emit Withdrawn(sender, amount);\n    }\n\n    //==================================================== ERC20Receiver ====================================================//\n\n    /**\n     * Called when user wants to withdraw tokens back to the root chain (no pre-approval required).\n     * @dev Should burn user's tokens. This transaction will be verified when exiting on root chain.\n     * @dev Reverts if the sender is not this contract.\n     * @dev Emits a {Withdrawn} event.\n     * @inheritdoc IERC20Receiver\n     */\n    function onERC20Received(\n        address, /*operator*/\n        address from,\n        uint256 amount,\n        bytes calldata /*data*/\n    ) external virtual override returns (bytes4) {\n        require(msg.sender == address(this), \"ChildERC20: wrong sender\");\n        _burn(address(this), amount);\n        emit Withdrawn(from, amount);\n        return _ERC20_RECEIVED;\n    }\n}\n"
      },
      "contracts/token/ERC20/ERC20Burnable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC20Burnable} from \"./interfaces/IERC20Burnable.sol\";\nimport {ERC20} from \"./ERC20.sol\";\n\n/**\n * @title ERC20 Fungible Token Contract, Burnable version.\n */\ncontract ERC20Burnable is ERC20, IERC20Burnable {\n    constructor(\n        string memory name,\n        string memory symbol,\n        uint8 decimals\n    ) ERC20(name, symbol, decimals) {}\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC20Burnable).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    //==================================================== ERC20Burnable ====================================================//\n\n    /// @inheritdoc IERC20Burnable\n    function burn(uint256 amount) external virtual override returns (bool) {\n        _burn(_msgSender(), amount);\n        return true;\n    }\n\n    /// @inheritdoc IERC20Burnable\n    function burnFrom(address from, uint256 value) external virtual override returns (bool) {\n        _burnFrom(from, value);\n        return true;\n    }\n\n    /// @inheritdoc IERC20Burnable\n    function batchBurnFrom(address[] calldata owners, uint256[] calldata values) external virtual override returns (bool) {\n        _batchBurnFrom(owners, values);\n        return true;\n    }\n}\n"
      },
      "contracts/token/ERC20/interfaces/IERC20Burnable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC20 Token Standard, optional extension: Burnable.\n * @dev See https://eips.ethereum.org/EIPS/eip-20\n * @dev Note: the ERC-165 identifier for this interface is 0x3b5a0bf8.\n */\ninterface IERC20Burnable {\n    /**\n     * Burns `value` tokens from the message sender, decreasing the total supply.\n     * @dev Reverts if the sender owns less than `value` tokens.\n     * @dev Emits a {IERC20-Transfer} event with `_to` set to the zero address.\n     * @param value the amount of tokens to burn.\n     * @return a boolean value indicating whether the operation succeeded.\n     */\n    function burn(uint256 value) external returns (bool);\n\n    /**\n     * Burns `value` tokens from `from`, using the allowance mechanism and decreasing the total supply.\n     * @dev Reverts if `from` owns less than `value` tokens.\n     * @dev Reverts if `from` is not the sender and the sender is not approved by `from` for at least `value` tokens.\n     * @dev Emits a {IERC20-Transfer} event with `_to` set to the zero address.\n     * @dev Emits a {IERC20-Approval} event if `from` is not the sender (non-standard).\n     * @param from the account to burn the tokens from.\n     * @param value the amount of tokens to burn.\n     * @return a boolean value indicating whether the operation succeeded.\n     */\n    function burnFrom(address from, uint256 value) external returns (bool);\n\n    /**\n     * Burns `values` tokens from `owners`, decreasing the total supply.\n     * @dev Reverts if one `owners` and `values` have different lengths.\n     * @dev Reverts if one of `owners` owns less than the corresponding `value` tokens.\n     * @dev Reverts if one of `owners` is not the sender and the sender is not approved the corresponding `owner` and `value`.\n     * @dev Emits a {IERC20-Transfer} event with `_to` set to the zero address.\n     * @dev Emits a {IERC20-Approval} event (non-standard).\n     * @param owners the accounts to burn the tokens from.\n     * @param values the amounts of tokens to burn.\n     * @return a boolean value indicating whether the operation succeeded.\n     */\n    function batchBurnFrom(address[] calldata owners, uint256[] calldata values) external returns (bool);\n}\n"
      },
      "contracts/token/ERC20/mocks/ERC20BurnableMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IForwarderRegistry} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol\";\nimport {IERC20Mintable} from \"./../interfaces/IERC20Mintable.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {Recoverable} from \"@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol\";\nimport {UsingUniversalForwarding} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol\";\nimport {MinterRole} from \"@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol\";\nimport {ERC20Burnable} from \"./../ERC20Burnable.sol\";\n\n/**\n * @title ERC20 Burnable Mock.\n */\ncontract ERC20BurnableMock is Recoverable, UsingUniversalForwarding, ERC20Burnable, IERC20Mintable, MinterRole {\n    constructor(\n        address[] memory recipients,\n        uint256[] memory values,\n        IForwarderRegistry forwarderRegistry,\n        address universalForwarder\n    ) ERC20Burnable(\"ERC20 Mock\", \"E20\", 18) MinterRole(msg.sender) UsingUniversalForwarding(forwarderRegistry, universalForwarder) {\n        _batchMint(recipients, values);\n    }\n\n    //================================================ ERC20Metadata (admin) ================================================//\n\n    /**\n     * Sets the token metadata URI.\n     * @dev Reverts if not called by the contract owner.\n     * @param tokenURI_ the new token metadata URI.\n     */\n    function setTokenURI(string calldata tokenURI_) external {\n        _requireOwnership(_msgSender());\n        _tokenURI = tokenURI_;\n    }\n\n    //================================================ ERC20Mintable (admin) ================================================//\n\n    /// @inheritdoc IERC20Mintable\n    /// @dev Reverts if the sender is not a minter.\n    function mint(address to, uint256 value) public virtual override {\n        _requireMinter(_msgSender());\n        _mint(to, value);\n    }\n\n    /// @inheritdoc IERC20Mintable\n    /// @dev Reverts if the sender is not a minter.\n    function batchMint(address[] memory recipients, uint256[] memory values) public virtual override {\n        _requireMinter(_msgSender());\n        _batchMint(recipients, values);\n    }\n\n    //======================================== Meta Transactions Internal Functions =========================================//\n\n    function _msgSender() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (address payable) {\n        return UsingUniversalForwarding._msgSender();\n    }\n\n    function _msgData() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (bytes memory ret) {\n        return UsingUniversalForwarding._msgData();\n    }\n\n    //=============================================== Mock Coverage Functions ===============================================//\n\n    function msgData() external view returns (bytes memory ret) {\n        return _msgData();\n    }\n}\n"
      },
      "contracts/token/ERC1155/mocks/ERC1155InventoryPausableMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IForwarderRegistry} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol\";\nimport {IERC1155} from \"./../interfaces/IERC1155.sol\";\nimport {IERC1155InventoryBurnable} from \"./../interfaces/IERC1155InventoryBurnable.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {UsingUniversalForwarding} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol\";\nimport {ERC1155InventoryBurnableMock} from \"./ERC1155InventoryBurnableMock.sol\";\nimport {Pausable} from \"@animoca/ethereum-contracts-core/contracts/lifecycle/Pausable.sol\";\n\n/**\n * @title ERC1155 Inventory Pausable Mock.\n * @dev The minting functions are usable while paused as it can be useful for contract maintenance such as contract migration.\n */\ncontract ERC1155InventoryPausableMock is Pausable, ERC1155InventoryBurnableMock {\n    constructor(\n        IForwarderRegistry forwarderRegistry,\n        address universalForwarder,\n        uint256 collectionMaskLength\n    ) ERC1155InventoryBurnableMock(forwarderRegistry, universalForwarder, collectionMaskLength) Pausable(false) {}\n\n    //================================================== Pausable (admin) ===================================================//\n\n    /// @dev Reverts if the sender is not the contract owner.\n    function pause() external virtual {\n        _requireOwnership(_msgSender());\n        _pause();\n    }\n\n    /// @dev Reverts if the sender is not the contract owner.\n    function unpause() external virtual {\n        _requireOwnership(_msgSender());\n        _unpause();\n    }\n\n    //======================================================= ERC1155 =======================================================//\n\n    /// @inheritdoc IERC1155\n    /// @dev Reverts if the contract is paused.\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes memory data\n    ) public virtual override {\n        _requireNotPaused();\n        super.safeTransferFrom(from, to, id, value, data);\n    }\n\n    /// @inheritdoc IERC1155\n    /// @dev Reverts if the contract is paused.\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory values,\n        bytes memory data\n    ) public virtual override {\n        _requireNotPaused();\n        super.safeBatchTransferFrom(from, to, ids, values, data);\n    }\n\n    //============================================== ERC1155InventoryBurnable ===============================================//\n\n    /// @inheritdoc IERC1155InventoryBurnable\n    /// @dev Reverts if the contract is paused.\n    function burnFrom(\n        address from,\n        uint256 id,\n        uint256 value\n    ) public virtual override {\n        _requireNotPaused();\n        super.burnFrom(from, id, value);\n    }\n\n    /// @inheritdoc IERC1155InventoryBurnable\n    /// @dev Reverts if the contract is paused.\n    function batchBurnFrom(\n        address from,\n        uint256[] memory ids,\n        uint256[] memory values\n    ) public virtual override {\n        _requireNotPaused();\n        super.batchBurnFrom(from, ids, values);\n    }\n\n    //======================================== Meta Transactions Internal Functions =========================================//\n\n    function _msgSender() internal view virtual override(ManagedIdentity, ERC1155InventoryBurnableMock) returns (address payable) {\n        return UsingUniversalForwarding._msgSender();\n    }\n\n    function _msgData() internal view virtual override(ManagedIdentity, ERC1155InventoryBurnableMock) returns (bytes memory ret) {\n        return UsingUniversalForwarding._msgData();\n    }\n}\n"
      },
      "contracts/token/ERC1155/mocks/ERC1155InventoryBurnableMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IForwarderRegistry} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol\";\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC1155MetadataURI} from \"./../interfaces/IERC1155MetadataURI.sol\";\nimport {IERC1155InventoryMintable} from \"./../interfaces/IERC1155InventoryMintable.sol\";\nimport {IERC1155InventoryCreator} from \"./../interfaces/IERC1155InventoryCreator.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {Recoverable} from \"@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol\";\nimport {UsingUniversalForwarding} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol\";\nimport {MinterRole} from \"@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol\";\nimport {ERC1155InventoryBurnable} from \"./../ERC1155InventoryBurnable.sol\";\nimport {NFTBaseMetadataURI} from \"./../../../metadata/NFTBaseMetadataURI.sol\";\n\n/**\n * @title ERC1155 Inventory Burnable Mock.\n */\ncontract ERC1155InventoryBurnableMock is\n    Recoverable,\n    UsingUniversalForwarding,\n    ERC1155InventoryBurnable,\n    IERC1155InventoryMintable,\n    IERC1155InventoryCreator,\n    NFTBaseMetadataURI,\n    MinterRole\n{\n    constructor(\n        IForwarderRegistry forwarderRegistry,\n        address universalForwarder,\n        uint256 collectionMaskLength\n    ) ERC1155InventoryBurnable(collectionMaskLength) UsingUniversalForwarding(forwarderRegistry, universalForwarder) MinterRole(msg.sender) {}\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC1155InventoryCreator).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    //================================================= ERC1155MetadataURI ==================================================//\n\n    /// @inheritdoc IERC1155MetadataURI\n    function uri(uint256 id) external view virtual override returns (string memory) {\n        return _uri(id);\n    }\n\n    //=============================================== ERC1155InventoryCreator ===============================================//\n\n    /// @inheritdoc IERC1155InventoryCreator\n    function creator(uint256 collectionId) external view override returns (address) {\n        return _creator(collectionId);\n    }\n\n    //=========================================== ERC1155InventoryCreator (admin) ===========================================//\n\n    /**\n     * Creates a collection.\n     * @dev Reverts if the sender is not the contract owner.\n     * @dev Reverts if `collectionId` does not represent a collection.\n     * @dev Reverts if `collectionId` has already been created.\n     * @dev Emits a {IERC1155Inventory-CollectionCreated} event.\n     * @param collectionId Identifier of the collection.\n     */\n    function createCollection(uint256 collectionId) external {\n        _requireOwnership(_msgSender());\n        _createCollection(collectionId);\n    }\n\n    //============================================== ERC1155InventoryMintable ===============================================//\n\n    /// @inheritdoc IERC1155InventoryMintable\n    /// @dev Reverts if the sender is not a minter.\n    function safeMint(\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes memory data\n    ) public virtual override {\n        _requireMinter(_msgSender());\n        _safeMint(to, id, value, data);\n    }\n\n    /// @inheritdoc IERC1155InventoryMintable\n    /// @dev Reverts if the sender is not a minter.\n    function safeBatchMint(\n        address to,\n        uint256[] memory ids,\n        uint256[] memory values,\n        bytes memory data\n    ) public virtual override {\n        _requireMinter(_msgSender());\n        _safeBatchMint(to, ids, values, data);\n    }\n\n    //======================================== Meta Transactions Internal Functions =========================================//\n\n    function _msgSender() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (address payable) {\n        return UsingUniversalForwarding._msgSender();\n    }\n\n    function _msgData() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (bytes memory ret) {\n        return UsingUniversalForwarding._msgData();\n    }\n\n    //=============================================== Mock Coverage Functions ===============================================//\n\n    function msgData() external view returns (bytes memory ret) {\n        return _msgData();\n    }\n}\n"
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryMintable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Inventory, optional extension: Mintable.\n * @dev See https://eips.ethereum.org/EIPS/eip-1155\n */\ninterface IERC1155InventoryMintable {\n    /**\n     * Safely mints some token.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if `id` is not a token.\n     * @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n     * @dev Reverts if `id` represents a Non-Fungible Token which has already been minted.\n     * @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n     * @dev Reverts if `id` represents a Fungible Token and there is an overflow of supply.\n     * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155Received} fails or is refused.\n     * @dev Emits an {IERC1155-TransferSingle} event.\n     * @param to Address of the new token owner.\n     * @param id Identifier of the token to mint.\n     * @param value Amount of token to mint.\n     * @param data Optional data to send along to a receiver contract.\n     */\n    function safeMint(\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    ) external;\n\n    /**\n     * Safely mints a batch of tokens.\n     * @dev Reverts if `ids` and `values` have different lengths.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if one of `ids` is not a token.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token and its paired value is not 1.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token which has already been minted.\n     * @dev Reverts if one of `ids` represents a Fungible Token and its paired value is 0.\n     * @dev Reverts if one of `ids` represents a Fungible Token and there is an overflow of supply.\n     * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n     * @dev Emits an {IERC1155-TransferBatch} event.\n     * @param to Address of the new tokens owner.\n     * @param ids Identifiers of the tokens to mint.\n     * @param values Amounts of tokens to mint.\n     * @param data Optional data to send along to a receiver contract.\n     */\n    function safeBatchMint(\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external;\n}\n"
      },
      "contracts/token/ERC1155/ERC1155InventoryBurnable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {ERC1155InventoryIdentifiersLib} from \"./ERC1155InventoryIdentifiersLib.sol\";\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC1155InventoryBurnable} from \"./interfaces/IERC1155InventoryBurnable.sol\";\nimport {ERC1155Inventory} from \"./ERC1155Inventory.sol\";\n\n/**\n * @title ERC1155Inventory, burnable version.\n * @dev The function `uri(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`.\n */\nabstract contract ERC1155InventoryBurnable is IERC1155InventoryBurnable, ERC1155Inventory {\n    using ERC1155InventoryIdentifiersLib for uint256;\n\n    constructor(uint256 collectionMaskLength) ERC1155Inventory(collectionMaskLength) {}\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC1155InventoryBurnable).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    //============================================== ERC1155InventoryBurnable ===============================================//\n\n    /// @inheritdoc IERC1155InventoryBurnable\n    function burnFrom(\n        address from,\n        uint256 id,\n        uint256 value\n    ) public virtual override {\n        address sender = _msgSender();\n        require(_isOperatable(from, sender), \"Inventory: non-approved sender\");\n\n        if (id.isFungibleToken()) {\n            _burnFungible(from, id, value);\n        } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n            _burnNFT(from, id, value, false);\n        } else {\n            revert(\"Inventory: not a token id\");\n        }\n\n        emit TransferSingle(sender, from, address(0), id, value);\n    }\n\n    /// @inheritdoc IERC1155InventoryBurnable\n    function batchBurnFrom(\n        address from,\n        uint256[] memory ids,\n        uint256[] memory values\n    ) public virtual override {\n        uint256 length = ids.length;\n        require(length == values.length, \"Inventory: inconsistent arrays\");\n\n        address sender = _msgSender();\n        require(_isOperatable(from, sender), \"Inventory: non-approved sender\");\n\n        uint256 nfCollectionId;\n        uint256 nfCollectionCount;\n        for (uint256 i; i != length; ++i) {\n            uint256 id = ids[i];\n            uint256 value = values[i];\n            if (id.isFungibleToken()) {\n                _burnFungible(from, id, value);\n            } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n                _burnNFT(from, id, value, true);\n                uint256 nextCollectionId = id.getNonFungibleCollection(_collectionMaskLength);\n                if (nfCollectionId == 0) {\n                    nfCollectionId = nextCollectionId;\n                    nfCollectionCount = 1;\n                } else {\n                    if (nextCollectionId != nfCollectionId) {\n                        _balances[nfCollectionId][from] -= nfCollectionCount;\n                        _supplies[nfCollectionId] -= nfCollectionCount;\n                        nfCollectionId = nextCollectionId;\n                        nfCollectionCount = 1;\n                    } else {\n                        ++nfCollectionCount;\n                    }\n                }\n            } else {\n                revert(\"Inventory: not a token id\");\n            }\n        }\n\n        if (nfCollectionId != 0) {\n            _balances[nfCollectionId][from] -= nfCollectionCount;\n            _supplies[nfCollectionId] -= nfCollectionCount;\n        }\n\n        emit TransferBatch(sender, from, address(0), ids, values);\n    }\n\n    //============================================== Helper Internal Functions ==============================================//\n\n    function _burnFungible(\n        address from,\n        uint256 id,\n        uint256 value\n    ) internal {\n        require(value != 0, \"Inventory: zero value\");\n        uint256 balance = _balances[id][from];\n        require(balance >= value, \"Inventory: not enough balance\");\n        _balances[id][from] = balance - value;\n        // Cannot underflow\n        _supplies[id] -= value;\n    }\n\n    function _burnNFT(\n        address from,\n        uint256 id,\n        uint256 value,\n        bool isBatch\n    ) internal {\n        require(value == 1, \"Inventory: wrong NFT value\");\n        require(from == address(uint160(_owners[id])), \"Inventory: non-owned NFT\");\n        _owners[id] = _BURNT_NFT_OWNER;\n\n        if (!isBatch) {\n            uint256 collectionId = id.getNonFungibleCollection(_collectionMaskLength);\n            // cannot underflow as balance is confirmed through ownership\n            --_balances[collectionId][from];\n            // Cannot underflow\n            --_supplies[collectionId];\n        }\n    }\n}\n"
      },
      "contracts/token/ERC1155/ERC1155Inventory.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {AddressIsContract} from \"@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol\";\nimport {ERC1155InventoryIdentifiersLib} from \"./ERC1155InventoryIdentifiersLib.sol\";\nimport {IERC1155Inventory} from \"./interfaces/IERC1155Inventory.sol\";\nimport {ERC1155InventoryBase} from \"./ERC1155InventoryBase.sol\";\n\n/**\n * @title ERC1155Inventory, a contract which manages up to multiple Collections of Fungible and Non-Fungible Tokens.\n * @dev The function `uri(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`.\n */\nabstract contract ERC1155Inventory is ERC1155InventoryBase {\n    using AddressIsContract for address;\n    using ERC1155InventoryIdentifiersLib for uint256;\n\n    constructor(uint256 collectionMaskLength) ERC1155InventoryBase(collectionMaskLength) {}\n\n    //======================================================= ERC1155 =======================================================//\n\n    /// @inheritdoc IERC1155Inventory\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes memory data\n    ) public virtual override {\n        address sender = _msgSender();\n        require(to != address(0), \"Inventory: transfer to zero\");\n        require(_isOperatable(from, sender), \"Inventory: non-approved sender\");\n\n        if (id.isFungibleToken()) {\n            _transferFungible(from, to, id, value);\n        } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n            _transferNFT(from, to, id, value, false);\n        } else {\n            revert(\"Inventory: not a token id\");\n        }\n\n        emit TransferSingle(sender, from, to, id, value);\n        if (to.isContract()) {\n            _callOnERC1155Received(from, to, id, value, data);\n        }\n    }\n\n    /// @inheritdoc IERC1155Inventory\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory values,\n        bytes memory data\n    ) public virtual override {\n        // internal function to avoid stack too deep error\n        _safeBatchTransferFrom(from, to, ids, values, data);\n    }\n\n    //============================================ High-level Internal Functions ============================================//\n\n    function _safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory values,\n        bytes memory data\n    ) internal {\n        require(to != address(0), \"Inventory: transfer to zero\");\n        uint256 length = ids.length;\n        require(length == values.length, \"Inventory: inconsistent arrays\");\n        address sender = _msgSender();\n        require(_isOperatable(from, sender), \"Inventory: non-approved sender\");\n\n        uint256 nfCollectionId;\n        uint256 nfCollectionCount;\n        for (uint256 i; i != length; ++i) {\n            uint256 id = ids[i];\n            uint256 value = values[i];\n            if (id.isFungibleToken()) {\n                _transferFungible(from, to, id, value);\n            } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n                _transferNFT(from, to, id, value, true);\n                uint256 nextCollectionId = id.getNonFungibleCollection(_collectionMaskLength);\n                if (nfCollectionId == 0) {\n                    nfCollectionId = nextCollectionId;\n                    nfCollectionCount = 1;\n                } else {\n                    if (nextCollectionId != nfCollectionId) {\n                        _transferNFTUpdateCollection(from, to, nfCollectionId, nfCollectionCount);\n                        nfCollectionId = nextCollectionId;\n                        nfCollectionCount = 1;\n                    } else {\n                        ++nfCollectionCount;\n                    }\n                }\n            } else {\n                revert(\"Inventory: not a token id\");\n            }\n        }\n\n        if (nfCollectionId != 0) {\n            _transferNFTUpdateCollection(from, to, nfCollectionId, nfCollectionCount);\n        }\n\n        emit TransferBatch(sender, from, to, ids, values);\n        if (to.isContract()) {\n            _callOnERC1155BatchReceived(from, to, ids, values, data);\n        }\n    }\n\n    function _safeMint(\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes memory data\n    ) internal {\n        require(to != address(0), \"Inventory: mint to zero\");\n\n        if (id.isFungibleToken()) {\n            _mintFungible(to, id, value);\n        } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n            _mintNFT(to, id, value, false);\n        } else {\n            revert(\"Inventory: not a token id\");\n        }\n\n        emit TransferSingle(_msgSender(), address(0), to, id, value);\n        if (to.isContract()) {\n            _callOnERC1155Received(address(0), to, id, value, data);\n        }\n    }\n\n    function _safeBatchMint(\n        address to,\n        uint256[] memory ids,\n        uint256[] memory values,\n        bytes memory data\n    ) internal virtual {\n        require(to != address(0), \"Inventory: mint to zero\");\n        uint256 length = ids.length;\n        require(length == values.length, \"Inventory: inconsistent arrays\");\n\n        uint256 nfCollectionId;\n        uint256 nfCollectionCount;\n        for (uint256 i; i != length; ++i) {\n            uint256 id = ids[i];\n            uint256 value = values[i];\n            if (id.isFungibleToken()) {\n                _mintFungible(to, id, value);\n            } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n                _mintNFT(to, id, value, true);\n                uint256 nextCollectionId = id.getNonFungibleCollection(_collectionMaskLength);\n                if (nfCollectionId == 0) {\n                    nfCollectionId = nextCollectionId;\n                    nfCollectionCount = 1;\n                } else {\n                    if (nextCollectionId != nfCollectionId) {\n                        _balances[nfCollectionId][to] += nfCollectionCount;\n                        _supplies[nfCollectionId] += nfCollectionCount;\n                        nfCollectionId = nextCollectionId;\n                        nfCollectionCount = 1;\n                    } else {\n                        ++nfCollectionCount;\n                    }\n                }\n            } else {\n                revert(\"Inventory: not a token id\");\n            }\n        }\n\n        if (nfCollectionId != 0) {\n            _balances[nfCollectionId][to] += nfCollectionCount;\n            _supplies[nfCollectionId] += nfCollectionCount;\n        }\n\n        emit TransferBatch(_msgSender(), address(0), to, ids, values);\n        if (to.isContract()) {\n            _callOnERC1155BatchReceived(address(0), to, ids, values, data);\n        }\n    }\n\n    //============================================== Helper Internal Functions ==============================================//\n\n    function _mintFungible(\n        address to,\n        uint256 id,\n        uint256 value\n    ) internal {\n        require(value != 0, \"Inventory: zero value\");\n        uint256 supply = _supplies[id];\n        uint256 newSupply = supply + value;\n        require(newSupply > supply, \"Inventory: supply overflow\");\n        _supplies[id] = newSupply;\n        // cannot overflow as any balance is bounded up by the supply which cannot overflow\n        _balances[id][to] += value;\n    }\n\n    function _mintNFT(\n        address to,\n        uint256 id,\n        uint256 value,\n        bool isBatch\n    ) internal {\n        require(value == 1, \"Inventory: wrong NFT value\");\n        require(_owners[id] == 0, \"Inventory: existing/burnt NFT\");\n\n        _owners[id] = uint256(uint160(to));\n\n        if (!isBatch) {\n            uint256 collectionId = id.getNonFungibleCollection(_collectionMaskLength);\n            // it is virtually impossible that a Non-Fungible Collection supply\n            // overflows due to the cost of minting individual tokens\n            ++_supplies[collectionId];\n            // cannot overflow as supply cannot overflow\n            ++_balances[collectionId][to];\n        }\n    }\n\n    function _transferFungible(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value\n    ) internal {\n        require(value != 0, \"Inventory: zero value\");\n        uint256 balance = _balances[id][from];\n        require(balance >= value, \"Inventory: not enough balance\");\n        if (from != to) {\n            _balances[id][from] = balance - value;\n            // cannot overflow as supply cannot overflow\n            _balances[id][to] += value;\n        }\n    }\n\n    function _transferNFT(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bool isBatch\n    ) internal {\n        require(value == 1, \"Inventory: wrong NFT value\");\n        require(from == address(uint160(_owners[id])), \"Inventory: non-owned NFT\");\n        _owners[id] = uint256(uint160(to));\n        if (!isBatch) {\n            uint256 collectionId = id.getNonFungibleCollection(_collectionMaskLength);\n            // cannot underflow as balance is verified through ownership\n            _balances[collectionId][from] -= 1;\n            // cannot overflow as supply cannot overflow\n            _balances[collectionId][to] += 1;\n        }\n    }\n\n    function _transferNFTUpdateCollection(\n        address from,\n        address to,\n        uint256 collectionId,\n        uint256 amount\n    ) internal virtual {\n        if (from != to) {\n            // cannot underflow as balance is verified through ownership\n            _balances[collectionId][from] -= amount;\n            // cannot overflow as supply cannot overflow\n            _balances[collectionId][to] += amount;\n        }\n    }\n}\n"
      },
      "contracts/token/ERC1155/mocks/ERC1155InventoryMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IForwarderRegistry} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol\";\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC1155MetadataURI} from \"./../interfaces/IERC1155MetadataURI.sol\";\nimport {IERC1155InventoryMintable} from \"./../interfaces/IERC1155InventoryMintable.sol\";\nimport {IERC1155InventoryCreator} from \"./../interfaces/IERC1155InventoryCreator.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {Recoverable} from \"@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol\";\nimport {UsingUniversalForwarding} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol\";\nimport {MinterRole} from \"@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol\";\nimport {ERC1155Inventory} from \"./../ERC1155Inventory.sol\";\nimport {NFTBaseMetadataURI} from \"./../../../metadata/NFTBaseMetadataURI.sol\";\n\n/**\n * @title ERC1155 Inventory Mock.\n */\ncontract ERC1155InventoryMock is\n    Recoverable,\n    UsingUniversalForwarding,\n    ERC1155Inventory,\n    IERC1155InventoryMintable,\n    IERC1155InventoryCreator,\n    NFTBaseMetadataURI,\n    MinterRole\n{\n    constructor(\n        IForwarderRegistry forwarderRegistry,\n        address universalForwarder,\n        uint256 collectionMaskLength\n    ) ERC1155Inventory(collectionMaskLength) UsingUniversalForwarding(forwarderRegistry, universalForwarder) MinterRole(msg.sender) {}\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC1155InventoryCreator).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    //================================================= ERC1155MetadataURI ==================================================//\n\n    /// @inheritdoc IERC1155MetadataURI\n    function uri(uint256 id) external view virtual override returns (string memory) {\n        return _uri(id);\n    }\n\n    //=============================================== ERC1155InventoryCreator ===============================================//\n\n    /// @inheritdoc IERC1155InventoryCreator\n    function creator(uint256 collectionId) external view override returns (address) {\n        return _creator(collectionId);\n    }\n\n    //=========================================== ERC1155InventoryCreator (admin) ===========================================//\n\n    /**\n     * Creates a collection.\n     * @dev Reverts if the sender is not the contract owner.\n     * @dev Reverts if `collectionId` does not represent a collection.\n     * @dev Reverts if `collectionId` has already been created.\n     * @dev Emits a {IERC1155Inventory-CollectionCreated} event.\n     * @param collectionId Identifier of the collection.\n     */\n    function createCollection(uint256 collectionId) external {\n        _requireOwnership(_msgSender());\n        _createCollection(collectionId);\n    }\n\n    //============================================== ERC1155InventoryMintable ===============================================//\n\n    /// @inheritdoc IERC1155InventoryMintable\n    /// @dev Reverts if the sender is not a minter.\n    function safeMint(\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes memory data\n    ) public virtual override {\n        _requireMinter(_msgSender());\n        _safeMint(to, id, value, data);\n    }\n\n    /// @inheritdoc IERC1155InventoryMintable\n    /// @dev Reverts if the sender is not a minter.\n    function safeBatchMint(\n        address to,\n        uint256[] memory ids,\n        uint256[] memory values,\n        bytes memory data\n    ) public virtual override {\n        _requireMinter(_msgSender());\n        _safeBatchMint(to, ids, values, data);\n    }\n\n    //======================================== Meta Transactions Internal Functions =========================================//\n\n    function _msgSender() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (address payable) {\n        return UsingUniversalForwarding._msgSender();\n    }\n\n    function _msgData() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (bytes memory ret) {\n        return UsingUniversalForwarding._msgData();\n    }\n\n    //=============================================== Mock Coverage Functions ===============================================//\n\n    function msgData() external view returns (bytes memory ret) {\n        return _msgData();\n    }\n}\n"
      },
      "contracts/token/ERC20/mocks/ERC20ReceiverMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IERC20Receiver} from \"./../interfaces/IERC20Receiver.sol\";\nimport {ERC20Receiver} from \"./../ERC20Receiver.sol\";\n\n/**\n * @title ERC20 Receiver Mock.\n */\ncontract ERC20ReceiverMock is ERC20Receiver {\n    event ERC20Received(address sender, address from, uint256 value, bytes data, uint256 gas);\n\n    bool internal immutable _accept;\n    address internal immutable _tokenAddress;\n\n    constructor(bool accept, address tokenAddress) {\n        _accept = accept;\n        _tokenAddress = tokenAddress;\n    }\n\n    //==================================================== ERC20Receiver ====================================================//\n\n    /// @inheritdoc IERC20Receiver\n    function onERC20Received(\n        address sender,\n        address from,\n        uint256 value,\n        bytes memory data\n    ) public virtual override returns (bytes4) {\n        require(msg.sender == _tokenAddress, \"ERC20Receiver: wrong token\");\n        if (_accept) {\n            emit ERC20Received(sender, from, value, data, gasleft());\n            return _ERC20_RECEIVED;\n        } else {\n            return _ERC20_REJECTED;\n        }\n    }\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 2000
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "@animoca/ethereum-contracts-core/contracts/access/IERC173.sol": {
        "IERC173": {
          "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": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol": {
        "MinterRole": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner_",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterRemoved",
              "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"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "addMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isMinter",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506040516105083803806105088339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b03831690811782556040518392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506100878161008d565b506100dc565b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b61041d806100eb6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063986502751161005057806398650275146100b8578063aa271e1a146100c0578063f2fde38b146100fa57610067565b80638da5cb5b1461006c578063983b2d5614610090575b600080fd5b610074610120565b604080516001600160a01b039092168252519081900360200190f35b6100b6600480360360208110156100a657600080fd5b50356001600160a01b031661012f565b005b6100b661014b565b6100e6600480360360208110156100d657600080fd5b50356001600160a01b03166101a9565b604080519115158252519081900360200190f35b6100b66004803603602081101561011057600080fd5b50356001600160a01b03166101be565b6000546001600160a01b031690565b61013f61013a61022f565b610233565b61014881610311565b50565b600061015561022f565b905061016081610360565b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b60016020526000908152604090205460ff1681565b6101c961013a61022f565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b3390565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561026c57600080fd5b505afa158015610280573d6000803e3d6000fd5b505050506040513d602081101561029657600080fd5b50516001600160a01b0382811691161461014857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6001600160a01b03811660009081526001602052604090205460ff1661014857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fdfea2646970667358221220e556ef9bf78ce0fa8bbfb29556c57ff6a95083e27f9185209ee861316672d70264736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x508 CODESIZE SUB DUP1 PUSH2 0x508 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x87 DUP2 PUSH2 0x8D JUMP JUMPDEST POP PUSH2 0xDC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x41D DUP1 PUSH2 0xEB 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 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x98650275 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0xB8 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xC0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xFA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x90 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0x120 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB6 PUSH2 0x14B JUMP JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1BE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A PUSH2 0x22F JUMP JUMPDEST PUSH2 0x233 JUMP JUMPDEST PUSH2 0x148 DUP2 PUSH2 0x311 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x155 PUSH2 0x22F JUMP JUMPDEST SWAP1 POP PUSH2 0x160 DUP2 PUSH2 0x360 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1C9 PUSH2 0x13A PUSH2 0x22F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x280 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x148 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x148 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE5 JUMP 0xEF SWAP12 0xF7 DUP13 0xE0 STATICCALL DUP12 0xBF 0xB2 SWAP6 JUMP 0xC5 PUSH32 0xF6A95083E27F9185209EE861316672D70264736F6C6343000706003300000000 ",
              "sourceMap": "203:1173:1:-:0;;;422:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;422:79:1;960:6:2;:15;;-1:-1:-1;;;;;;960:15:2;-1:-1:-1;;;;;960:15:2;;;;;;;990:40;;422:79:1;;960:6:2;990:40;;960:6;;990:40;-1:-1:-1;476:18:1::1;487:6:::0;476:10:::1;:18::i;:::-;422:79:::0;203:1173;;1252:122;-1:-1:-1;;;;;1308:17:1;;;;;;1328:4;1308:17;;;;;;;;:24;;-1:-1:-1;;1308:24:1;;;;;;;1347:20;;;1308:17;1347:20;1252:122;:::o;203:1173::-;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100675760003560e01c8063986502751161005057806398650275146100b8578063aa271e1a146100c0578063f2fde38b146100fa57610067565b80638da5cb5b1461006c578063983b2d5614610090575b600080fd5b610074610120565b604080516001600160a01b039092168252519081900360200190f35b6100b6600480360360208110156100a657600080fd5b50356001600160a01b031661012f565b005b6100b661014b565b6100e6600480360360208110156100d657600080fd5b50356001600160a01b03166101a9565b604080519115158252519081900360200190f35b6100b66004803603602081101561011057600080fd5b50356001600160a01b03166101be565b6000546001600160a01b031690565b61013f61013a61022f565b610233565b61014881610311565b50565b600061015561022f565b905061016081610360565b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b60016020526000908152604090205460ff1681565b6101c961013a61022f565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b3390565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561026c57600080fd5b505afa158015610280573d6000803e3d6000fd5b505050506040513d602081101561029657600080fd5b50516001600160a01b0382811691161461014857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6001600160a01b03811660009081526001602052604090205460ff1661014857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fdfea2646970667358221220e556ef9bf78ce0fa8bbfb29556c57ff6a95083e27f9185209ee861316672d70264736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x98650275 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0xB8 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xC0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xFA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x90 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0x120 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB6 PUSH2 0x14B JUMP JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1BE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A PUSH2 0x22F JUMP JUMPDEST PUSH2 0x233 JUMP JUMPDEST PUSH2 0x148 DUP2 PUSH2 0x311 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x155 PUSH2 0x22F JUMP JUMPDEST SWAP1 POP PUSH2 0x160 DUP2 PUSH2 0x360 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1C9 PUSH2 0x13A PUSH2 0x22F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x280 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x148 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x148 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE5 JUMP 0xEF SWAP12 0xF7 DUP13 0xE0 STATICCALL DUP12 0xBF 0xB2 SWAP6 JUMP 0xC5 PUSH32 0xF6A95083E27F9185209EE861316672D70264736F6C6343000706003300000000 ",
              "sourceMap": "203:1173:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1114:94:2;;;:::i;:::-;;;;-1:-1:-1;;;;;1114:94:2;;;;;;;;;;;;;;694:120:1;;;;;;;;;;;;;;;;-1:-1:-1;694:120:1;-1:-1:-1;;;;;694:120:1;;:::i;:::-;;929:185;;;:::i;339:40::-;;;;;;;;;;;;;;;;-1:-1:-1;339:40:1;-1:-1:-1;;;;;339:40:1;;:::i;:::-;;;;;;;;;;;;;;;;;;1448:197:2;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;1114:94::-;1169:7;1195:6;-1:-1:-1;;;;;1195:6:2;1114:94;:::o;694:120:1:-;747:31;765:12;:10;:12::i;:::-;747:17;:31::i;:::-;788:19;799:7;788:10;:19::i;:::-;694:120;:::o;929:185::-;972:15;990:12;:10;:12::i;:::-;972:30;;1012:23;1027:7;1012:14;:23::i;:::-;-1:-1:-1;;;;;1045:17:1;;1065:5;1045:17;;;:8;:17;;;;;;:25;;-1:-1:-1;;1045:25:1;;;1085:22;;;1065:5;1085:22;929:185;:::o;339:40::-;;;;;;;;;;;;;;;:::o;1448:197:2:-;1527:31;1545:12;:10;:12::i;1527:31::-;1568:6;:17;;;;-1:-1:-1;;;;;1568:17:2;;;;;;;;;1600:38;;1568:17;;1621:6;;;1600:38;;1568:6;1600:38;1448:197;:::o;355:104:5:-;442:10;355:104;:::o;1770:136:2:-;1860:4;-1:-1:-1;;;;;1860:10:2;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1860:12:2;-1:-1:-1;;;;;1849:23:2;;;;;;1841:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:122:1;-1:-1:-1;;;;;1308:17:1;;;;;;1328:4;1308:17;;;;;;;;:24;;-1:-1:-1;;1308:24:1;;;;;;;1347:20;;;1308:17;1347:20;1252:122;:::o;1120:126::-;-1:-1:-1;;;;;1193:17:1;;;;;;:8;:17;;;;;;;;1185:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "addMinter(address)": "983b2d56",
              "isMinter(address)": "aa271e1a",
              "owner()": "8da5cb5b",
              "renounceMinter()": "98650275",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "@animoca/ethereum-contracts-core/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": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol": {
        "IERC165": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/lifecycle/Pausable.sol": {
        "Pausable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Paused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Unpaused",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "paused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "paused()": "5c975abb"
            }
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol": {
        "ManagedIdentity": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol": {
        "ERC20Wrapper": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b2b1ffb0faffec9d8e22248eaf5ed7aebb1ac9728cd36eb33e872d8b1a53963564736f6c63430007060033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID 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 0xB2 0xB1 SELFDESTRUCT 0xB0 STATICCALL SELFDESTRUCT 0xEC SWAP14 DUP15 0x22 0x24 DUP15 0xAF 0x5E 0xD7 0xAE 0xBB BYTE 0xC9 PUSH19 0x8CD36EB33E872D8B1A53963564736F6C634300 SMOD MOD STOP CALLER ",
              "sourceMap": "347:1672:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b2b1ffb0faffec9d8e22248eaf5ed7aebb1ac9728cd36eb33e872d8b1a53963564736f6c63430007060033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB2 0xB1 SELFDESTRUCT 0xB0 STATICCALL SELFDESTRUCT 0xEC SWAP14 DUP15 0x22 0x24 DUP15 0xAF 0x5E 0xD7 0xAE 0xBB BYTE 0xC9 PUSH19 0x8CD36EB33E872D8B1A53963564736F6C634300 SMOD MOD STOP CALLER ",
              "sourceMap": "347:1672:6:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        },
        "IWrappedERC20": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/utils/RLPReader.sol": {
        "RLPReader": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c5f63584258b19b9edd286aa91dc68a2c9a89e12b196ce7eb538c591067e03e64736f6c63430007060033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID 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 0x5F PUSH4 0x584258B1 SWAP12 SWAP15 0xDD 0x28 PUSH11 0xA91DC68A2C9A89E12B196C 0xE7 0xEB MSTORE8 DUP13 MSIZE LT PUSH8 0xE03E64736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "290:7775:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c5f63584258b19b9edd286aa91dc68a2c9a89e12b196ce7eb538c591067e03e64736f6c63430007060033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C 0x5F PUSH4 0x584258B1 SWAP12 SWAP15 0xDD 0x28 PUSH11 0xA91DC68A2C9A89E12B196C 0xE7 0xEB MSTORE8 DUP13 MSIZE LT PUSH8 0xE03E64736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "290:7775:7:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol": {
        "IRecoverableERC721": {
          "abi": [
            {
              "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        },
        "Recoverable": {
          "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": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC20s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "contracts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC721s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "recoverERC20s(address[],address[],uint256[])": "73c8a958",
              "recoverERC721s(address[],address[],uint256[])": "c3666c36",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol": {
        "AddressIsContract": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204a9e7fc4078023f55c3f89766f6a645879fd837d2aac7ff0b366db21e518320d64736f6c63430007060033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID 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 0x4A SWAP15 PUSH32 0xC4078023F55C3F89766F6A645879FD837D2AAC7FF0B366DB21E518320D64736F PUSH13 0x63430007060033000000000000 ",
              "sourceMap": "311:981:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204a9e7fc4078023f55c3f89766f6a645879fd837d2aac7ff0b366db21e518320d64736f6c63430007060033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4A SWAP15 PUSH32 0xC4078023F55C3F89766F6A645879FD837D2AAC7FF0B366DB21E518320D64736F PUSH13 0x63430007060033000000000000 ",
              "sourceMap": "311:981:9:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol": {
        "UInt256ToDecimalString": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1ff88616acba843796128f787cf7b5945f98a95e7bdcc8719aae1df2bb0a36c64736f6c63430007060033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID 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 LOG1 SELFDESTRUCT DUP9 PUSH2 0x6ACB 0xA8 NUMBER PUSH26 0x6128F787CF7B5945F98A95E7BDCC8719AAE1DF2BB0A36C64736F PUSH13 0x63430007060033000000000000 ",
              "sourceMap": "239:585:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1ff88616acba843796128f787cf7b5945f98a95e7bdcc8719aae1df2bb0a36c64736f6c63430007060033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG1 SELFDESTRUCT DUP9 PUSH2 0x6ACB 0xA8 NUMBER PUSH26 0x6128F787CF7B5945F98A95E7BDCC8719AAE1DF2BB0A36C64736F PUSH13 0x63430007060033000000000000 ",
              "sourceMap": "239:585:10:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/metadata/NFTBaseMetadataURI.sol": {
        "NFTBaseMetadataURI": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "baseMetadataURI",
                  "type": "string"
                }
              ],
              "name": "BaseMetadataURISet",
              "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"
            },
            {
              "inputs": [],
              "name": "baseMetadataURI",
              "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": "string",
                  "name": "baseMetadataURI_",
                  "type": "string"
                }
              ],
              "name": "setBaseMetadataURI",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "baseMetadataURI()": "5b2bd79e",
              "owner()": "8da5cb5b",
              "setBaseMetadataURI(string)": "7e518ec8",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "contracts/token/ERC1155/ERC1155Inventory.sol": {
        "ERC1155Inventory": {
          "abi": [
            {
              "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": "collectionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "fungible",
                  "type": "bool"
                }
              ],
              "name": "CollectionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "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": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "id",
                  "type": "uint256"
                }
              ],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "collectionOf(uint256)": "c7778baa",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isFungible(uint256)": "adebf6f2",
              "ownerOf(uint256)": "6352211e",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "totalSupply(uint256)": "bd85b039",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "contracts/token/ERC1155/ERC1155InventoryBase.sol": {
        "ERC1155InventoryBase": {
          "abi": [
            {
              "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": "collectionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "fungible",
                  "type": "bool"
                }
              ],
              "name": "CollectionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "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": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "id",
                  "type": "uint256"
                }
              ],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "collectionOf(uint256)": "c7778baa",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isFungible(uint256)": "adebf6f2",
              "ownerOf(uint256)": "6352211e",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "totalSupply(uint256)": "bd85b039",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "contracts/token/ERC1155/ERC1155InventoryBurnable.sol": {
        "ERC1155InventoryBurnable": {
          "abi": [
            {
              "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": "collectionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "fungible",
                  "type": "bool"
                }
              ],
              "name": "CollectionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "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": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "id",
                  "type": "uint256"
                }
              ],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "batchBurnFrom(address,uint256[],uint256[])": "80534934",
              "burnFrom(address,uint256,uint256)": "124d91e5",
              "collectionOf(uint256)": "c7778baa",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isFungible(uint256)": "adebf6f2",
              "ownerOf(uint256)": "6352211e",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "totalSupply(uint256)": "bd85b039",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol": {
        "ERC1155InventoryIdentifiersLib": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dc04d683a882089270bac047fa6c2c49ab8ee075c4a6bf0f6244813c092092ca64736f6c63430007060033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID 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 0xDC DIV 0xD6 DUP4 0xA8 DUP3 ADDMOD SWAP3 PUSH17 0xBAC047FA6C2C49AB8EE075C4A6BF0F6244 DUP2 EXTCODECOPY MULMOD KECCAK256 SWAP3 0xCA PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "564:873:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dc04d683a882089270bac047fa6c2c49ab8ee075c4a6bf0f6244813c092092ca64736f6c63430007060033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC DIV 0xD6 DUP4 0xA8 DUP3 ADDMOD SWAP3 PUSH17 0xBAC047FA6C2C49AB8EE075C4A6BF0F6244 DUP2 EXTCODECOPY MULMOD KECCAK256 SWAP3 0xCA PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "564:873:15:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/token/ERC1155/ERC1155TokenReceiver.sol": {
        "ERC1155TokenReceiver": {
          "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "contracts/token/ERC1155/interfaces/IERC1155.sol": {
        "IERC1155": {
          "abi": [
            {
              "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": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "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": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "isApprovedForAll(address,address)": "e985e9c5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465"
            }
          }
        }
      },
      "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol": {
        "IERC1155Inventory": {
          "abi": [
            {
              "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": "collectionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "fungible",
                  "type": "bool"
                }
              ],
              "name": "CollectionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "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": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "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": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "collectionOf(uint256)": "c7778baa",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isFungible(uint256)": "adebf6f2",
              "ownerOf(uint256)": "6352211e",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465"
            }
          }
        }
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryBurnable.sol": {
        "IERC1155InventoryBurnable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "batchBurnFrom(address,uint256[],uint256[])": "80534934",
              "burnFrom(address,uint256,uint256)": "124d91e5"
            }
          }
        }
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryCreator.sol": {
        "IERC1155InventoryCreator": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                }
              ],
              "name": "creator",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "creator(uint256)": "510b5158"
            }
          }
        }
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryFunctions.sol": {
        "IERC1155InventoryFunctions": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "collectionOf(uint256)": "c7778baa",
              "isFungible(uint256)": "adebf6f2",
              "ownerOf(uint256)": "6352211e"
            }
          }
        }
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryMintable.sol": {
        "IERC1155InventoryMintable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "safeBatchMint(address,uint256[],uint256[],bytes)": "0d6a5bbb",
              "safeMint(address,uint256,uint256,bytes)": "5cfa9297"
            }
          }
        }
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryTotalSupply.sol": {
        "IERC1155InventoryTotalSupply": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "totalSupply(uint256)": "bd85b039"
            }
          }
        }
      },
      "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol": {
        "IERC1155MetadataURI": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol": {
        "IERC1155TokenReceiver": {
          "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61"
            }
          }
        }
      },
      "contracts/token/ERC1155/mocks/ERC1155InventoryBurnableMock.sol": {
        "ERC1155InventoryBurnableMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IForwarderRegistry",
                  "name": "forwarderRegistry",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "universalForwarder",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collectionMaskLength",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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": false,
                  "internalType": "string",
                  "name": "baseMetadataURI",
                  "type": "string"
                }
              ],
              "name": "BaseMetadataURISet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "fungible",
                  "type": "bool"
                }
              ],
              "name": "CollectionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterRemoved",
              "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": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "addMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "baseMetadataURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                }
              ],
              "name": "createCollection",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                }
              ],
              "name": "creator",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isMinter",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "forwarder",
                  "type": "address"
                }
              ],
              "name": "isTrustedForwarder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "msgData",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "ret",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC20s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "contracts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC721s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "string",
                  "name": "baseMetadataURI_",
                  "type": "string"
                }
              ],
              "name": "setBaseMetadataURI",
              "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": "id",
                  "type": "uint256"
                }
              ],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60e06040523480156200001157600080fd5b506040516200419538038062004195833981810160405260608110156200003757600080fd5b5080516020820151604092830151600080546001600160a01b0319163390811782559451939492939192918391829182918891889187918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606091821b811660a05291901b166080528015801590620000c2575061010081105b62000114576040805162461bcd60e51b815260206004820152601c60248201527f496e76656e746f72793a2077726f6e67206d61736b206c656e67746800000000604482015290519081900360640190fd5b60c05250620001259050816200012f565b505050506200017b565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b60805160601c60a05160601c60c051613f746200022160003980610f4652806110cd52806116ee528061172c5280611a765280611c445280611cbf5280611e0c5280612148528061218652806126b0528061289452806128d35280612a5f5280612b705280612e1c528061318b52806137c15250806112dd52806134dd5280613d2352508061131852806134a252806135355280613cf95280613d845250613f746000f3fe608060405234801561001057600080fd5b50600436106101ce5760003560e01c80638053493411610104578063bd85b039116100a2578063d0011d9d11610071578063d0011d9d14610da7578063e985e9c514610dc4578063f242432a14610df2578063f2fde38b14610ebd576101ce565b8063bd85b03914610c51578063c3666c3614610c6e578063c4c2bfdc14610d82578063c7778baa14610d8a576101ce565b806398650275116100de5780639865027514610bd8578063a22cb46514610be0578063aa271e1a14610c0e578063adebf6f214610c34576101ce565b80638053493414610a735780638da5cb5b14610baa578063983b2d5614610bb2576101ce565b8063510b5158116101715780635cfa92971161014b5780635cfa9297146108105780636352211e146108d257806373c8a958146108ef5780637e518ec814610a03576101ce565b8063510b5158146107a9578063572b6c05146107e25780635b2bd79e14610808576101ce565b80630e89341c116101ad5780630e89341c1461040c578063124d91e51461049e5780632eb2c2d6146104d05780634e1273f414610697576101ce565b8062fdd58e146101d357806301ffc9a7146102115780630d6a5bbb1461024c575b600080fd5b6101ff600480360360408110156101e957600080fd5b506001600160a01b038135169060200135610ee3565b60408051918252519081900360200190f35b6102386004803603602081101561022757600080fd5b50356001600160e01b031916610fcf565b604080519115158252519081900360200190f35b61040a6004803603608081101561026257600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561028d57600080fd5b82018360208201111561029f57600080fd5b803590602001918460208302840111640100000000831117156102c157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561031157600080fd5b82018360208201111561032357600080fd5b8035906020019184602083028401116401000000008311171561034557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561039557600080fd5b8201836020820111156103a757600080fd5b803590602001918460018302840111640100000000831117156103c957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611015945050505050565b005b6104296004803603602081101561042257600080fd5b5035611037565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561046357818101518382015260200161044b565b50505050905090810190601f1680156104905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61040a600480360360608110156104b457600080fd5b506001600160a01b038135169060208101359060400135611042565b61040a600480360360a08110156104e657600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561051a57600080fd5b82018360208201111561052c57600080fd5b8035906020019184602083028401116401000000008311171561054e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561059e57600080fd5b8201836020820111156105b057600080fd5b803590602001918460208302840111640100000000831117156105d257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561062257600080fd5b82018360208201111561063457600080fd5b8035906020019184600183028401116401000000008311171561065657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506111b4945050505050565b610759600480360360408110156106ad57600080fd5b8101906020810181356401000000008111156106c857600080fd5b8201836020820111156106da57600080fd5b803590602001918460208302840111640100000000831117156106fc57600080fd5b91939092909160208101903564010000000081111561071a57600080fd5b82018360208201111561072c57600080fd5b8035906020019184602083028401116401000000008311171561074e57600080fd5b5090925090506111c8565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561079557818101518382015260200161077d565b505050509050019250505060405180910390f35b6107c6600480360360208110156107bf57600080fd5b50356112ce565b604080516001600160a01b039092168252519081900360200190f35b610238600480360360208110156107f857600080fd5b50356001600160a01b03166112d9565b610429611352565b61040a6004803603608081101561082657600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561085d57600080fd5b82018360208201111561086f57600080fd5b8035906020019184600183028401116401000000008311171561089157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113e0945050505050565b6107c6600480360360208110156108e857600080fd5b50356113f7565b61040a6004803603606081101561090557600080fd5b81019060208101813564010000000081111561092057600080fd5b82018360208201111561093257600080fd5b8035906020019184602083028401116401000000008311171561095457600080fd5b91939092909160208101903564010000000081111561097257600080fd5b82018360208201111561098457600080fd5b803590602001918460208302840111640100000000831117156109a657600080fd5b9193909290916020810190356401000000008111156109c457600080fd5b8201836020820111156109d657600080fd5b803590602001918460208302840111640100000000831117156109f857600080fd5b509092509050611461565b61040a60048036036020811015610a1957600080fd5b810190602081018135640100000000811115610a3457600080fd5b820183602082011115610a4657600080fd5b80359060200191846001830284011164010000000083111715610a6857600080fd5b509092509050611553565b61040a60048036036060811015610a8957600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115610ab457600080fd5b820183602082011115610ac657600080fd5b80359060200191846020830284011164010000000083111715610ae857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050640100000000811115610b3857600080fd5b820183602082011115610b4a57600080fd5b80359060200191846020830284011164010000000083111715610b6c57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506115cf945050505050565b6107c66118e8565b61040a60048036036020811015610bc857600080fd5b50356001600160a01b03166118f8565b61040a61190f565b61040a60048036036040811015610bf657600080fd5b506001600160a01b038135169060200135151561196d565b61023860048036036020811015610c2457600080fd5b50356001600160a01b0316611a4e565b61023860048036036020811015610c4a57600080fd5b5035611a63565b6101ff60048036036020811015610c6757600080fd5b5035611a6e565b61040a60048036036060811015610c8457600080fd5b810190602081018135640100000000811115610c9f57600080fd5b820183602082011115610cb157600080fd5b80359060200191846020830284011164010000000083111715610cd357600080fd5b919390929091602081019035640100000000811115610cf157600080fd5b820183602082011115610d0357600080fd5b80359060200191846020830284011164010000000083111715610d2557600080fd5b919390929091602081019035640100000000811115610d4357600080fd5b820183602082011115610d5557600080fd5b80359060200191846020830284011164010000000083111715610d7757600080fd5b509092509050611ae5565b610429611c2d565b6101ff60048036036020811015610da057600080fd5b5035611c3c565b61040a60048036036020811015610dbd57600080fd5b5035611ce3565b61023860048036036040811015610dda57600080fd5b506001600160a01b0381358116916020013516611cf7565b61040a600480360360a0811015610e0857600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135640100000000811115610e4857600080fd5b820183602082011115610e5a57600080fd5b80359060200191846001830284011164010000000083111715610e7c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611d25945050505050565b61040a60048036036020811015610ed357600080fd5b50356001600160a01b0316611ecc565b60006001600160a01b038316610f40576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b610f6a827f0000000000000000000000000000000000000000000000000000000000000000611f3d565b15610fa4576000828152600460205260409020546001600160a01b03848116911614610f97576000610f9a565b60015b60ff169050610fc9565b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b031982167f510b515800000000000000000000000000000000000000000000000000000000148061100d575061100d82611f80565b90505b919050565b611025611020611fbe565b611fc8565b61103184848484612035565b50505050565b606061100d82612361565b600061104c611fbe565b90506110588482612434565b6110a9576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b6110b283612480565b156110c7576110c28484846124a6565b611150565b6110f1837f0000000000000000000000000000000000000000000000000000000000000000611f3d565b15611103576110c284848460006125af565b6040805162461bcd60e51b815260206004820152601960248201527f496e76656e746f72793a206e6f74206120746f6b656e20696400000000000000604482015290519081900360640190fd5b60006001600160a01b0316846001600160a01b0316826001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a450505050565b6111c18585858585612719565b5050505050565b606083821461121e576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60008467ffffffffffffffff8111801561123757600080fd5b50604051908082528060200260200182016040528015611261578160200160208202803683370190505b50905060005b8086146112c4576112a587878381811061127d57fe5b905060200201356001600160a01b031686868481811061129957fe5b90506020020135610ee3565b8282815181106112b157fe5b6020908102919091010152600101611267565b5095945050505050565b600061100d82612a57565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061100d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113d85780601f106113ad576101008083540402835291602001916113d8565b820191906000526020600020905b8154815290600101906020018083116113bb57829003601f168201915b505050505081565b6113eb611020611fbe565b61103184848484612af1565b6000818152600460205260408120546001600160a01b03811661100d576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b61147161146c611fbe565b612c27565b84838114801561148057508082145b6114d1576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611549576115418888838181106114ea57fe5b905060200201356001600160a01b031685858481811061150657fe5b9050602002013588888581811061151957fe5b905060200201356001600160a01b03166001600160a01b0316612ceb9092919063ffffffff16565b6001016114d4565b5050505050505050565b61155e61146c611fbe565b61156a60068383613e75565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b815181518114611626576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b6000611630611fbe565b905061163c8582612434565b61168d576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b60008060005b8481146117c35760008782815181106116a857fe5b6020026020010151905060008783815181106116c057fe5b602002602001015190506116d382612480565b156116e8576116e38a83836124a6565b6117b9565b611712827f0000000000000000000000000000000000000000000000000000000000000000611f3d565b15611103576117248a838360016125af565b6000611750837f0000000000000000000000000000000000000000000000000000000000000000612d70565b90508561176357809550600194506117b7565b8581146117b05760008681526002602090815260408083206001600160a01b038f1684528252808320805489900390559782526003905295909520805494909403909355600192846117b7565b8460010194505b505b5050600101611693565b5081156118055760008281526002602090815260408083206001600160a01b038b16845282528083208054859003905584835260039091529020805482900390555b60006001600160a01b0316876001600160a01b0316846001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8989604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561188b578181015183820152602001611873565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156118ca5781810151838201526020016118b2565b5050505090500194505050505060405180910390a450505050505050565b6000546001600160a01b03165b90565b61190361146c611fbe565b61190c81612d86565b50565b6000611919611fbe565b905061192481611fc8565b6001600160a01b038116600081815260076020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b6000611977611fbe565b9050806001600160a01b0316836001600160a01b031614156119e0576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a2073656c662d617070726f76616c0000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260016020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b60076020526000908152604090205460ff1681565b600061100d82612480565b6000611a9a827f0000000000000000000000000000000000000000000000000000000000000000611f3d565b15611ad0576000828152600460205260409020546001600160a01b031615611ac3576001611ac6565b60005b60ff169050611010565b50600081815260036020526040902054611010565b611af061146c611fbe565b848381148015611aff57508082145b611b50576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461154957858582818110611b6657fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a85818110611b9157fe5b905060200201356001600160a01b0316878786818110611bad57fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015611c0a57600080fd5b505af1158015611c1e573d6000803e3d6000fd5b50505050806001019050611b53565b6060611c37612dd2565b905090565b6000611c68827f0000000000000000000000000000000000000000000000000000000000000000611f3d565b611cb9576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a206e6f7420616e204e46540000000000000000000000604482015290519081900360640190fd5b61100d827f0000000000000000000000000000000000000000000000000000000000000000612d70565b611cee61146c611fbe565b61190c81612e16565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6000611d2f611fbe565b90506001600160a01b038516611d8c576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b611d968682612434565b611de7576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b611df084612480565b15611e0657611e0186868686612f83565b611e43565b611e30847f0000000000000000000000000000000000000000000000000000000000000000611f3d565b1561110357611e018686868660006130a1565b846001600160a01b0316866001600160a01b0316826001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a4611eb2856001600160a01b03166131f0565b15611ec457611ec486868686866131f6565b505050505050565b611ed761146c611fbe565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60007f8000000000000000000000000000000000000000000000000000000000000000831615801590611f795750611f7482613380565b831615155b9392505050565b60006001600160e01b031982167f921ed8d100000000000000000000000000000000000000000000000000000000148061100d575061100d82613391565b6000611c37613492565b6001600160a01b03811660009081526007602052604090205460ff1661190c576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416612090576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b8251825181146120e7576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60008060005b83811461221b57600087828151811061210257fe5b60200260200101519050600087838151811061211a57fe5b6020026020010151905061212d82612480565b156121425761213d8a83836135f2565b612211565b61216c827f0000000000000000000000000000000000000000000000000000000000000000611f3d565b156111035761217e8a838360016136e4565b60006121aa837f0000000000000000000000000000000000000000000000000000000000000000612d70565b9050856121bd578095506001945061220f565b8581146122085760008681526002602090815260408083206001600160a01b038f1684528252808320805489019055978252600390529590952080549094019093556001928461220f565b8460010194505b505b50506001016120ed565b50811561225b5760008281526002602090815260408083206001600160a01b038b1684528252808320805485019055848352600390915290208054820190555b6001600160a01b038716600061226f611fbe565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8989604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156122df5781810151838201526020016122c7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561231e578181015183820152602001612306565b5050505090500194505050505060405180910390a4612345876001600160a01b03166131f0565b1561235857612358600088888888613827565b50505050505050565b6060600661236e836139a5565b60405160200180838054600181600116156101000203166002900480156123cc5780601f106123aa5761010080835404028352918201916123cc565b820191906000526020600020905b8154815290600101906020018083116123b8575b5050825160208401908083835b602083106123f85780518252601f1990920191602091820191016123d9565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b6000816001600160a01b0316836001600160a01b03161480611f795750506001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b7f8000000000000000000000000000000000000000000000000000000000000000161590565b806124f8576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b60008281526002602090815260408083206001600160a01b038716845290915290205481811015612570576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b03909716835295815285822092849003909255928352600390529190208054919091039055565b81600114612604576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000838152600460205260409020546001600160a01b03858116911614612672576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a206e6f6e2d6f776e6564204e46540000000000000000604482015290519081900360640190fd5b60008381526004602052604090207fdead0000000000000000000000000000000000000000000000000000000000009055806110315760006126d4847f0000000000000000000000000000000000000000000000000000000000000000612d70565b60008181526002602090815260408083206001600160a01b038a1684528252808320805460001990810190915593835260039091529020805490910190555050505050565b6001600160a01b038416612774576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b8251825181146127cb576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60006127d5611fbe565b90506127e18782612434565b612832576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b60008060005b84811461293c57600088828151811061284d57fe5b60200260200101519050600088838151811061286557fe5b6020026020010151905061287882612480565b1561288e576128898c8c8484612f83565b612932565b6128b8827f0000000000000000000000000000000000000000000000000000000000000000611f3d565b15611103576128cb8c8c848460016130a1565b60006128f7837f0000000000000000000000000000000000000000000000000000000000000000612d70565b90508561290a5780955060019450612930565b8581146129295761291d8d8d8888613ab4565b80955060019450612930565b8460010194505b505b5050600101612838565b50811561294f5761294f89898484613ab4565b876001600160a01b0316896001600160a01b0316846001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a8a604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156129d45781810151838201526020016129bc565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612a135781810151838201526020016129fb565b5050505090500194505050505060405180910390a4612a3a886001600160a01b03166131f0565b15612a4c57612a4c8989898989613827565b505050505050505050565b6000612a83827f0000000000000000000000000000000000000000000000000000000000000000611f3d565b15612ad5576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b506000908152600560205260409020546001600160a01b031690565b6001600160a01b038416612b4c576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b612b5583612480565b15612b6a57612b658484846135f2565b612ba6565b612b94837f0000000000000000000000000000000000000000000000000000000000000000611f3d565b1561110357612b6584848460006136e4565b6001600160a01b0384166000612bba611fbe565b6001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a4612c14846001600160a01b03166131f0565b15611031576110316000858585856131f6565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c6057600080fd5b505afa158015612c74573d6000803e3d6000fd5b505050506040513d6020811015612c8a57600080fd5b50516001600160a01b0382811691161461190c576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052612d6b908490613b08565b505050565b6000612d7b82613380565b198316905092915050565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6060612ddc613ceb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b612e40817f0000000000000000000000000000000000000000000000000000000000000000611f3d565b15612e92576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b031615612efc576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206578697374696e6720636f6c6c656374696f6e0000604482015290519081900360640190fd5b612f04611fbe565b600082815260056020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055612f5181612480565b1515817f4ebf8ad0df535ba5e487bc9cb27fe44120ca81c3a95d3eba79c0bd1df2ab2d5d60405160405180910390a350565b80612fd5576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b60008281526002602090815260408083206001600160a01b03881684529091529020548181101561304d576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b0316146111c15760009283526002602090815260408085206001600160a01b039788168652909152808420918390039091559290931681522080549091019055565b816001146130f6576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000838152600460205260409020546001600160a01b03868116911614613164576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a206e6f6e2d6f776e6564204e46540000000000000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b0385169055806111c15760006131af847f0000000000000000000000000000000000000000000000000000000000000000612d70565b60009081526002602090815260408083206001600160a01b03998a168452909152808220805460001901905595909616865250505091208054600101905550565b3b151590565b7ff23a6e61000000000000000000000000000000000000000000000000000000006001600160a01b03851663f23a6e6161322e611fbe565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156132a8578181015183820152602001613290565b50505050905090810190601f1680156132d55780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1580156132f857600080fd5b505af115801561330c573d6000803e3d6000fd5b505050506040513d602081101561332257600080fd5b50516001600160e01b031916146111c1576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b6001610100919091031b6000190190565b60006001600160e01b031982167f01ffc9a70000000000000000000000000000000000000000000000000000000014806133f457506001600160e01b031982167fd9b67a2600000000000000000000000000000000000000000000000000000000145b8061342857506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061345c57506001600160e01b031982167f09ce5c4600000000000000000000000000000000000000000000000000000000145b8061100d5750506001600160e01b0319167fbd85b039000000000000000000000000000000000000000000000000000000001490565b6000338161349e613e4e565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061351157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b1561351f5791506118f59050565b6001600160a01b03821632148015906135de57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156135b157600080fd5b505afa1580156135c5573d6000803e3d6000fd5b505050506040513d60208110156135db57600080fd5b50515b156135ec5791506118f59050565b50905090565b80613644576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b6000828152600360205260409020548181018181116136aa576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a20737570706c79206f766572666c6f77000000000000604482015290519081900360640190fd5b600093845260036020908152604080862092909255600281528185206001600160a01b039096168552949094525091902080549091019055565b81600114613739576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000838152600460205260409020541561379a576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206578697374696e672f6275726e74204e4654000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b0385169055806110315760006137e5847f0000000000000000000000000000000000000000000000000000000000000000612d70565b600090815260036020908152604080832080546001908101909155600283528184206001600160a01b038a168552909252909120805490910190555050505050565b7fbc197c81000000000000000000000000000000000000000000000000000000006001600160a01b03851663bc197c8161385f611fbe565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156138d85781810151838201526020016138c0565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156139175781810151838201526020016138ff565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561395357818101518382015260200161393b565b50505050905090810190601f1680156139805780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b1580156132f857600080fd5b6060816139e6575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152611010565b8160005b81156139fe57600101600a820491506139ea565b60008167ffffffffffffffff81118015613a1757600080fd5b506040519080825280601f01601f191660200182016040528015613a42576020820181803683370190505b50859350905060001982015b8315613aab57600a840660300160f81b82828060019003935081518110613a7157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350613a4e565b50949350505050565b826001600160a01b0316846001600160a01b0316146110315760009182526002602090815260408084206001600160a01b039687168552909152808320805483900390559290931681522080549091019055565b81613b1b6001600160a01b0382166131f0565b613b6c576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b60208310613ba95780518252601f199092019160209182019101613b8a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c0b576040519150601f19603f3d011682016040523d82523d6000602084013e613c10565b606091505b50915091508115613c8f57805115613c8a57808060200190516020811015613c3757600080fd5b5051613c8a576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b6111c1565b8051613ce2576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016811480613d5757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b15613d6e57613d64613e5a565b9250925050613e4a565b6001600160a01b0381163214801590613e3457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6613db9613e4e565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015613e0757600080fd5b505afa158015613e1b573d6000803e3d6000fd5b505050506040513d6020811015613e3157600080fd5b50515b15613e4157613d64613e5a565b60003692509250505b9091565b60131936013560601c90565b366000613e6d6013198301828481613f16565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282613eab5760008555613ef1565b82601f10613ec45782800160ff19823516178555613ef1565b82800160010185558215613ef1579182015b82811115613ef1578235825591602001919060010190613ed6565b50613efd929150613f01565b5090565b5b80821115613efd5760008155600101613f02565b60008085851115613f25578182fd5b83861115613f31578182fd5b505082019391909203915056fea2646970667358221220799517ed43c7de206c52a3f5810d2de2d9def4319ff824547ce02b5bb0755ea964736f6c63430007060033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x4195 CODESIZE SUB DUP1 PUSH3 0x4195 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP3 DUP4 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE SWAP5 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 DUP4 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP9 SWAP2 DUP9 SWAP2 DUP8 SWAP2 DUP3 SWAP2 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0x80 MSTORE DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH3 0xC2 JUMPI POP PUSH2 0x100 DUP2 LT JUMPDEST PUSH3 0x114 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67206D61736B206C656E67746800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xC0 MSTORE POP PUSH3 0x125 SWAP1 POP DUP2 PUSH3 0x12F JUMP JUMPDEST POP POP POP POP PUSH3 0x17B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH2 0x3F74 PUSH3 0x221 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xF46 MSTORE DUP1 PUSH2 0x10CD MSTORE DUP1 PUSH2 0x16EE MSTORE DUP1 PUSH2 0x172C MSTORE DUP1 PUSH2 0x1A76 MSTORE DUP1 PUSH2 0x1C44 MSTORE DUP1 PUSH2 0x1CBF MSTORE DUP1 PUSH2 0x1E0C MSTORE DUP1 PUSH2 0x2148 MSTORE DUP1 PUSH2 0x2186 MSTORE DUP1 PUSH2 0x26B0 MSTORE DUP1 PUSH2 0x2894 MSTORE DUP1 PUSH2 0x28D3 MSTORE DUP1 PUSH2 0x2A5F MSTORE DUP1 PUSH2 0x2B70 MSTORE DUP1 PUSH2 0x2E1C MSTORE DUP1 PUSH2 0x318B MSTORE DUP1 PUSH2 0x37C1 MSTORE POP DUP1 PUSH2 0x12DD MSTORE DUP1 PUSH2 0x34DD MSTORE DUP1 PUSH2 0x3D23 MSTORE POP DUP1 PUSH2 0x1318 MSTORE DUP1 PUSH2 0x34A2 MSTORE DUP1 PUSH2 0x3535 MSTORE DUP1 PUSH2 0x3CF9 MSTORE DUP1 PUSH2 0x3D84 MSTORE POP PUSH2 0x3F74 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 0x1CE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80534934 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xBD85B039 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD0011D9D GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD0011D9D EQ PUSH2 0xDA7 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0xDC4 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0xDF2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xEBD JUMPI PUSH2 0x1CE JUMP JUMPDEST DUP1 PUSH4 0xBD85B039 EQ PUSH2 0xC51 JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xC6E JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0xD82 JUMPI DUP1 PUSH4 0xC7778BAA EQ PUSH2 0xD8A JUMPI PUSH2 0x1CE JUMP JUMPDEST DUP1 PUSH4 0x98650275 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0xBD8 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0xBE0 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xC0E JUMPI DUP1 PUSH4 0xADEBF6F2 EQ PUSH2 0xC34 JUMPI PUSH2 0x1CE JUMP JUMPDEST DUP1 PUSH4 0x80534934 EQ PUSH2 0xA73 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xBAA JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0xBB2 JUMPI PUSH2 0x1CE JUMP JUMPDEST DUP1 PUSH4 0x510B5158 GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x5CFA9297 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x5CFA9297 EQ PUSH2 0x810 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x8D2 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x8EF JUMPI DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0xA03 JUMPI PUSH2 0x1CE JUMP JUMPDEST DUP1 PUSH4 0x510B5158 EQ PUSH2 0x7A9 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x7E2 JUMPI DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x808 JUMPI PUSH2 0x1CE JUMP JUMPDEST DUP1 PUSH4 0xE89341C GT PUSH2 0x1AD JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x40C JUMPI DUP1 PUSH4 0x124D91E5 EQ PUSH2 0x49E JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x4D0 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x697 JUMPI PUSH2 0x1CE JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0xD6A5BBB EQ PUSH2 0x24C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xFCF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x29F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1015 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x429 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1037 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x463 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x44B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x490 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1042 JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x52C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x54E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x634 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x11B4 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x759 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x71A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x74E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x795 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x77D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7C6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x12CE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12D9 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x1352 JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x826 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x86F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x891 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x13E0 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x7C6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x13F7 JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x920 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x954 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x984 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1461 JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1553 JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xAB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xAE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x15CF SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x7C6 PUSH2 0x18E8 JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18F8 JUMP JUMPDEST PUSH2 0x40A PUSH2 0x190F JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x196D JUMP JUMPDEST PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A4E JUMP JUMPDEST PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1A63 JUMP JUMPDEST PUSH2 0x1FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1A6E JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xCD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1AE5 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x1C2D JUMP JUMPDEST PUSH2 0x1FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1C3C JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1CE3 JUMP JUMPDEST PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1CF7 JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xE08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xE48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xE7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1D25 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xED3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1ECC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xF40 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2061646472657373000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xF6A DUP3 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0xFA4 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0xF97 JUMPI PUSH1 0x0 PUSH2 0xF9A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0xFC9 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x510B515800000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x100D JUMPI POP PUSH2 0x100D DUP3 PUSH2 0x1F80 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1025 PUSH2 0x1020 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x1FC8 JUMP JUMPDEST PUSH2 0x1031 DUP5 DUP5 DUP5 DUP5 PUSH2 0x2035 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x100D DUP3 PUSH2 0x2361 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x104C PUSH2 0x1FBE JUMP JUMPDEST SWAP1 POP PUSH2 0x1058 DUP5 DUP3 PUSH2 0x2434 JUMP JUMPDEST PUSH2 0x10A9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x10B2 DUP4 PUSH2 0x2480 JUMP JUMPDEST ISZERO PUSH2 0x10C7 JUMPI PUSH2 0x10C2 DUP5 DUP5 DUP5 PUSH2 0x24A6 JUMP JUMPDEST PUSH2 0x1150 JUMP JUMPDEST PUSH2 0x10F1 DUP4 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x1103 JUMPI PUSH2 0x10C2 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x25AF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120746F6B656E20696400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x11C1 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2719 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP3 EQ PUSH2 0x121E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1261 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP1 DUP7 EQ PUSH2 0x12C4 JUMPI PUSH2 0x12A5 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x127D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x1299 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0xEE3 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x12B1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1267 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100D DUP3 PUSH2 0x2A57 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x100D JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x13D8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x13AD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x13D8 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 0x13BB JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0x13EB PUSH2 0x1020 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x1031 DUP5 DUP5 DUP5 DUP5 PUSH2 0x2AF1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x100D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1471 PUSH2 0x146C PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x2C27 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1480 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x14D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1549 JUMPI PUSH2 0x1541 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x14EA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1506 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1519 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CEB SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x14D4 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x155E PUSH2 0x146C PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x156A PUSH1 0x6 DUP4 DUP4 PUSH2 0x3E75 JUMP JUMPDEST POP PUSH32 0x4B1DC5C136A3CE9FDED8DB0CE3D3366C58764EC3A8E4C2B9E52E4DDFE5EBBF7 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG1 POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x1626 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1630 PUSH2 0x1FBE JUMP JUMPDEST SWAP1 POP PUSH2 0x163C DUP6 DUP3 PUSH2 0x2434 JUMP JUMPDEST PUSH2 0x168D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x17C3 JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x16A8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x16C0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x16D3 DUP3 PUSH2 0x2480 JUMP JUMPDEST ISZERO PUSH2 0x16E8 JUMPI PUSH2 0x16E3 DUP11 DUP4 DUP4 PUSH2 0x24A6 JUMP JUMPDEST PUSH2 0x17B9 JUMP JUMPDEST PUSH2 0x1712 DUP3 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x1103 JUMPI PUSH2 0x1724 DUP11 DUP4 DUP4 PUSH1 0x1 PUSH2 0x25AF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1750 DUP4 PUSH32 0x0 PUSH2 0x2D70 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x1763 JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x17B7 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x17B0 JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP10 SWAP1 SUB SWAP1 SSTORE SWAP8 DUP3 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP6 SWAP1 SWAP6 KECCAK256 DUP1 SLOAD SWAP5 SWAP1 SWAP5 SUB SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP3 DUP5 PUSH2 0x17B7 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1693 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x1805 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x188B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1873 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18CA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x18B2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1903 PUSH2 0x146C PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x190C DUP2 PUSH2 0x2D86 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1919 PUSH2 0x1FBE JUMP JUMPDEST SWAP1 POP PUSH2 0x1924 DUP2 PUSH2 0x1FC8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1977 PUSH2 0x1FBE JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x19E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2073656C662D617070726F76616C0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100D DUP3 PUSH2 0x2480 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A9A DUP3 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x1AD0 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1AC3 JUMPI PUSH1 0x1 PUSH2 0x1AC6 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1010 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1010 JUMP JUMPDEST PUSH2 0x1AF0 PUSH2 0x146C PUSH2 0x1FBE JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1AFF JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1B50 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1549 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x1B66 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x1B91 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x1BAD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C1E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x1B53 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1C37 PUSH2 0x2DD2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C68 DUP3 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST PUSH2 0x1CB9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420616E204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x100D DUP3 PUSH32 0x0 PUSH2 0x2D70 JUMP JUMPDEST PUSH2 0x1CEE PUSH2 0x146C PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x190C DUP2 PUSH2 0x2E16 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D2F PUSH2 0x1FBE JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x1D8C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D96 DUP7 DUP3 PUSH2 0x2434 JUMP JUMPDEST PUSH2 0x1DE7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1DF0 DUP5 PUSH2 0x2480 JUMP JUMPDEST ISZERO PUSH2 0x1E06 JUMPI PUSH2 0x1E01 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2F83 JUMP JUMPDEST PUSH2 0x1E43 JUMP JUMPDEST PUSH2 0x1E30 DUP5 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x1103 JUMPI PUSH2 0x1E01 DUP7 DUP7 DUP7 DUP7 PUSH1 0x0 PUSH2 0x30A1 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1EB2 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x31F0 JUMP JUMPDEST ISZERO PUSH2 0x1EC4 JUMPI PUSH2 0x1EC4 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x31F6 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1ED7 PUSH2 0x146C PUSH2 0x1FBE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1F79 JUMPI POP PUSH2 0x1F74 DUP3 PUSH2 0x3380 JUMP JUMPDEST DUP4 AND ISZERO ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x921ED8D100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x100D JUMPI POP PUSH2 0x100D DUP3 PUSH2 0x3391 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C37 PUSH2 0x3492 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x190C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2090 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x20E7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 EQ PUSH2 0x221B JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2102 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x211A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x212D DUP3 PUSH2 0x2480 JUMP JUMPDEST ISZERO PUSH2 0x2142 JUMPI PUSH2 0x213D DUP11 DUP4 DUP4 PUSH2 0x35F2 JUMP JUMPDEST PUSH2 0x2211 JUMP JUMPDEST PUSH2 0x216C DUP3 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x1103 JUMPI PUSH2 0x217E DUP11 DUP4 DUP4 PUSH1 0x1 PUSH2 0x36E4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AA DUP4 PUSH32 0x0 PUSH2 0x2D70 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x21BD JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x220F JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x2208 JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP10 ADD SWAP1 SSTORE SWAP8 DUP3 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP6 SWAP1 SWAP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP5 ADD SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP3 DUP5 PUSH2 0x220F JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x20ED JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x225B JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 PUSH2 0x226F PUSH2 0x1FBE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22DF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x22C7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x231E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2306 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2345 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x31F0 JUMP JUMPDEST ISZERO PUSH2 0x2358 JUMPI PUSH2 0x2358 PUSH1 0x0 DUP9 DUP9 DUP9 DUP9 PUSH2 0x3827 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x6 PUSH2 0x236E DUP4 PUSH2 0x39A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x23CC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x23AA JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x23CC 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 0x23B8 JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x23F8 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x23D9 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1F79 JUMPI POP POP 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 AND ISZERO SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x24F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x2570 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420656E6F7567682062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP8 AND DUP4 MSTORE SWAP6 DUP2 MSTORE DUP6 DUP3 KECCAK256 SWAP3 DUP5 SWAP1 SUB SWAP1 SWAP3 SSTORE SWAP3 DUP4 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x2604 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 AND EQ PUSH2 0x2672 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6F776E6564204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH32 0xDEAD000000000000000000000000000000000000000000000000000000000000 SWAP1 SSTORE DUP1 PUSH2 0x1031 JUMPI PUSH1 0x0 PUSH2 0x26D4 DUP5 PUSH32 0x0 PUSH2 0x2D70 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE SWAP4 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2774 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x27CB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x27D5 PUSH2 0x1FBE JUMP JUMPDEST SWAP1 POP PUSH2 0x27E1 DUP8 DUP3 PUSH2 0x2434 JUMP JUMPDEST PUSH2 0x2832 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x293C JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x284D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2865 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x2878 DUP3 PUSH2 0x2480 JUMP JUMPDEST ISZERO PUSH2 0x288E JUMPI PUSH2 0x2889 DUP13 DUP13 DUP5 DUP5 PUSH2 0x2F83 JUMP JUMPDEST PUSH2 0x2932 JUMP JUMPDEST PUSH2 0x28B8 DUP3 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x1103 JUMPI PUSH2 0x28CB DUP13 DUP13 DUP5 DUP5 PUSH1 0x1 PUSH2 0x30A1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28F7 DUP4 PUSH32 0x0 PUSH2 0x2D70 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x290A JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x2930 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x2929 JUMPI PUSH2 0x291D DUP14 DUP14 DUP9 DUP9 PUSH2 0x3AB4 JUMP JUMPDEST DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x2930 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2838 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x294F JUMPI PUSH2 0x294F DUP10 DUP10 DUP5 DUP5 PUSH2 0x3AB4 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP11 DUP11 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x29D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x29BC JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2A13 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x29FB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2A3A DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x31F0 JUMP JUMPDEST ISZERO PUSH2 0x2A4C JUMPI PUSH2 0x2A4C DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x3827 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A83 DUP3 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x2AD5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2B4C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2B55 DUP4 PUSH2 0x2480 JUMP JUMPDEST ISZERO PUSH2 0x2B6A JUMPI PUSH2 0x2B65 DUP5 DUP5 DUP5 PUSH2 0x35F2 JUMP JUMPDEST PUSH2 0x2BA6 JUMP JUMPDEST PUSH2 0x2B94 DUP4 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x1103 JUMPI PUSH2 0x2B65 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x36E4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 PUSH2 0x2BBA PUSH2 0x1FBE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2C14 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x31F0 JUMP JUMPDEST ISZERO PUSH2 0x1031 JUMPI PUSH2 0x1031 PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 PUSH2 0x31F6 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x190C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x2D6B SWAP1 DUP5 SWAP1 PUSH2 0x3B08 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D7B DUP3 PUSH2 0x3380 JUMP JUMPDEST NOT DUP4 AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2DDC PUSH2 0x3CEB JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2E40 DUP2 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x2E92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2EFC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E6720636F6C6C656374696F6E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2F04 PUSH2 0x1FBE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x2F51 DUP2 PUSH2 0x2480 JUMP JUMPDEST ISZERO ISZERO DUP2 PUSH32 0x4EBF8AD0DF535BA5E487BC9CB27FE44120CA81C3A95D3EBA79C0BD1DF2AB2D5D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST DUP1 PUSH2 0x2FD5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x304D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420656E6F7567682062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x11C1 JUMPI PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP7 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP5 KECCAK256 SWAP2 DUP4 SWAP1 SUB SWAP1 SWAP2 SSTORE SWAP3 SWAP1 SWAP4 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x30F6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ PUSH2 0x3164 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6F776E6564204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 SSTORE DUP1 PUSH2 0x11C1 JUMPI PUSH1 0x0 PUSH2 0x31AF DUP5 PUSH32 0x0 PUSH2 0x2D70 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP6 SWAP1 SWAP7 AND DUP7 MSTORE POP POP POP SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xF23A6E61 PUSH2 0x322E PUSH2 0x1FBE JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x32A8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3290 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x32D5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x330C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x11C1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220726566757365640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH2 0x100 SWAP2 SWAP1 SWAP2 SUB SHL PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x33F4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x3428 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x345C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9CE5C4600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x100D JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xBD85B03900000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x349E PUSH2 0x3E4E JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x3511 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x351F JUMPI SWAP2 POP PUSH2 0x18F5 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x35DE JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x35EC JUMPI SWAP2 POP PUSH2 0x18F5 SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x3644 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x36AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20737570706C79206F766572666C6F77000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP2 MSTORE DUP2 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP6 MSTORE SWAP5 SWAP1 SWAP5 MSTORE POP SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x3739 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x379A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E672F6275726E74204E4654000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 SSTORE DUP1 PUSH2 0x1031 JUMPI PUSH1 0x0 PUSH2 0x37E5 DUP5 PUSH32 0x0 PUSH2 0x2D70 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xBC197C81 PUSH2 0x385F PUSH2 0x1FBE JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x38D8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x38C0 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3917 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x38FF JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3953 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x393B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3980 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x39E6 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1010 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x39FE JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x39EA JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3A17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x3A42 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x3AAB JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x3A71 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x3A4E JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1031 JUMPI PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE SWAP3 SWAP1 SWAP4 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH2 0x3B1B PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x31F0 JUMP JUMPDEST PUSH2 0x3B6C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3BA9 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3B8A JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3C0B 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 0x3C10 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x3C8F JUMPI DUP1 MLOAD ISZERO PUSH2 0x3C8A JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3C8A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x11C1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x3CE2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x3D57 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x3D6E JUMPI PUSH2 0x3D64 PUSH2 0x3E5A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x3E4A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x3E34 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x3DB9 PUSH2 0x3E4E JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3E1B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x3E41 JUMPI PUSH2 0x3D64 PUSH2 0x3E5A JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x3E6D PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x3F16 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x3EAB JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3EF1 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3EC4 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x3EF1 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3EF1 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3EF1 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3ED6 JUMP JUMPDEST POP PUSH2 0x3EFD SWAP3 SWAP2 POP PUSH2 0x3F01 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3EFD JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3F02 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x3F25 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x3F31 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH26 0x9517ED43C7DE206C52A3F5810D2DE2D9DEF4319FF824547CE02B JUMPDEST 0xB0 PUSH22 0x5EA964736F6C63430007060033000000000000000000 ",
              "sourceMap": "1140:3660:26:-:0;;;1364:274;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1364:274:26;;;;;;;;;;;960:6:2;:15;;-1:-1:-1;;;;;;960:15:2;1624:10:26;960:15:2;;;;;990:40;;1364:274:26;;;;;;1624:10;1364:274;;;;;;;;;;1624:10;;;;960:6:2;990:40;;960:6;;990:40;-1:-1:-1;;;;;;;443:40:85;;;;;;;;493:38;;;;;;2448:25:13;;;;;:55;;;2500:3;2477:20;:26;2448:55;2440:96;;;;;-1:-1:-1;;;2440:96:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;2546:44;;-1:-1:-1;476:18:1::1;::::0;-1:-1:-1;487:6:1;476:10:::1;:18::i;:::-;422:79:::0;1364:274:26;;;1140:3660;;1252:122:1;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;1140:3660:26:-;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:379:86",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:86",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "144:233:86",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "182:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "191:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "202:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "184:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "184:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "184:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "160:10:86"
                                  },
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "172:8:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "157:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "157:24:86"
                              },
                              "nodeType": "YulIf",
                              "src": "154:2:86"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "247:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "256:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "267:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "249:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "249:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "229:8:86"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "239:6:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "226:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "226:20:86"
                              },
                              "nodeType": "YulIf",
                              "src": "223:2:86"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "288:36:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "305:6:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "313:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "301:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "301:23:86"
                              },
                              "variableNames": [
                                {
                                  "name": "offsetOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "288:9:86"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "333:38:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "350:8:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "360:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "346:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "346:25:86"
                              },
                              "variableNames": [
                                {
                                  "name": "lengthOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:9:86"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "78:6:86",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "86:6:86",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "94:10:86",
                            "type": ""
                          },
                          {
                            "name": "endIndex",
                            "nodeType": "YulTypedName",
                            "src": "106:8:86",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "offsetOut",
                            "nodeType": "YulTypedName",
                            "src": "119:9:86",
                            "type": ""
                          },
                          {
                            "name": "lengthOut",
                            "nodeType": "YulTypedName",
                            "src": "130:9:86",
                            "type": ""
                          }
                        ],
                        "src": "14:363:86"
                      }
                    ]
                  },
                  "contents": "{\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(offsetOut, offsetOut) }\n        if gt(endIndex, length) { revert(offsetOut, offsetOut) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n}",
                  "id": 86,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "2354": [
                  {
                    "length": 32,
                    "start": 3910
                  },
                  {
                    "length": 32,
                    "start": 4301
                  },
                  {
                    "length": 32,
                    "start": 5870
                  },
                  {
                    "length": 32,
                    "start": 5932
                  },
                  {
                    "length": 32,
                    "start": 6774
                  },
                  {
                    "length": 32,
                    "start": 7236
                  },
                  {
                    "length": 32,
                    "start": 7359
                  },
                  {
                    "length": 32,
                    "start": 7692
                  },
                  {
                    "length": 32,
                    "start": 8520
                  },
                  {
                    "length": 32,
                    "start": 8582
                  },
                  {
                    "length": 32,
                    "start": 9904
                  },
                  {
                    "length": 32,
                    "start": 10388
                  },
                  {
                    "length": 32,
                    "start": 10451
                  },
                  {
                    "length": 32,
                    "start": 10847
                  },
                  {
                    "length": 32,
                    "start": 11120
                  },
                  {
                    "length": 32,
                    "start": 11804
                  },
                  {
                    "length": 32,
                    "start": 12683
                  },
                  {
                    "length": 32,
                    "start": 14273
                  }
                ],
                "15042": [
                  {
                    "length": 32,
                    "start": 4888
                  },
                  {
                    "length": 32,
                    "start": 13474
                  },
                  {
                    "length": 32,
                    "start": 13621
                  },
                  {
                    "length": 32,
                    "start": 15609
                  },
                  {
                    "length": 32,
                    "start": 15748
                  }
                ],
                "15044": [
                  {
                    "length": 32,
                    "start": 4829
                  },
                  {
                    "length": 32,
                    "start": 13533
                  },
                  {
                    "length": 32,
                    "start": 15651
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101ce5760003560e01c80638053493411610104578063bd85b039116100a2578063d0011d9d11610071578063d0011d9d14610da7578063e985e9c514610dc4578063f242432a14610df2578063f2fde38b14610ebd576101ce565b8063bd85b03914610c51578063c3666c3614610c6e578063c4c2bfdc14610d82578063c7778baa14610d8a576101ce565b806398650275116100de5780639865027514610bd8578063a22cb46514610be0578063aa271e1a14610c0e578063adebf6f214610c34576101ce565b80638053493414610a735780638da5cb5b14610baa578063983b2d5614610bb2576101ce565b8063510b5158116101715780635cfa92971161014b5780635cfa9297146108105780636352211e146108d257806373c8a958146108ef5780637e518ec814610a03576101ce565b8063510b5158146107a9578063572b6c05146107e25780635b2bd79e14610808576101ce565b80630e89341c116101ad5780630e89341c1461040c578063124d91e51461049e5780632eb2c2d6146104d05780634e1273f414610697576101ce565b8062fdd58e146101d357806301ffc9a7146102115780630d6a5bbb1461024c575b600080fd5b6101ff600480360360408110156101e957600080fd5b506001600160a01b038135169060200135610ee3565b60408051918252519081900360200190f35b6102386004803603602081101561022757600080fd5b50356001600160e01b031916610fcf565b604080519115158252519081900360200190f35b61040a6004803603608081101561026257600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561028d57600080fd5b82018360208201111561029f57600080fd5b803590602001918460208302840111640100000000831117156102c157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561031157600080fd5b82018360208201111561032357600080fd5b8035906020019184602083028401116401000000008311171561034557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561039557600080fd5b8201836020820111156103a757600080fd5b803590602001918460018302840111640100000000831117156103c957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611015945050505050565b005b6104296004803603602081101561042257600080fd5b5035611037565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561046357818101518382015260200161044b565b50505050905090810190601f1680156104905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61040a600480360360608110156104b457600080fd5b506001600160a01b038135169060208101359060400135611042565b61040a600480360360a08110156104e657600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561051a57600080fd5b82018360208201111561052c57600080fd5b8035906020019184602083028401116401000000008311171561054e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561059e57600080fd5b8201836020820111156105b057600080fd5b803590602001918460208302840111640100000000831117156105d257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561062257600080fd5b82018360208201111561063457600080fd5b8035906020019184600183028401116401000000008311171561065657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506111b4945050505050565b610759600480360360408110156106ad57600080fd5b8101906020810181356401000000008111156106c857600080fd5b8201836020820111156106da57600080fd5b803590602001918460208302840111640100000000831117156106fc57600080fd5b91939092909160208101903564010000000081111561071a57600080fd5b82018360208201111561072c57600080fd5b8035906020019184602083028401116401000000008311171561074e57600080fd5b5090925090506111c8565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561079557818101518382015260200161077d565b505050509050019250505060405180910390f35b6107c6600480360360208110156107bf57600080fd5b50356112ce565b604080516001600160a01b039092168252519081900360200190f35b610238600480360360208110156107f857600080fd5b50356001600160a01b03166112d9565b610429611352565b61040a6004803603608081101561082657600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561085d57600080fd5b82018360208201111561086f57600080fd5b8035906020019184600183028401116401000000008311171561089157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113e0945050505050565b6107c6600480360360208110156108e857600080fd5b50356113f7565b61040a6004803603606081101561090557600080fd5b81019060208101813564010000000081111561092057600080fd5b82018360208201111561093257600080fd5b8035906020019184602083028401116401000000008311171561095457600080fd5b91939092909160208101903564010000000081111561097257600080fd5b82018360208201111561098457600080fd5b803590602001918460208302840111640100000000831117156109a657600080fd5b9193909290916020810190356401000000008111156109c457600080fd5b8201836020820111156109d657600080fd5b803590602001918460208302840111640100000000831117156109f857600080fd5b509092509050611461565b61040a60048036036020811015610a1957600080fd5b810190602081018135640100000000811115610a3457600080fd5b820183602082011115610a4657600080fd5b80359060200191846001830284011164010000000083111715610a6857600080fd5b509092509050611553565b61040a60048036036060811015610a8957600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115610ab457600080fd5b820183602082011115610ac657600080fd5b80359060200191846020830284011164010000000083111715610ae857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050640100000000811115610b3857600080fd5b820183602082011115610b4a57600080fd5b80359060200191846020830284011164010000000083111715610b6c57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506115cf945050505050565b6107c66118e8565b61040a60048036036020811015610bc857600080fd5b50356001600160a01b03166118f8565b61040a61190f565b61040a60048036036040811015610bf657600080fd5b506001600160a01b038135169060200135151561196d565b61023860048036036020811015610c2457600080fd5b50356001600160a01b0316611a4e565b61023860048036036020811015610c4a57600080fd5b5035611a63565b6101ff60048036036020811015610c6757600080fd5b5035611a6e565b61040a60048036036060811015610c8457600080fd5b810190602081018135640100000000811115610c9f57600080fd5b820183602082011115610cb157600080fd5b80359060200191846020830284011164010000000083111715610cd357600080fd5b919390929091602081019035640100000000811115610cf157600080fd5b820183602082011115610d0357600080fd5b80359060200191846020830284011164010000000083111715610d2557600080fd5b919390929091602081019035640100000000811115610d4357600080fd5b820183602082011115610d5557600080fd5b80359060200191846020830284011164010000000083111715610d7757600080fd5b509092509050611ae5565b610429611c2d565b6101ff60048036036020811015610da057600080fd5b5035611c3c565b61040a60048036036020811015610dbd57600080fd5b5035611ce3565b61023860048036036040811015610dda57600080fd5b506001600160a01b0381358116916020013516611cf7565b61040a600480360360a0811015610e0857600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135640100000000811115610e4857600080fd5b820183602082011115610e5a57600080fd5b80359060200191846001830284011164010000000083111715610e7c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611d25945050505050565b61040a60048036036020811015610ed357600080fd5b50356001600160a01b0316611ecc565b60006001600160a01b038316610f40576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b610f6a827f0000000000000000000000000000000000000000000000000000000000000000611f3d565b15610fa4576000828152600460205260409020546001600160a01b03848116911614610f97576000610f9a565b60015b60ff169050610fc9565b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b031982167f510b515800000000000000000000000000000000000000000000000000000000148061100d575061100d82611f80565b90505b919050565b611025611020611fbe565b611fc8565b61103184848484612035565b50505050565b606061100d82612361565b600061104c611fbe565b90506110588482612434565b6110a9576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b6110b283612480565b156110c7576110c28484846124a6565b611150565b6110f1837f0000000000000000000000000000000000000000000000000000000000000000611f3d565b15611103576110c284848460006125af565b6040805162461bcd60e51b815260206004820152601960248201527f496e76656e746f72793a206e6f74206120746f6b656e20696400000000000000604482015290519081900360640190fd5b60006001600160a01b0316846001600160a01b0316826001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a450505050565b6111c18585858585612719565b5050505050565b606083821461121e576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60008467ffffffffffffffff8111801561123757600080fd5b50604051908082528060200260200182016040528015611261578160200160208202803683370190505b50905060005b8086146112c4576112a587878381811061127d57fe5b905060200201356001600160a01b031686868481811061129957fe5b90506020020135610ee3565b8282815181106112b157fe5b6020908102919091010152600101611267565b5095945050505050565b600061100d82612a57565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061100d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113d85780601f106113ad576101008083540402835291602001916113d8565b820191906000526020600020905b8154815290600101906020018083116113bb57829003601f168201915b505050505081565b6113eb611020611fbe565b61103184848484612af1565b6000818152600460205260408120546001600160a01b03811661100d576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b61147161146c611fbe565b612c27565b84838114801561148057508082145b6114d1576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611549576115418888838181106114ea57fe5b905060200201356001600160a01b031685858481811061150657fe5b9050602002013588888581811061151957fe5b905060200201356001600160a01b03166001600160a01b0316612ceb9092919063ffffffff16565b6001016114d4565b5050505050505050565b61155e61146c611fbe565b61156a60068383613e75565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b815181518114611626576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b6000611630611fbe565b905061163c8582612434565b61168d576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b60008060005b8481146117c35760008782815181106116a857fe5b6020026020010151905060008783815181106116c057fe5b602002602001015190506116d382612480565b156116e8576116e38a83836124a6565b6117b9565b611712827f0000000000000000000000000000000000000000000000000000000000000000611f3d565b15611103576117248a838360016125af565b6000611750837f0000000000000000000000000000000000000000000000000000000000000000612d70565b90508561176357809550600194506117b7565b8581146117b05760008681526002602090815260408083206001600160a01b038f1684528252808320805489900390559782526003905295909520805494909403909355600192846117b7565b8460010194505b505b5050600101611693565b5081156118055760008281526002602090815260408083206001600160a01b038b16845282528083208054859003905584835260039091529020805482900390555b60006001600160a01b0316876001600160a01b0316846001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8989604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561188b578181015183820152602001611873565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156118ca5781810151838201526020016118b2565b5050505090500194505050505060405180910390a450505050505050565b6000546001600160a01b03165b90565b61190361146c611fbe565b61190c81612d86565b50565b6000611919611fbe565b905061192481611fc8565b6001600160a01b038116600081815260076020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b6000611977611fbe565b9050806001600160a01b0316836001600160a01b031614156119e0576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a2073656c662d617070726f76616c0000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260016020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b60076020526000908152604090205460ff1681565b600061100d82612480565b6000611a9a827f0000000000000000000000000000000000000000000000000000000000000000611f3d565b15611ad0576000828152600460205260409020546001600160a01b031615611ac3576001611ac6565b60005b60ff169050611010565b50600081815260036020526040902054611010565b611af061146c611fbe565b848381148015611aff57508082145b611b50576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461154957858582818110611b6657fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a85818110611b9157fe5b905060200201356001600160a01b0316878786818110611bad57fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015611c0a57600080fd5b505af1158015611c1e573d6000803e3d6000fd5b50505050806001019050611b53565b6060611c37612dd2565b905090565b6000611c68827f0000000000000000000000000000000000000000000000000000000000000000611f3d565b611cb9576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a206e6f7420616e204e46540000000000000000000000604482015290519081900360640190fd5b61100d827f0000000000000000000000000000000000000000000000000000000000000000612d70565b611cee61146c611fbe565b61190c81612e16565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6000611d2f611fbe565b90506001600160a01b038516611d8c576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b611d968682612434565b611de7576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b611df084612480565b15611e0657611e0186868686612f83565b611e43565b611e30847f0000000000000000000000000000000000000000000000000000000000000000611f3d565b1561110357611e018686868660006130a1565b846001600160a01b0316866001600160a01b0316826001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a4611eb2856001600160a01b03166131f0565b15611ec457611ec486868686866131f6565b505050505050565b611ed761146c611fbe565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60007f8000000000000000000000000000000000000000000000000000000000000000831615801590611f795750611f7482613380565b831615155b9392505050565b60006001600160e01b031982167f921ed8d100000000000000000000000000000000000000000000000000000000148061100d575061100d82613391565b6000611c37613492565b6001600160a01b03811660009081526007602052604090205460ff1661190c576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416612090576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b8251825181146120e7576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60008060005b83811461221b57600087828151811061210257fe5b60200260200101519050600087838151811061211a57fe5b6020026020010151905061212d82612480565b156121425761213d8a83836135f2565b612211565b61216c827f0000000000000000000000000000000000000000000000000000000000000000611f3d565b156111035761217e8a838360016136e4565b60006121aa837f0000000000000000000000000000000000000000000000000000000000000000612d70565b9050856121bd578095506001945061220f565b8581146122085760008681526002602090815260408083206001600160a01b038f1684528252808320805489019055978252600390529590952080549094019093556001928461220f565b8460010194505b505b50506001016120ed565b50811561225b5760008281526002602090815260408083206001600160a01b038b1684528252808320805485019055848352600390915290208054820190555b6001600160a01b038716600061226f611fbe565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8989604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156122df5781810151838201526020016122c7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561231e578181015183820152602001612306565b5050505090500194505050505060405180910390a4612345876001600160a01b03166131f0565b1561235857612358600088888888613827565b50505050505050565b6060600661236e836139a5565b60405160200180838054600181600116156101000203166002900480156123cc5780601f106123aa5761010080835404028352918201916123cc565b820191906000526020600020905b8154815290600101906020018083116123b8575b5050825160208401908083835b602083106123f85780518252601f1990920191602091820191016123d9565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b6000816001600160a01b0316836001600160a01b03161480611f795750506001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b7f8000000000000000000000000000000000000000000000000000000000000000161590565b806124f8576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b60008281526002602090815260408083206001600160a01b038716845290915290205481811015612570576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b03909716835295815285822092849003909255928352600390529190208054919091039055565b81600114612604576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000838152600460205260409020546001600160a01b03858116911614612672576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a206e6f6e2d6f776e6564204e46540000000000000000604482015290519081900360640190fd5b60008381526004602052604090207fdead0000000000000000000000000000000000000000000000000000000000009055806110315760006126d4847f0000000000000000000000000000000000000000000000000000000000000000612d70565b60008181526002602090815260408083206001600160a01b038a1684528252808320805460001990810190915593835260039091529020805490910190555050505050565b6001600160a01b038416612774576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b8251825181146127cb576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60006127d5611fbe565b90506127e18782612434565b612832576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b60008060005b84811461293c57600088828151811061284d57fe5b60200260200101519050600088838151811061286557fe5b6020026020010151905061287882612480565b1561288e576128898c8c8484612f83565b612932565b6128b8827f0000000000000000000000000000000000000000000000000000000000000000611f3d565b15611103576128cb8c8c848460016130a1565b60006128f7837f0000000000000000000000000000000000000000000000000000000000000000612d70565b90508561290a5780955060019450612930565b8581146129295761291d8d8d8888613ab4565b80955060019450612930565b8460010194505b505b5050600101612838565b50811561294f5761294f89898484613ab4565b876001600160a01b0316896001600160a01b0316846001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a8a604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156129d45781810151838201526020016129bc565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612a135781810151838201526020016129fb565b5050505090500194505050505060405180910390a4612a3a886001600160a01b03166131f0565b15612a4c57612a4c8989898989613827565b505050505050505050565b6000612a83827f0000000000000000000000000000000000000000000000000000000000000000611f3d565b15612ad5576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b506000908152600560205260409020546001600160a01b031690565b6001600160a01b038416612b4c576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b612b5583612480565b15612b6a57612b658484846135f2565b612ba6565b612b94837f0000000000000000000000000000000000000000000000000000000000000000611f3d565b1561110357612b6584848460006136e4565b6001600160a01b0384166000612bba611fbe565b6001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a4612c14846001600160a01b03166131f0565b15611031576110316000858585856131f6565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c6057600080fd5b505afa158015612c74573d6000803e3d6000fd5b505050506040513d6020811015612c8a57600080fd5b50516001600160a01b0382811691161461190c576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052612d6b908490613b08565b505050565b6000612d7b82613380565b198316905092915050565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6060612ddc613ceb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b612e40817f0000000000000000000000000000000000000000000000000000000000000000611f3d565b15612e92576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b031615612efc576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206578697374696e6720636f6c6c656374696f6e0000604482015290519081900360640190fd5b612f04611fbe565b600082815260056020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055612f5181612480565b1515817f4ebf8ad0df535ba5e487bc9cb27fe44120ca81c3a95d3eba79c0bd1df2ab2d5d60405160405180910390a350565b80612fd5576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b60008281526002602090815260408083206001600160a01b03881684529091529020548181101561304d576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b0316146111c15760009283526002602090815260408085206001600160a01b039788168652909152808420918390039091559290931681522080549091019055565b816001146130f6576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000838152600460205260409020546001600160a01b03868116911614613164576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a206e6f6e2d6f776e6564204e46540000000000000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b0385169055806111c15760006131af847f0000000000000000000000000000000000000000000000000000000000000000612d70565b60009081526002602090815260408083206001600160a01b03998a168452909152808220805460001901905595909616865250505091208054600101905550565b3b151590565b7ff23a6e61000000000000000000000000000000000000000000000000000000006001600160a01b03851663f23a6e6161322e611fbe565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156132a8578181015183820152602001613290565b50505050905090810190601f1680156132d55780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1580156132f857600080fd5b505af115801561330c573d6000803e3d6000fd5b505050506040513d602081101561332257600080fd5b50516001600160e01b031916146111c1576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b6001610100919091031b6000190190565b60006001600160e01b031982167f01ffc9a70000000000000000000000000000000000000000000000000000000014806133f457506001600160e01b031982167fd9b67a2600000000000000000000000000000000000000000000000000000000145b8061342857506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061345c57506001600160e01b031982167f09ce5c4600000000000000000000000000000000000000000000000000000000145b8061100d5750506001600160e01b0319167fbd85b039000000000000000000000000000000000000000000000000000000001490565b6000338161349e613e4e565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061351157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b1561351f5791506118f59050565b6001600160a01b03821632148015906135de57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156135b157600080fd5b505afa1580156135c5573d6000803e3d6000fd5b505050506040513d60208110156135db57600080fd5b50515b156135ec5791506118f59050565b50905090565b80613644576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b6000828152600360205260409020548181018181116136aa576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a20737570706c79206f766572666c6f77000000000000604482015290519081900360640190fd5b600093845260036020908152604080862092909255600281528185206001600160a01b039096168552949094525091902080549091019055565b81600114613739576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000838152600460205260409020541561379a576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206578697374696e672f6275726e74204e4654000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b0385169055806110315760006137e5847f0000000000000000000000000000000000000000000000000000000000000000612d70565b600090815260036020908152604080832080546001908101909155600283528184206001600160a01b038a168552909252909120805490910190555050505050565b7fbc197c81000000000000000000000000000000000000000000000000000000006001600160a01b03851663bc197c8161385f611fbe565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156138d85781810151838201526020016138c0565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156139175781810151838201526020016138ff565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561395357818101518382015260200161393b565b50505050905090810190601f1680156139805780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b1580156132f857600080fd5b6060816139e6575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152611010565b8160005b81156139fe57600101600a820491506139ea565b60008167ffffffffffffffff81118015613a1757600080fd5b506040519080825280601f01601f191660200182016040528015613a42576020820181803683370190505b50859350905060001982015b8315613aab57600a840660300160f81b82828060019003935081518110613a7157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350613a4e565b50949350505050565b826001600160a01b0316846001600160a01b0316146110315760009182526002602090815260408084206001600160a01b039687168552909152808320805483900390559290931681522080549091019055565b81613b1b6001600160a01b0382166131f0565b613b6c576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b60208310613ba95780518252601f199092019160209182019101613b8a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c0b576040519150601f19603f3d011682016040523d82523d6000602084013e613c10565b606091505b50915091508115613c8f57805115613c8a57808060200190516020811015613c3757600080fd5b5051613c8a576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b6111c1565b8051613ce2576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016811480613d5757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b15613d6e57613d64613e5a565b9250925050613e4a565b6001600160a01b0381163214801590613e3457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6613db9613e4e565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015613e0757600080fd5b505afa158015613e1b573d6000803e3d6000fd5b505050506040513d6020811015613e3157600080fd5b50515b15613e4157613d64613e5a565b60003692509250505b9091565b60131936013560601c90565b366000613e6d6013198301828481613f16565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282613eab5760008555613ef1565b82601f10613ec45782800160ff19823516178555613ef1565b82800160010185558215613ef1579182015b82811115613ef1578235825591602001919060010190613ed6565b50613efd929150613f01565b5090565b5b80821115613efd5760008155600101613f02565b60008085851115613f25578182fd5b83861115613f31578182fd5b505082019391909203915056fea2646970667358221220799517ed43c7de206c52a3f5810d2de2d9def4319ff824547ce02b5bb0755ea964736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1CE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80534934 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xBD85B039 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD0011D9D GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD0011D9D EQ PUSH2 0xDA7 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0xDC4 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0xDF2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xEBD JUMPI PUSH2 0x1CE JUMP JUMPDEST DUP1 PUSH4 0xBD85B039 EQ PUSH2 0xC51 JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xC6E JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0xD82 JUMPI DUP1 PUSH4 0xC7778BAA EQ PUSH2 0xD8A JUMPI PUSH2 0x1CE JUMP JUMPDEST DUP1 PUSH4 0x98650275 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0xBD8 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0xBE0 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xC0E JUMPI DUP1 PUSH4 0xADEBF6F2 EQ PUSH2 0xC34 JUMPI PUSH2 0x1CE JUMP JUMPDEST DUP1 PUSH4 0x80534934 EQ PUSH2 0xA73 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xBAA JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0xBB2 JUMPI PUSH2 0x1CE JUMP JUMPDEST DUP1 PUSH4 0x510B5158 GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x5CFA9297 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x5CFA9297 EQ PUSH2 0x810 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x8D2 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x8EF JUMPI DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0xA03 JUMPI PUSH2 0x1CE JUMP JUMPDEST DUP1 PUSH4 0x510B5158 EQ PUSH2 0x7A9 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x7E2 JUMPI DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x808 JUMPI PUSH2 0x1CE JUMP JUMPDEST DUP1 PUSH4 0xE89341C GT PUSH2 0x1AD JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x40C JUMPI DUP1 PUSH4 0x124D91E5 EQ PUSH2 0x49E JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x4D0 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x697 JUMPI PUSH2 0x1CE JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0xD6A5BBB EQ PUSH2 0x24C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xFCF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x29F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1015 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x429 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1037 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x463 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x44B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x490 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1042 JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x52C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x54E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x634 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x11B4 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x759 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x71A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x74E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x795 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x77D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7C6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x12CE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12D9 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x1352 JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x826 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x86F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x891 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x13E0 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x7C6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x13F7 JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x920 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x954 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x984 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1461 JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1553 JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xAB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xAE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x15CF SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x7C6 PUSH2 0x18E8 JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18F8 JUMP JUMPDEST PUSH2 0x40A PUSH2 0x190F JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x196D JUMP JUMPDEST PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A4E JUMP JUMPDEST PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1A63 JUMP JUMPDEST PUSH2 0x1FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1A6E JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xCD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1AE5 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x1C2D JUMP JUMPDEST PUSH2 0x1FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1C3C JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1CE3 JUMP JUMPDEST PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1CF7 JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xE08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xE48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xE7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1D25 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x40A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xED3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1ECC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xF40 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2061646472657373000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xF6A DUP3 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0xFA4 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0xF97 JUMPI PUSH1 0x0 PUSH2 0xF9A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0xFC9 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x510B515800000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x100D JUMPI POP PUSH2 0x100D DUP3 PUSH2 0x1F80 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1025 PUSH2 0x1020 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x1FC8 JUMP JUMPDEST PUSH2 0x1031 DUP5 DUP5 DUP5 DUP5 PUSH2 0x2035 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x100D DUP3 PUSH2 0x2361 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x104C PUSH2 0x1FBE JUMP JUMPDEST SWAP1 POP PUSH2 0x1058 DUP5 DUP3 PUSH2 0x2434 JUMP JUMPDEST PUSH2 0x10A9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x10B2 DUP4 PUSH2 0x2480 JUMP JUMPDEST ISZERO PUSH2 0x10C7 JUMPI PUSH2 0x10C2 DUP5 DUP5 DUP5 PUSH2 0x24A6 JUMP JUMPDEST PUSH2 0x1150 JUMP JUMPDEST PUSH2 0x10F1 DUP4 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x1103 JUMPI PUSH2 0x10C2 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x25AF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120746F6B656E20696400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x11C1 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2719 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP3 EQ PUSH2 0x121E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1261 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP1 DUP7 EQ PUSH2 0x12C4 JUMPI PUSH2 0x12A5 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x127D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x1299 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0xEE3 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x12B1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1267 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100D DUP3 PUSH2 0x2A57 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x100D JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x13D8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x13AD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x13D8 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 0x13BB JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0x13EB PUSH2 0x1020 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x1031 DUP5 DUP5 DUP5 DUP5 PUSH2 0x2AF1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x100D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1471 PUSH2 0x146C PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x2C27 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1480 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x14D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1549 JUMPI PUSH2 0x1541 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x14EA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1506 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1519 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CEB SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x14D4 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x155E PUSH2 0x146C PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x156A PUSH1 0x6 DUP4 DUP4 PUSH2 0x3E75 JUMP JUMPDEST POP PUSH32 0x4B1DC5C136A3CE9FDED8DB0CE3D3366C58764EC3A8E4C2B9E52E4DDFE5EBBF7 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG1 POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x1626 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1630 PUSH2 0x1FBE JUMP JUMPDEST SWAP1 POP PUSH2 0x163C DUP6 DUP3 PUSH2 0x2434 JUMP JUMPDEST PUSH2 0x168D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x17C3 JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x16A8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x16C0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x16D3 DUP3 PUSH2 0x2480 JUMP JUMPDEST ISZERO PUSH2 0x16E8 JUMPI PUSH2 0x16E3 DUP11 DUP4 DUP4 PUSH2 0x24A6 JUMP JUMPDEST PUSH2 0x17B9 JUMP JUMPDEST PUSH2 0x1712 DUP3 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x1103 JUMPI PUSH2 0x1724 DUP11 DUP4 DUP4 PUSH1 0x1 PUSH2 0x25AF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1750 DUP4 PUSH32 0x0 PUSH2 0x2D70 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x1763 JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x17B7 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x17B0 JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP10 SWAP1 SUB SWAP1 SSTORE SWAP8 DUP3 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP6 SWAP1 SWAP6 KECCAK256 DUP1 SLOAD SWAP5 SWAP1 SWAP5 SUB SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP3 DUP5 PUSH2 0x17B7 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1693 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x1805 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x188B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1873 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18CA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x18B2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1903 PUSH2 0x146C PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x190C DUP2 PUSH2 0x2D86 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1919 PUSH2 0x1FBE JUMP JUMPDEST SWAP1 POP PUSH2 0x1924 DUP2 PUSH2 0x1FC8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1977 PUSH2 0x1FBE JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x19E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2073656C662D617070726F76616C0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100D DUP3 PUSH2 0x2480 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A9A DUP3 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x1AD0 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1AC3 JUMPI PUSH1 0x1 PUSH2 0x1AC6 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1010 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1010 JUMP JUMPDEST PUSH2 0x1AF0 PUSH2 0x146C PUSH2 0x1FBE JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1AFF JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1B50 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1549 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x1B66 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x1B91 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x1BAD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C1E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x1B53 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1C37 PUSH2 0x2DD2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C68 DUP3 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST PUSH2 0x1CB9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420616E204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x100D DUP3 PUSH32 0x0 PUSH2 0x2D70 JUMP JUMPDEST PUSH2 0x1CEE PUSH2 0x146C PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x190C DUP2 PUSH2 0x2E16 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D2F PUSH2 0x1FBE JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x1D8C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D96 DUP7 DUP3 PUSH2 0x2434 JUMP JUMPDEST PUSH2 0x1DE7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1DF0 DUP5 PUSH2 0x2480 JUMP JUMPDEST ISZERO PUSH2 0x1E06 JUMPI PUSH2 0x1E01 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2F83 JUMP JUMPDEST PUSH2 0x1E43 JUMP JUMPDEST PUSH2 0x1E30 DUP5 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x1103 JUMPI PUSH2 0x1E01 DUP7 DUP7 DUP7 DUP7 PUSH1 0x0 PUSH2 0x30A1 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1EB2 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x31F0 JUMP JUMPDEST ISZERO PUSH2 0x1EC4 JUMPI PUSH2 0x1EC4 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x31F6 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1ED7 PUSH2 0x146C PUSH2 0x1FBE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1F79 JUMPI POP PUSH2 0x1F74 DUP3 PUSH2 0x3380 JUMP JUMPDEST DUP4 AND ISZERO ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x921ED8D100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x100D JUMPI POP PUSH2 0x100D DUP3 PUSH2 0x3391 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C37 PUSH2 0x3492 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x190C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2090 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x20E7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 EQ PUSH2 0x221B JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2102 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x211A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x212D DUP3 PUSH2 0x2480 JUMP JUMPDEST ISZERO PUSH2 0x2142 JUMPI PUSH2 0x213D DUP11 DUP4 DUP4 PUSH2 0x35F2 JUMP JUMPDEST PUSH2 0x2211 JUMP JUMPDEST PUSH2 0x216C DUP3 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x1103 JUMPI PUSH2 0x217E DUP11 DUP4 DUP4 PUSH1 0x1 PUSH2 0x36E4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AA DUP4 PUSH32 0x0 PUSH2 0x2D70 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x21BD JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x220F JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x2208 JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP10 ADD SWAP1 SSTORE SWAP8 DUP3 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP6 SWAP1 SWAP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP5 ADD SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP3 DUP5 PUSH2 0x220F JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x20ED JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x225B JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 PUSH2 0x226F PUSH2 0x1FBE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22DF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x22C7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x231E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2306 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2345 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x31F0 JUMP JUMPDEST ISZERO PUSH2 0x2358 JUMPI PUSH2 0x2358 PUSH1 0x0 DUP9 DUP9 DUP9 DUP9 PUSH2 0x3827 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x6 PUSH2 0x236E DUP4 PUSH2 0x39A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x23CC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x23AA JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x23CC 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 0x23B8 JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x23F8 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x23D9 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1F79 JUMPI POP POP 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 AND ISZERO SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x24F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x2570 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420656E6F7567682062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP8 AND DUP4 MSTORE SWAP6 DUP2 MSTORE DUP6 DUP3 KECCAK256 SWAP3 DUP5 SWAP1 SUB SWAP1 SWAP3 SSTORE SWAP3 DUP4 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x2604 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 AND EQ PUSH2 0x2672 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6F776E6564204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH32 0xDEAD000000000000000000000000000000000000000000000000000000000000 SWAP1 SSTORE DUP1 PUSH2 0x1031 JUMPI PUSH1 0x0 PUSH2 0x26D4 DUP5 PUSH32 0x0 PUSH2 0x2D70 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE SWAP4 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2774 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x27CB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x27D5 PUSH2 0x1FBE JUMP JUMPDEST SWAP1 POP PUSH2 0x27E1 DUP8 DUP3 PUSH2 0x2434 JUMP JUMPDEST PUSH2 0x2832 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x293C JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x284D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2865 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x2878 DUP3 PUSH2 0x2480 JUMP JUMPDEST ISZERO PUSH2 0x288E JUMPI PUSH2 0x2889 DUP13 DUP13 DUP5 DUP5 PUSH2 0x2F83 JUMP JUMPDEST PUSH2 0x2932 JUMP JUMPDEST PUSH2 0x28B8 DUP3 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x1103 JUMPI PUSH2 0x28CB DUP13 DUP13 DUP5 DUP5 PUSH1 0x1 PUSH2 0x30A1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28F7 DUP4 PUSH32 0x0 PUSH2 0x2D70 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x290A JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x2930 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x2929 JUMPI PUSH2 0x291D DUP14 DUP14 DUP9 DUP9 PUSH2 0x3AB4 JUMP JUMPDEST DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x2930 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2838 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x294F JUMPI PUSH2 0x294F DUP10 DUP10 DUP5 DUP5 PUSH2 0x3AB4 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP11 DUP11 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x29D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x29BC JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2A13 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x29FB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2A3A DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x31F0 JUMP JUMPDEST ISZERO PUSH2 0x2A4C JUMPI PUSH2 0x2A4C DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x3827 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A83 DUP3 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x2AD5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2B4C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2B55 DUP4 PUSH2 0x2480 JUMP JUMPDEST ISZERO PUSH2 0x2B6A JUMPI PUSH2 0x2B65 DUP5 DUP5 DUP5 PUSH2 0x35F2 JUMP JUMPDEST PUSH2 0x2BA6 JUMP JUMPDEST PUSH2 0x2B94 DUP4 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x1103 JUMPI PUSH2 0x2B65 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x36E4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 PUSH2 0x2BBA PUSH2 0x1FBE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2C14 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x31F0 JUMP JUMPDEST ISZERO PUSH2 0x1031 JUMPI PUSH2 0x1031 PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 PUSH2 0x31F6 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x190C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x2D6B SWAP1 DUP5 SWAP1 PUSH2 0x3B08 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D7B DUP3 PUSH2 0x3380 JUMP JUMPDEST NOT DUP4 AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2DDC PUSH2 0x3CEB JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2E40 DUP2 PUSH32 0x0 PUSH2 0x1F3D JUMP JUMPDEST ISZERO PUSH2 0x2E92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2EFC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E6720636F6C6C656374696F6E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2F04 PUSH2 0x1FBE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x2F51 DUP2 PUSH2 0x2480 JUMP JUMPDEST ISZERO ISZERO DUP2 PUSH32 0x4EBF8AD0DF535BA5E487BC9CB27FE44120CA81C3A95D3EBA79C0BD1DF2AB2D5D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST DUP1 PUSH2 0x2FD5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x304D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420656E6F7567682062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x11C1 JUMPI PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP7 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP5 KECCAK256 SWAP2 DUP4 SWAP1 SUB SWAP1 SWAP2 SSTORE SWAP3 SWAP1 SWAP4 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x30F6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ PUSH2 0x3164 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6F776E6564204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 SSTORE DUP1 PUSH2 0x11C1 JUMPI PUSH1 0x0 PUSH2 0x31AF DUP5 PUSH32 0x0 PUSH2 0x2D70 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP6 SWAP1 SWAP7 AND DUP7 MSTORE POP POP POP SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xF23A6E61 PUSH2 0x322E PUSH2 0x1FBE JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x32A8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3290 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x32D5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x330C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x11C1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220726566757365640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH2 0x100 SWAP2 SWAP1 SWAP2 SUB SHL PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x33F4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x3428 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x345C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9CE5C4600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x100D JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xBD85B03900000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x349E PUSH2 0x3E4E JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x3511 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x351F JUMPI SWAP2 POP PUSH2 0x18F5 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x35DE JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x35EC JUMPI SWAP2 POP PUSH2 0x18F5 SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x3644 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x36AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20737570706C79206F766572666C6F77000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP2 MSTORE DUP2 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP6 MSTORE SWAP5 SWAP1 SWAP5 MSTORE POP SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x3739 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x379A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E672F6275726E74204E4654000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 SSTORE DUP1 PUSH2 0x1031 JUMPI PUSH1 0x0 PUSH2 0x37E5 DUP5 PUSH32 0x0 PUSH2 0x2D70 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xBC197C81 PUSH2 0x385F PUSH2 0x1FBE JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x38D8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x38C0 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3917 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x38FF JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3953 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x393B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3980 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x39E6 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1010 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x39FE JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x39EA JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3A17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x3A42 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x3AAB JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x3A71 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x3A4E JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1031 JUMPI PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE SWAP3 SWAP1 SWAP4 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH2 0x3B1B PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x31F0 JUMP JUMPDEST PUSH2 0x3B6C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3BA9 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3B8A JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3C0B 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 0x3C10 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x3C8F JUMPI DUP1 MLOAD ISZERO PUSH2 0x3C8A JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3C8A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x11C1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x3CE2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x3D57 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x3D6E JUMPI PUSH2 0x3D64 PUSH2 0x3E5A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x3E4A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x3E34 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x3DB9 PUSH2 0x3E4E JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3E1B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x3E41 JUMPI PUSH2 0x3D64 PUSH2 0x3E5A JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x3E6D PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x3F16 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x3EAB JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3EF1 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3EC4 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x3EF1 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3EF1 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3EF1 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3ED6 JUMP JUMPDEST POP PUSH2 0x3EFD SWAP3 SWAP2 POP PUSH2 0x3F01 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3EFD JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3F02 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x3F25 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x3F31 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH26 0x9517ED43C7DE206C52A3F5810D2DE2D9DEF4319FF824547CE02B JUMPDEST 0xB0 PUSH22 0x5EA964736F6C63430007060033000000000000000000 ",
              "sourceMap": "1140:3660:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3377:341:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3377:341:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1801:212:26;;;;;;;;;;;;;;;;-1:-1:-1;1801:212:26;-1:-1:-1;;;;;;1801:212:26;;:::i;:::-;;;;;;;;;;;;;;;;;;3810:255;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3810:255:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3810:255:26;;;;;;;;-1:-1:-1;3810:255:26;;-1:-1:-1;;3810:255:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3810:255:26;;;;;;;;-1:-1:-1;3810:255:26;;-1:-1:-1;;3810:255:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3810:255:26;;-1:-1:-1;3810:255:26;;-1:-1:-1;;;;;3810:255:26:i;:::-;;2188:112;;;;;;;;;;;;;;;;-1:-1:-1;2188:112:26;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1366:576:14;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1366:576:14;;;;;;;;;;;;;:::i;1930:320:12:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1930:320:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1930:320:12;;;;;;;;-1:-1:-1;1930:320:12;;-1:-1:-1;;1930:320:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1930:320:12;;;;;;;;-1:-1:-1;1930:320:12;;-1:-1:-1;;1930:320:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1930:320:12;;-1:-1:-1;1930:320:12;;-1:-1:-1;;;;;1930:320:12:i;3762:435:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3762:435:13;;-1:-1:-1;3762:435:13;-1:-1:-1;3762:435:13;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2480:126:26;;;;;;;;;;;;;;;;-1:-1:-1;2480:126:26;;:::i;:::-;;;;-1:-1:-1;;;;;2480:126:26;;;;;;;;;;;;;;544:193:85;;;;;;;;;;;;;;;;-1:-1:-1;544:193:85;-1:-1:-1;;;;;544:193:85;;:::i;552:29:11:-;;;:::i;3483:223:26:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3483:223:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3483:223:26;;-1:-1:-1;3483:223:26;;-1:-1:-1;;;;;3483:223:26:i;5369:235:13:-;;;;;;;;;;;;;;;;-1:-1:-1;5369:235:13;;:::i;1137:481:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1137:481:8;;-1:-1:-1;1137:481:8;-1:-1:-1;1137:481:8;:::i;588:214:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;588:214:11;;-1:-1:-1;588:214:11;-1:-1:-1;588:214:11;:::i;1994:1801:14:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1994:1801:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1994:1801:14;;;;;;;;-1:-1:-1;1994:1801:14;;-1:-1:-1;;1994:1801:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1994:1801:14;;-1:-1:-1;1994:1801:14;;-1:-1:-1;;;;;1994:1801:14:i;1114:94:2:-;;;:::i;694:120:1:-;;;;;;;;;;;;;;;;-1:-1:-1;694:120:1;-1:-1:-1;;;;;694:120:1;;:::i;929:185::-;;;:::i;4232:301:13:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4232:301:13;;;;;;;;;;:::i;339:40:1:-;;;;;;;;;;;;;;;;-1:-1:-1;339:40:1;-1:-1:-1;;;;;339:40:1;;:::i;4905:122:13:-;;;;;;;;;;;;;;;;-1:-1:-1;4905:122:13;;:::i;5788:282::-;;;;;;;;;;;;;;;;-1:-1:-1;5788:282:13;;:::i;2430:511:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2430:511:8;;-1:-1:-1;2430:511:8;-1:-1:-1;2430:511:8;:::i;4704:94:26:-;;;:::i;5071:254:13:-;;;;;;;;;;;;;;;;-1:-1:-1;5071:254:13;;:::i;3104:146:26:-;;;;;;;;;;;;;;;;-1:-1:-1;3104:146:26;;:::i;4568:164:13:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4568:164:13;;;;;;;;;;:::i;1077:809:12:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1077:809:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1077:809:12;;-1:-1:-1;1077:809:12;;-1:-1:-1;;;;;1077:809:12:i;1448:197:2:-;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;3377:341:13:-;3461:7;-1:-1:-1;;;;;3488:19:13;;3480:55;;;;;-1:-1:-1;;;3480:55:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;3550:44;:2;3572:21;3550;:44::i;:::-;3546:128;;;3633:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;3617:38:13;;;;;;:46;;3662:1;3617:46;;;3658:1;3617:46;3610:53;;;;;;3546:128;-1:-1:-1;3691:13:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;3691:20:13;;;;;;;;;;3377:341;;;;;:::o;1801:212:26:-;1886:4;-1:-1:-1;;;;;;1909:57:26;;1924:42;1909:57;;:97;;;1970:36;1994:11;1970:23;:36::i;:::-;1902:104;;1801:212;;;;:::o;3810:255::-;3983:28;3998:12;:10;:12::i;:::-;3983:14;:28::i;:::-;4021:37;4036:2;4040:3;4045:6;4053:4;4021:14;:37::i;:::-;3810:255;;;;:::o;2188:112::-;2253:13;2285:8;2290:2;2285:4;:8::i;1366:576:14:-;1489:14;1506:12;:10;:12::i;:::-;1489:29;;1536:27;1550:4;1556:6;1536:13;:27::i;:::-;1528:70;;;;;-1:-1:-1;;;1528:70:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:20;:2;:18;:20::i;:::-;1609:260;;;1649:30;1663:4;1669:2;1673:5;1649:13;:30::i;:::-;1609:260;;;1700:44;:2;1722:21;1700;:44::i;:::-;1696:173;;;1760:32;1769:4;1775:2;1779:5;1786;1760:8;:32::i;1696:173::-;1823:35;;;-1:-1:-1;;;1823:35:14;;;;;;;;;;;;;;;;;;;;;;;;;;;1696:173;1921:1;-1:-1:-1;;;;;1884:51:14;1907:4;-1:-1:-1;;;;;1884:51:14;1899:6;-1:-1:-1;;;;;1884:51:14;;1925:2;1929:5;1884:51;;;;;;;;;;;;;;;;;;;;;;;;1366:576;;;;:::o;1930:320:12:-;2192:51;2215:4;2221:2;2225:3;2230:6;2238:4;2192:22;:51::i;:::-;1930:320;;;;;:::o;3762:435:13:-;3877:16;3913:27;;;3905:70;;;;;-1:-1:-1;;;3905:70:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;3986:25;4028:6;4014:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4014:28:13;;3986:56;;4058:9;4053:112;4073:18;;;4053:112;;4126:28;4136:6;;4143:1;4136:9;;;;;;;;;;;;;-1:-1:-1;;;;;4136:9:13;4147:3;;4151:1;4147:6;;;;;;;;;;;;;4126:9;:28::i;:::-;4112:8;4121:1;4112:11;;;;;;;;;;;;;;;;;:42;4093:3;;4053:112;;;-1:-1:-1;4182:8:13;3762:435;-1:-1:-1;;;;;3762:435:13:o;2480:126:26:-;2551:7;2577:22;2586:12;2577:8;:22::i;544:193:85:-;631:4;667:19;-1:-1:-1;;;;;654:32:85;:9;-1:-1:-1;;;;;654:32:85;;:76;;;;711:18;-1:-1:-1;;;;;690:40:85;:9;-1:-1:-1;;;;;690:40:85;;647:83;;544:193;;;:::o;552:29:11:-;;;;;;;;;;;;;;;-1:-1:-1;;552:29:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3483:223:26:-;3631:28;3646:12;:10;:12::i;3631:28::-;3669:30;3679:2;3683;3687:5;3694:4;3669:9;:30::i;5369:235:13:-;5439:7;5490:14;;;:7;:14;;;;;;-1:-1:-1;;;;;5524:19:13;;5516:59;;;;;-1:-1:-1;;;5516:59:13;;;;;;;;;;;;;;;;;;;;;;;;;;;1137:481:8;1301:31;1319:12;:10;:12::i;:::-;1301:17;:31::i;:::-;1359:8;1392:23;;;:51;;;;-1:-1:-1;1419:24:8;;;1392:51;1384:90;;;;;-1:-1:-1;;;1384:90:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;1489:9;1484:128;1509:6;1504:1;:11;1484:128;;1536:65;1577:8;;1586:1;1577:11;;;;;;;;;;;;;-1:-1:-1;;;;;1577:11:8;1590:7;;1598:1;1590:10;;;;;;;;;;;;;1550:6;;1557:1;1550:9;;;;;;;;;;;;;-1:-1:-1;;;;;1550:9:8;-1:-1:-1;;;;;1536:40:8;;;:65;;;;;:::i;:::-;1517:3;;1484:128;;;;1137:481;;;;;;;:::o;588:214:11:-;669:31;687:12;:10;:12::i;669:31::-;710:34;:15;728:16;;710:34;:::i;:::-;;759:36;778:16;;759:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;759:36:11;;;;;;;;-1:-1:-1;759:36:11;;-1:-1:-1;;;;759:36:11;588:214;;:::o;1994:1801:14:-;2159:10;;2197:13;;2187:23;;2179:66;;;;;-1:-1:-1;;;2179:66:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;2256:14;2273:12;:10;:12::i;:::-;2256:29;;2303:27;2317:4;2323:6;2303:13;:27::i;:::-;2295:70;;;;;-1:-1:-1;;;2295:70:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;2376:22;2408:25;2448:9;2443:1106;2464:6;2459:1;:11;2443:1106;;2491:10;2504:3;2508:1;2504:6;;;;;;;;;;;;;;2491:19;;2524:13;2540:6;2547:1;2540:9;;;;;;;;;;;;;;2524:25;;2567:20;:2;:18;:20::i;:::-;2563:976;;;2607:30;2621:4;2627:2;2631:5;2607:13;:30::i;:::-;2563:976;;;2662:44;:2;2684:21;2662;:44::i;:::-;2658:881;;;2726:31;2735:4;2741:2;2745:5;2752:4;2726:8;:31::i;:::-;2775:24;2802:50;:2;2830:21;2802:27;:50::i;:::-;2775:77;-1:-1:-1;2874:19:14;2870:581;;2934:16;2917:33;;2992:1;2972:21;;2870:581;;;3064:14;3044:16;:34;3040:393;;3106:25;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;3106:31:14;;;;;;;;;:52;;;;;;;3184:25;;;:9;:25;;;;;;:46;;;;;;;;;-1:-1:-1;;3273:16:14;3040:393;;;3391:19;;;;;3040:393;2658:881;;-1:-1:-1;;2472:3:14;;2443:1106;;;-1:-1:-1;3563:19:14;;3559:162;;3598:25;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;3598:31:14;;;;;;;;;:52;;;;;;;3664:25;;;:9;:25;;;;;:46;;;;;;;3559:162;3772:1;-1:-1:-1;;;;;3736:52:14;3758:4;-1:-1:-1;;;;;3736:52:14;3750:6;-1:-1:-1;;;;;3736:52:14;;3776:3;3781:6;3736:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1994:1801;;;;;;;:::o;1114:94:2:-;1169:7;1195:6;-1:-1:-1;;;;;1195:6:2;1114:94;;:::o;694:120:1:-;747:31;765:12;:10;:12::i;747:31::-;788:19;799:7;788:10;:19::i;:::-;694:120;:::o;929:185::-;972:15;990:12;:10;:12::i;:::-;972:30;;1012:23;1027:7;1012:14;:23::i;:::-;-1:-1:-1;;;;;1045:17:1;;1065:5;1045:17;;;:8;:17;;;;;;:25;;-1:-1:-1;;1045:25:1;;;1085:22;;;1065:5;1085:22;929:185;:::o;4232:301:13:-;4326:14;4343:12;:10;:12::i;:::-;4326:29;;4385:6;-1:-1:-1;;;;;4373:18:13;:8;-1:-1:-1;;;;;4373:18:13;;;4365:55;;;;;-1:-1:-1;;;4365:55:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4430:18:13;;;;;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;;:39;;-1:-1:-1;;4430:39:13;;;;;;;;;;4484:42;;;;;;;;;;;;;;;;;4232:301;;;:::o;339:40:1:-;;;;;;;;;;;;;;;:::o;4905:122:13:-;4977:4;5000:20;:2;:18;:20::i;5788:282::-;5861:7;5884:44;:2;5906:21;5884;:44::i;:::-;5880:184;;;5992:1;5967:11;;;:7;:11;;;;;;-1:-1:-1;;;;;5951:43:13;;:51;;6001:1;5951:51;;;5997:1;5951:51;5944:58;;;;;;5880:184;-1:-1:-1;6040:13:13;;;;:9;:13;;;;;;6033:20;;2430:511:8;2599:31;2617:12;:10;:12::i;2599:31::-;2657:8;2690:26;;;:55;;;;-1:-1:-1;2720:25:8;;;2690:55;2682:94;;;;;-1:-1:-1;;;2682:94:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:9;2786:149;2811:6;2806:1;:11;2786:149;;2857:9;;2867:1;2857:12;;;;;;;;;;;;;-1:-1:-1;;;;;2857:12:8;-1:-1:-1;;;;;2838:45:8;;2892:4;2899:8;;2908:1;2899:11;;;;;;;;;;;;;-1:-1:-1;;;;;2899:11:8;2912:8;;2921:1;2912:11;;;;;;;;;;;;;2838:86;;;;;;;;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:3;;;;;2786:149;;4704:94:26;4746:16;4781:10;:8;:10::i;:::-;4774:17;;4704:94;:::o;5071:254:13:-;5148:7;5175:47;:5;5200:21;5175:24;:47::i;:::-;5167:81;;;;;-1:-1:-1;;;5167:81:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;5265:53;:5;5296:21;5265:30;:53::i;3104:146:26:-;3171:31;3189:12;:10;:12::i;3171:31::-;3212;3230:12;3212:17;:31::i;4568:164:13:-;-1:-1:-1;;;;;4693:22:13;;;4670:4;4693:22;;;:10;:22;;;;;;;;:32;;;;;;;;;;;;;;;4568:164::o;1077:809:12:-;1255:14;1272:12;:10;:12::i;:::-;1255:29;-1:-1:-1;;;;;;1302:16:12;;1294:56;;;;;-1:-1:-1;;;1294:56:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;1368:27;1382:4;1388:6;1368:13;:27::i;:::-;1360:70;;;;;-1:-1:-1;;;1360:70:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;1445:20;:2;:18;:20::i;:::-;1441:276;;;1481:38;1499:4;1505:2;1509;1513:5;1481:17;:38::i;:::-;1441:276;;;1540:44;:2;1562:21;1540;:44::i;:::-;1536:181;;;1600:40;1613:4;1619:2;1623;1627:5;1634;1600:12;:40::i;1536:181::-;1761:2;-1:-1:-1;;;;;1732:43:12;1755:4;-1:-1:-1;;;;;1732:43:12;1747:6;-1:-1:-1;;;;;1732:43:12;;1765:2;1769:5;1732:43;;;;;;;;;;;;;;;;;;;;;;;;1789:15;:2;-1:-1:-1;;;;;1789:13:12;;:15::i;:::-;1785:95;;;1820:49;1843:4;1849:2;1853;1857:5;1864:4;1820:22;:49::i;:::-;1077:809;;;;;;:::o;1448:197:2:-;1527:31;1545:12;:10;:12::i;1527:31::-;1568:6;:17;;;;-1:-1:-1;;;;;1568:17:2;;;;;;;;;1600:38;;1568:17;;1621:6;;;1600:38;;1568:6;1600:38;1448:197;:::o;875:200:15:-;968:4;747:8;991:12;;:17;;;;:77;;;1017:46;1042:20;1017:24;:46::i;:::-;1012:51;;:56;;991:77;984:84;875:200;-1:-1:-1;;;875:200:15:o;972:213:14:-;1057:4;-1:-1:-1;;;;;;1080:58:14;;1095:43;1080:58;;:98;;;1142:36;1166:11;1142:23;:36::i;4200:183:26:-;4305:15;4339:37;:35;:37::i;1120:126:1:-;-1:-1:-1;;;;;1193:17:1;;;;;;:8;:17;;;;;;;;1185:54;;;;;-1:-1:-1;;;1185:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;4973:1875:12;-1:-1:-1;;;;;5148:16:12;;5140:52;;;;;-1:-1:-1;;;5140:52:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;5219:10;;5257:13;;5247:23;;5239:66;;;;;-1:-1:-1;;;5239:66:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;5316:22;5348:25;5388:9;5383:1100;5404:6;5399:1;:11;5383:1100;;5431:10;5444:3;5448:1;5444:6;;;;;;;;;;;;;;5431:19;;5464:13;5480:6;5487:1;5480:9;;;;;;;;;;;;;;5464:25;;5507:20;:2;:18;:20::i;:::-;5503:970;;;5547:28;5561:2;5565;5569:5;5547:13;:28::i;:::-;5503:970;;;5600:44;:2;5622:21;5600;:44::i;:::-;5596:877;;;5664:29;5673:2;5677;5681:5;5688:4;5664:8;:29::i;:::-;5711:24;5738:50;:2;5766:21;5738:27;:50::i;:::-;5711:77;-1:-1:-1;5810:19:12;5806:579;;5870:16;5853:33;;5928:1;5908:21;;5806:579;;;6000:14;5980:16;:34;5976:391;;6042:25;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;6042:29:12;;;;;;;;;:50;;;;;;6118:25;;;:9;:25;;;;;;:46;;;;;;;;-1:-1:-1;;6207:16:12;5976:391;;;6325:19;;;;;5976:391;5596:877;;-1:-1:-1;;5412:3:12;;5383:1100;;;-1:-1:-1;6497:19:12;;6493:160;;6532:25;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;6532:29:12;;;;;;;;;:50;;;;;;6596:25;;;:9;:25;;;;;:46;;;;;;6493:160;-1:-1:-1;;;;;6668:56:12;;6704:1;6682:12;:10;:12::i;:::-;-1:-1:-1;;;;;6668:56:12;;6712:3;6717:6;6668:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6738:15;:2;-1:-1:-1;;;;;6738:13:12;;:15::i;:::-;6734:108;;;6769:62;6805:1;6809:2;6813:3;6818:6;6826:4;6769:27;:62::i;:::-;4973:1875;;;;;;;:::o;808:159:11:-;865:13;921:15;938:20;:2;:18;:20::i;:::-;904:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:11;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;890:70;;808:159;;;:::o;7572:158:13:-;7656:4;7688:6;-1:-1:-1;;;;;7680:14:13;:4;-1:-1:-1;;;;;7680:14:13;;7679:44;;;-1:-1:-1;;;;;;;7699:16:13;;;;;;;:10;:16;;;;;;;;:24;;;;;;;;;;;;;;;7572:158::o;762:107:15:-;747:8;845:12;:17;;762:107::o;3930:386:14:-;4051:10;4043:44;;;;;-1:-1:-1;;;4043:44:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;4097:15;4115:13;;;:9;:13;;;;;;;;-1:-1:-1;;;;;4115:19:14;;;;;;;;;;4152:16;;;;4144:58;;;;;-1:-1:-1;;;4144:58:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;4212:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;4212:19:14;;;;;;;;;;;4234:15;;;;4212:37;;;4287:13;;;:9;:13;;;;;:22;;;;;;;;3930:386::o;4322:622::-;4460:5;4469:1;4460:10;4452:49;;;;;-1:-1:-1;;;4452:49:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;4543:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;4519:37:14;;;;;;4511:74;;;;;-1:-1:-1;;;4511:74:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;4595:11;;;;:7;:11;;;;;1835:66:13;4595:30:14;;4641:7;4636:302;;4664:20;4687:50;:2;4715:21;4687:27;:50::i;:::-;4827:23;;;;:9;:23;;;;;;;;-1:-1:-1;;;;;4827:29:14;;;;;;;;;4825:31;;-1:-1:-1;;4825:31:14;;;;;;4904:23;;;:9;:23;;;;;4902:25;;;;;;;-1:-1:-1;4322:622:14;;;;:::o;2385:1936:12:-;-1:-1:-1;;;;;2582:16:12;;2574:56;;;;;-1:-1:-1;;;2574:56:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;2657:10;;2695:13;;2685:23;;2677:66;;;;;-1:-1:-1;;;2677:66:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;2753:14;2770:12;:10;:12::i;:::-;2753:29;;2800:27;2814:4;2820:6;2800:13;:27::i;:::-;2792:70;;;;;-1:-1:-1;;;2792:70:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;2873:22;2905:25;2945:9;2940:1071;2961:6;2956:1;:11;2940:1071;;2988:10;3001:3;3005:1;3001:6;;;;;;;;;;;;;;2988:19;;3021:13;3037:6;3044:1;3037:9;;;;;;;;;;;;;;3021:25;;3064:20;:2;:18;:20::i;:::-;3060:941;;;3104:38;3122:4;3128:2;3132;3136:5;3104:17;:38::i;:::-;3060:941;;;3167:44;:2;3189:21;3167;:44::i;:::-;3163:838;;;3231:39;3244:4;3250:2;3254;3258:5;3265:4;3231:12;:39::i;:::-;3288:24;3315:50;:2;3343:21;3315:27;:50::i;:::-;3288:77;-1:-1:-1;3387:19:12;3383:530;;3447:16;3430:33;;3505:1;3485:21;;3383:530;;;3577:14;3557:16;:34;3553:342;;3619:73;3648:4;3654:2;3658:14;3674:17;3619:28;:73::i;:::-;3735:16;3718:33;;3797:1;3777:21;;3553:342;;;3853:19;;;;;3553:342;3163:838;;-1:-1:-1;;2969:3:12;;2940:1071;;;-1:-1:-1;4025:19:12;;4021:123;;4060:73;4089:4;4095:2;4099:14;4115:17;4060:28;:73::i;:::-;4187:2;-1:-1:-1;;;;;4159:44:12;4181:4;-1:-1:-1;;;;;4159:44:12;4173:6;-1:-1:-1;;;;;4159:44:12;;4191:3;4196:6;4159:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4217:15;:2;-1:-1:-1;;;;;4217:13:12;;:15::i;:::-;4213:102;;;4248:56;4276:4;4282:2;4286:3;4291:6;4299:4;4248:27;:56::i;:::-;2385:1936;;;;;;;;;:::o;6918:232:13:-;6989:7;7017:54;:12;7049:21;7017:31;:54::i;:::-;7016:55;7008:95;;;;;-1:-1:-1;;;7008:95:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7120:23:13;;;;:9;:23;;;;;;-1:-1:-1;;;;;7120:23:13;;6918:232::o;4327:640:12:-;-1:-1:-1;;;;;4469:16:12;;4461:52;;;;;-1:-1:-1;;;4461:52:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;4528:20;:2;:18;:20::i;:::-;4524:256;;;4564:28;4578:2;4582;4586:5;4564:13;:28::i;:::-;4524:256;;;4613:44;:2;4635:21;4613;:44::i;:::-;4609:171;;;4673:30;4682:2;4686;4690:5;4697;4673:8;:30::i;4609:171::-;-1:-1:-1;;;;;4795:55:12;;4832:1;4810:12;:10;:12::i;:::-;-1:-1:-1;;;;;4795:55:12;;4840:2;4844:5;4795:55;;;;;;;;;;;;;;;;;;;;;;;;4864:15;:2;-1:-1:-1;;;;;4864:13:12;;:15::i;:::-;4860:101;;;4895:55;4926:1;4930:2;4934;4938:5;4945:4;4895:22;:55::i;1770:136:2:-;1860:4;-1:-1:-1;;;;;1860:10:2;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1860:12:2;-1:-1:-1;;;;;1849:23:2;;;;;;1841:58;;;;;-1:-1:-1;;;1841:58:2;;;;;;;;;;;;;;;;;;;;;;;;;;;416:223:6;573:58;;;-1:-1:-1;;;;;573:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;596:23;573:58;;;538:94;;566:5;;538:27;:94::i;:::-;416:223;;;:::o;1081:190:15:-;1183:7;1218:46;1243:20;1218:24;:46::i;:::-;1217:47;1209:5;:55;1202:62;;1081:190;;;;:::o;1252:122:1:-;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;4389:180:26:-;4492:16;4527:35;:33;:35::i;:::-;4520:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4520:42:26;;-1:-1:-1;;;;4389:180:26;:::o;6518:394:13:-;6603:54;:12;6635:21;6603:31;:54::i;:::-;6602:55;6594:95;;;;;-1:-1:-1;;;6594:95:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;6742:1;6707:23;;;:9;:23;;;;;;-1:-1:-1;;;;;6707:23:13;:37;6699:80;;;;;-1:-1:-1;;;6699:80:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;6815:12;:10;:12::i;:::-;6789:23;;;;:9;:23;;;;;:38;;;;-1:-1:-1;;;;;6789:38:13;;;;;;;;;;6874:30;6789:23;6874:28;:30::i;:::-;6842:63;;6860:12;6842:63;;;;;;;;;;6518:394;:::o;8179:487:12:-;8324:10;8316:44;;;;;-1:-1:-1;;;8316:44:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;8370:15;8388:13;;;:9;:13;;;;;;;;-1:-1:-1;;;;;8388:19:12;;;;;;;;;;8425:16;;;;8417:58;;;;;-1:-1:-1;;;8417:58:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;8497:2;-1:-1:-1;;;;;8489:10:12;:4;-1:-1:-1;;;;;8489:10:12;;8485:175;;8515:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;8515:19:12;;;;;;;;;;;8537:15;;;;8515:37;;;8623:17;;;;;;;:26;;;;;;;8179:487::o;8672:683::-;8834:5;8843:1;8834:10;8826:49;;;;;-1:-1:-1;;;8826:49:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;8917:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;8893:37:12;;;;;;8885:74;;;;;-1:-1:-1;;;8885:74:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;8969:11;;;;:7;:11;;;;;-1:-1:-1;;;;;8983:20:12;;8969:34;;9018:7;9013:336;;9041:20;9064:50;:2;9092:21;9064:27;:50::i;:::-;9201:23;;;;:9;:23;;;;;;;;-1:-1:-1;;;;;9201:29:12;;;;;;;;;;;:34;;-1:-1:-1;;9201:34:12;;;9306:27;;;;;;-1:-1:-1;;;9306:27:12;;:32;;-1:-1:-1;9306:32:12;;;-1:-1:-1;8672:683:12:o;913:377:9:-;1229:20;1275:8;;;913:377::o;8201:317:13:-;8462:17;-1:-1:-1;;;;;8378:43:13;;1559:10;8422:12;:10;:12::i;:::-;8436:4;8442:2;8446:5;8453:4;8378:80;;;;;;;;;;;;;-1:-1:-1;;;;;8378:80:13;;;;;;-1:-1:-1;;;;;8378:80:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8378:80:13;-1:-1:-1;;;;;;8378:101:13;;8370:141;;;;;-1:-1:-1;;;8370:141:13;;;;;;;;;;;;;;;;;;;;;;;;;;;1277:158:15;1427:1;1396:3;:26;;;;1390:33;-1:-1:-1;;1389:39:15;;1277:158::o;2760:444:13:-;2845:4;-1:-1:-1;;;;;;2880:40:13;;2895:25;2880:40;;:97;;-1:-1:-1;;;;;;;2936:41:13;;2951:26;2936:41;2880:97;:165;;;-1:-1:-1;;;;;;;2993:52:13;;3008:37;2993:52;2880:165;:240;;;-1:-1:-1;;;;;;;3061:59:13;;3076:44;3061:59;2880:240;:317;;;-1:-1:-1;;;;;;;;3136:61:13;3151:46;3136:61;;2760:444::o;743:904:85:-;796:15;851:10;796:15;896:27;:25;:27::i;:::-;871:52;;958:18;-1:-1:-1;;;;;937:40:85;:9;-1:-1:-1;;;;;937:40:85;;:76;;;;994:19;-1:-1:-1;;;;;981:32:85;:9;-1:-1:-1;;;;;981:32:85;;937:76;933:166;;;1082:6;-1:-1:-1;1075:13:85;;-1:-1:-1;1075:13:85;933:166;-1:-1:-1;;;;;1496:22:85;;1509:9;1496:22;;;;:78;;;1522:18;-1:-1:-1;;;;;1522:33:85;;1556:6;1564:9;1522:52;;;;;;;;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1522:52:85;1496:78;1492:122;;;1597:6;-1:-1:-1;1590:13:85;;-1:-1:-1;1590:13:85;1492:122;-1:-1:-1;1631:9:85;-1:-1:-1;743:904:85;:::o;6983:476:12:-;7102:10;7094:44;;;;;-1:-1:-1;;;7094:44:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;7148:14;7165:13;;;:9;:13;;;;;;7208:14;;;7240:18;;;7232:57;;;;;-1:-1:-1;;;7232:57:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;7299:13;;;;:9;:13;;;;;;;;:25;;;;7426:9;:13;;;;;-1:-1:-1;;;;;7426:17:12;;;;;;;;;-1:-1:-1;7426:17:12;;;:26;;;;;;;6983:476::o;7465:708::-;7601:5;7610:1;7601:10;7593:49;;;;;-1:-1:-1;;;7593:49:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;7660:11;;;;:7;:11;;;;;;:16;7652:58;;;;;-1:-1:-1;;;7652:58:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;7721:11;;;;:7;:11;;;;;-1:-1:-1;;;;;7735:20:12;;7721:34;;7771:7;7766:401;;7794:20;7817:50;:2;7845:21;7817:27;:50::i;:::-;8033:23;;;;:9;:23;;;;;;;;8031:25;;;;;;;;;8129:9;:23;;;;;-1:-1:-1;;;;;8129:27:12;;;;;;;;;;8127:29;;;;;;;-1:-1:-1;7465:708:12;;;;:::o;9002:389:13:-;9308:23;-1:-1:-1;;;;;9217:48:13;;1721:10;9266:12;:10;:12::i;:::-;9280:4;9286:3;9291:6;9299:4;9217:87;;;;;;;;;;;;;-1:-1:-1;;;;;9217:87:13;;;;;;-1:-1:-1;;;;;9217:87:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;276:546:10;339:13;368:10;364:51;;-1:-1:-1;394:10:10;;;;;;;;;;;;;;;;;;;364:51;439:5;424:12;478:75;485:9;;478:75;;510:8;;540:2;532:10;;;;478:75;;;562:19;594:6;584:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;584:17:10;-1:-1:-1;654:5:10;;-1:-1:-1;562:39:10;-1:-1:-1;;;627:10:10;;669:116;676:9;;669:116;;745:2;738:4;:9;732:2;:16;719:31;;701:6;708:7;;;;;;;701:15;;;;;;;;;;;:49;;;;;;;;;;-1:-1:-1;772:2:10;764:10;;;;669:116;;;-1:-1:-1;808:6:10;276:546;-1:-1:-1;;;;276:546:10:o;9361:434:12:-;9540:2;-1:-1:-1;;;;;9532:10:12;:4;-1:-1:-1;;;;;9532:10:12;;9528:261;;9631:23;;;;:9;:23;;;;;;;;-1:-1:-1;;;;;9631:29:12;;;;;;;;;;;:39;;;;;;;9741:27;;;;;;;:37;;;;;;;9361:434::o;1147:870:6:-;1272:5;1296:19;-1:-1:-1;;;;;1296:17:6;;;:19::i;:::-;1288:58;;;;;-1:-1:-1;;;1288:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:12;1431:17;1452:6;-1:-1:-1;;;;;1452:11:6;1464:8;1452:21;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1452:21:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:57;;;;1487:7;1483:528;;;1514:11;;:16;1510:122;;1569:4;1558:24;;;;;;;;;;;;;;;-1:-1:-1;1558:24:6;1550:67;;;;;-1:-1:-1;;;1550:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:528;;;1720:11;;1716:95;;1756:40;;;-1:-1:-1;;;1756:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:95;1938:4;1932:11;1982:4;1975;1971:2;1967:13;1960:27;1653:670:85;1704:14;;1758:10;-1:-1:-1;;;;;1803:18:85;1782:40;;;;:76;;;1839:19;-1:-1:-1;;;;;1826:32:85;:9;-1:-1:-1;;;;;1826:32:85;;1782:76;1778:197;;;1927:37;:35;:37::i;:::-;1920:44;;;;;;;1778:197;-1:-1:-1;;;;;2122:22:85;;2135:9;2122:22;;;;:99;;;2148:18;-1:-1:-1;;;;;2148:33:85;;2182:27;:25;:27::i;:::-;2211:9;2148:73;;;;;;;;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2148:73:85;2122:99;2118:174;;;2244:37;:35;:37::i;2118:174::-;2308:8;;2301:15;;;;;1653:670;;;:::o;103:519:84:-;-1:-1:-1;;585:14:84;581:23;568:37;564:2;560:46;;536:80::o;628:149::-;706:14;;739:31;-1:-1:-1;;749:20:84;;706:14;;;739:31;:::i;:::-;732:38;;;;628:149;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:363:86;;;172:8;160:10;157:24;154:2;;;202:9;191;184:28;154:2;239:6;229:8;226:20;223:2;;;267:9;256;249:28;223:2;-1:-1:-1;;301:23:86;;;346:25;;;;;-1:-1:-1;144:233:86:o"
            },
            "methodIdentifiers": {
              "addMinter(address)": "983b2d56",
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "baseMetadataURI()": "5b2bd79e",
              "batchBurnFrom(address,uint256[],uint256[])": "80534934",
              "burnFrom(address,uint256,uint256)": "124d91e5",
              "collectionOf(uint256)": "c7778baa",
              "createCollection(uint256)": "d0011d9d",
              "creator(uint256)": "510b5158",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isFungible(uint256)": "adebf6f2",
              "isMinter(address)": "aa271e1a",
              "isTrustedForwarder(address)": "572b6c05",
              "msgData()": "c4c2bfdc",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "recoverERC20s(address[],address[],uint256[])": "73c8a958",
              "recoverERC721s(address[],address[],uint256[])": "c3666c36",
              "renounceMinter()": "98650275",
              "safeBatchMint(address,uint256[],uint256[],bytes)": "0d6a5bbb",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeMint(address,uint256,uint256,bytes)": "5cfa9297",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setBaseMetadataURI(string)": "7e518ec8",
              "supportsInterface(bytes4)": "01ffc9a7",
              "totalSupply(uint256)": "bd85b039",
              "transferOwnership(address)": "f2fde38b",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "contracts/token/ERC1155/mocks/ERC1155InventoryMock.sol": {
        "ERC1155InventoryMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IForwarderRegistry",
                  "name": "forwarderRegistry",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "universalForwarder",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collectionMaskLength",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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": false,
                  "internalType": "string",
                  "name": "baseMetadataURI",
                  "type": "string"
                }
              ],
              "name": "BaseMetadataURISet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "fungible",
                  "type": "bool"
                }
              ],
              "name": "CollectionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterRemoved",
              "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": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "addMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "baseMetadataURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                }
              ],
              "name": "createCollection",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                }
              ],
              "name": "creator",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isMinter",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "forwarder",
                  "type": "address"
                }
              ],
              "name": "isTrustedForwarder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "msgData",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "ret",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC20s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "contracts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC721s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "string",
                  "name": "baseMetadataURI_",
                  "type": "string"
                }
              ],
              "name": "setBaseMetadataURI",
              "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": "id",
                  "type": "uint256"
                }
              ],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60e06040523480156200001157600080fd5b506040516200390e3803806200390e833981810160405260608110156200003757600080fd5b5080516020820151604092830151600080546001600160a01b0319163390811782559451939492939192918391829187918791869182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606091821b811660a05291901b166080528015801590620000bf575061010081105b62000111576040805162461bcd60e51b815260206004820152601c60248201527f496e76656e746f72793a2077726f6e67206d61736b206c656e67746800000000604482015290519081900360640190fd5b60c0525062000120816200012a565b5050505062000176565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b60805160601c60a05160601c60c0516137066200020860003980610dc7528061146c528061163a52806116b552806118025280611c4e5280611c8c52806120b552806120f45280612280528061239152806126635280612a1e5280612f53525080610fec5280612c6f52806134b55250806110275280612c345280612cc7528061348b528061351652506137066000f3fe608060405234801561001057600080fd5b50600436106101b85760003560e01c80638da5cb5b116100f9578063c3666c3611610097578063d0011d9d11610071578063d0011d9d14610c28578063e985e9c514610c45578063f242432a14610c73578063f2fde38b14610d3e576101b8565b8063c3666c3614610aef578063c4c2bfdc14610c03578063c7778baa14610c0b576101b8565b8063a22cb465116100d3578063a22cb46514610a61578063aa271e1a14610a8f578063adebf6f214610ab5578063bd85b03914610ad2576101b8565b80638da5cb5b14610a2b578063983b2d5614610a335780639865027514610a59576101b8565b8063510b5158116101665780635cfa9297116101405780635cfa9297146107c85780636352211e1461088a57806373c8a958146108a75780637e518ec8146109bb576101b8565b8063510b515814610761578063572b6c051461079a5780635b2bd79e146107c0576101b8565b80630e89341c116101975780630e89341c146103f65780632eb2c2d6146104885780634e1273f41461064f576101b8565b8062fdd58e146101bd57806301ffc9a7146101fb5780630d6a5bbb14610236575b600080fd5b6101e9600480360360408110156101d357600080fd5b506001600160a01b038135169060200135610d64565b60408051918252519081900360200190f35b6102226004803603602081101561021157600080fd5b50356001600160e01b031916610e50565b604080519115158252519081900360200190f35b6103f46004803603608081101561024c57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561027757600080fd5b82018360208201111561028957600080fd5b803590602001918460208302840111640100000000831117156102ab57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156102fb57600080fd5b82018360208201111561030d57600080fd5b8035906020019184602083028401116401000000008311171561032f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561037f57600080fd5b82018360208201111561039157600080fd5b803590602001918460018302840111640100000000831117156103b357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e96945050505050565b005b6104136004803603602081101561040c57600080fd5b5035610eb8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561044d578181015183820152602001610435565b50505050905090810190601f16801561047a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103f4600480360360a081101561049e57600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156104d257600080fd5b8201836020820111156104e457600080fd5b8035906020019184602083028401116401000000008311171561050657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561055657600080fd5b82018360208201111561056857600080fd5b8035906020019184602083028401116401000000008311171561058a57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156105da57600080fd5b8201836020820111156105ec57600080fd5b8035906020019184600183028401116401000000008311171561060e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ec3945050505050565b6107116004803603604081101561066557600080fd5b81019060208101813564010000000081111561068057600080fd5b82018360208201111561069257600080fd5b803590602001918460208302840111640100000000831117156106b457600080fd5b9193909290916020810190356401000000008111156106d257600080fd5b8201836020820111156106e457600080fd5b8035906020019184602083028401116401000000008311171561070657600080fd5b509092509050610ed7565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561074d578181015183820152602001610735565b505050509050019250505060405180910390f35b61077e6004803603602081101561077757600080fd5b5035610fdd565b604080516001600160a01b039092168252519081900360200190f35b610222600480360360208110156107b057600080fd5b50356001600160a01b0316610fe8565b610413611061565b6103f4600480360360808110156107de57600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561081557600080fd5b82018360208201111561082757600080fd5b8035906020019184600183028401116401000000008311171561084957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110ef945050505050565b61077e600480360360208110156108a057600080fd5b5035611106565b6103f4600480360360608110156108bd57600080fd5b8101906020810181356401000000008111156108d857600080fd5b8201836020820111156108ea57600080fd5b8035906020019184602083028401116401000000008311171561090c57600080fd5b91939092909160208101903564010000000081111561092a57600080fd5b82018360208201111561093c57600080fd5b8035906020019184602083028401116401000000008311171561095e57600080fd5b91939092909160208101903564010000000081111561097c57600080fd5b82018360208201111561098e57600080fd5b803590602001918460208302840111640100000000831117156109b057600080fd5b509092509050611170565b6103f4600480360360208110156109d157600080fd5b8101906020810181356401000000008111156109ec57600080fd5b8201836020820111156109fe57600080fd5b80359060200191846001830284011164010000000083111715610a2057600080fd5b509092509050611262565b61077e6112de565b6103f460048036036020811015610a4957600080fd5b50356001600160a01b03166112ee565b6103f4611305565b6103f460048036036040811015610a7757600080fd5b506001600160a01b0381351690602001351515611363565b61022260048036036020811015610aa557600080fd5b50356001600160a01b0316611444565b61022260048036036020811015610acb57600080fd5b5035611459565b6101e960048036036020811015610ae857600080fd5b5035611464565b6103f460048036036060811015610b0557600080fd5b810190602081018135640100000000811115610b2057600080fd5b820183602082011115610b3257600080fd5b80359060200191846020830284011164010000000083111715610b5457600080fd5b919390929091602081019035640100000000811115610b7257600080fd5b820183602082011115610b8457600080fd5b80359060200191846020830284011164010000000083111715610ba657600080fd5b919390929091602081019035640100000000811115610bc457600080fd5b820183602082011115610bd657600080fd5b80359060200191846020830284011164010000000083111715610bf857600080fd5b5090925090506114db565b610413611623565b6101e960048036036020811015610c2157600080fd5b5035611632565b6103f460048036036020811015610c3e57600080fd5b50356116d9565b61022260048036036040811015610c5b57600080fd5b506001600160a01b03813581169160200135166116ed565b6103f4600480360360a0811015610c8957600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135640100000000811115610cc957600080fd5b820183602082011115610cdb57600080fd5b80359060200191846001830284011164010000000083111715610cfd57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061171b945050505050565b6103f460048036036020811015610d5457600080fd5b50356001600160a01b031661190f565b60006001600160a01b038316610dc1576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b610deb827f0000000000000000000000000000000000000000000000000000000000000000611980565b15610e25576000828152600460205260409020546001600160a01b03848116911614610e18576000610e1b565b60015b60ff169050610e4a565b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b031982167f510b5158000000000000000000000000000000000000000000000000000000001480610e8e5750610e8e826119c3565b90505b919050565b610ea6610ea1611ac4565b611ace565b610eb284848484611b3b565b50505050565b6060610e8e82611e67565b610ed08585858585611f3a565b5050505050565b6060838214610f2d576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60008467ffffffffffffffff81118015610f4657600080fd5b50604051908082528060200260200182016040528015610f70578160200160208202803683370190505b50905060005b808614610fd357610fb4878783818110610f8c57fe5b905060200201356001600160a01b0316868684818110610fa857fe5b90506020020135610d64565b828281518110610fc057fe5b6020908102919091010152600101610f76565b5095945050505050565b6000610e8e82612278565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610e8e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110e75780601f106110bc576101008083540402835291602001916110e7565b820191906000526020600020905b8154815290600101906020018083116110ca57829003601f168201915b505050505081565b6110fa610ea1611ac4565b610eb284848484612312565b6000818152600460205260408120546001600160a01b038116610e8e576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b61118061117b611ac4565b612448565b84838114801561118f57508082145b6111e0576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611258576112508888838181106111f957fe5b905060200201356001600160a01b031685858481811061121557fe5b9050602002013588888581811061122857fe5b905060200201356001600160a01b03166001600160a01b031661250c9092919063ffffffff16565b6001016111e3565b5050505050505050565b61126d61117b611ac4565b61127960068383613607565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b6000546001600160a01b03165b90565b6112f961117b611ac4565b61130281612591565b50565b600061130f611ac4565b905061131a81611ace565b6001600160a01b038116600081815260076020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b600061136d611ac4565b9050806001600160a01b0316836001600160a01b031614156113d6576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a2073656c662d617070726f76616c0000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260016020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b60076020526000908152604090205460ff1681565b6000610e8e826125dd565b6000611490827f0000000000000000000000000000000000000000000000000000000000000000611980565b156114c6576000828152600460205260409020546001600160a01b0316156114b95760016114bc565b60005b60ff169050610e91565b50600081815260036020526040902054610e91565b6114e661117b611ac4565b8483811480156114f557508082145b611546576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b8181146112585785858281811061155c57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a8581811061158757fe5b905060200201356001600160a01b03168787868181106115a357fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b50505050806001019050611549565b606061162d612603565b905090565b600061165e827f0000000000000000000000000000000000000000000000000000000000000000611980565b6116af576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a206e6f7420616e204e46540000000000000000000000604482015290519081900360640190fd5b610e8e827f0000000000000000000000000000000000000000000000000000000000000000612647565b6116e461117b611ac4565b6113028161265d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6000611725611ac4565b90506001600160a01b038516611782576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b61178c86826127ca565b6117dd576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b6117e6846125dd565b156117fc576117f786868686612816565b611886565b611826847f0000000000000000000000000000000000000000000000000000000000000000611980565b15611839576117f7868686866000612934565b6040805162461bcd60e51b815260206004820152601960248201527f496e76656e746f72793a206e6f74206120746f6b656e20696400000000000000604482015290519081900360640190fd5b846001600160a01b0316866001600160a01b0316826001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a46118f5856001600160a01b0316612a83565b15611907576119078686868686612a89565b505050505050565b61191a61117b611ac4565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60007f80000000000000000000000000000000000000000000000000000000000000008316158015906119bc57506119b782612c13565b831615155b9392505050565b60006001600160e01b031982167f01ffc9a7000000000000000000000000000000000000000000000000000000001480611a2657506001600160e01b031982167fd9b67a2600000000000000000000000000000000000000000000000000000000145b80611a5a57506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b80611a8e57506001600160e01b031982167f09ce5c4600000000000000000000000000000000000000000000000000000000145b80610e8e5750506001600160e01b0319167fbd85b039000000000000000000000000000000000000000000000000000000001490565b600061162d612c24565b6001600160a01b03811660009081526007602052604090205460ff16611302576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416611b96576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b825182518114611bed576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60008060005b838114611d21576000878281518110611c0857fe5b602002602001015190506000878381518110611c2057fe5b60200260200101519050611c33826125dd565b15611c4857611c438a8383612d84565b611d17565b611c72827f0000000000000000000000000000000000000000000000000000000000000000611980565b1561183957611c848a83836001612e76565b6000611cb0837f0000000000000000000000000000000000000000000000000000000000000000612647565b905085611cc35780955060019450611d15565b858114611d0e5760008681526002602090815260408083206001600160a01b038f16845282528083208054890190559782526003905295909520805490940190935560019284611d15565b8460010194505b505b5050600101611bf3565b508115611d615760008281526002602090815260408083206001600160a01b038b1684528252808320805485019055848352600390915290208054820190555b6001600160a01b0387166000611d75611ac4565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8989604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611de5578181015183820152602001611dcd565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611e24578181015183820152602001611e0c565b5050505090500194505050505060405180910390a4611e4b876001600160a01b0316612a83565b15611e5e57611e5e600088888888612fb9565b50505050505050565b60606006611e7483613137565b6040516020018083805460018160011615610100020316600290048015611ed25780601f10611eb0576101008083540402835291820191611ed2565b820191906000526020600020905b815481529060010190602001808311611ebe575b5050825160208401908083835b60208310611efe5780518252601f199092019160209182019101611edf565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b6001600160a01b038416611f95576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b825182518114611fec576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b6000611ff6611ac4565b905061200287826127ca565b612053576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b60008060005b84811461215d57600088828151811061206e57fe5b60200260200101519050600088838151811061208657fe5b60200260200101519050612099826125dd565b156120af576120aa8c8c8484612816565b612153565b6120d9827f0000000000000000000000000000000000000000000000000000000000000000611980565b15611839576120ec8c8c84846001612934565b6000612118837f0000000000000000000000000000000000000000000000000000000000000000612647565b90508561212b5780955060019450612151565b85811461214a5761213e8d8d8888613246565b80955060019450612151565b8460010194505b505b5050600101612059565b5081156121705761217089898484613246565b876001600160a01b0316896001600160a01b0316846001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a8a604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156121f55781810151838201526020016121dd565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561223457818101518382015260200161221c565b5050505090500194505050505060405180910390a461225b886001600160a01b0316612a83565b1561226d5761226d8989898989612fb9565b505050505050505050565b60006122a4827f0000000000000000000000000000000000000000000000000000000000000000611980565b156122f6576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b506000908152600560205260409020546001600160a01b031690565b6001600160a01b03841661236d576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b612376836125dd565b1561238b57612386848484612d84565b6123c7565b6123b5837f0000000000000000000000000000000000000000000000000000000000000000611980565b15611839576123868484846000612e76565b6001600160a01b03841660006123db611ac4565b6001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a4612435846001600160a01b0316612a83565b15610eb257610eb2600085858585612a89565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561248157600080fd5b505afa158015612495573d6000803e3d6000fd5b505050506040513d60208110156124ab57600080fd5b50516001600160a01b03828116911614611302576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261258c90849061329a565b505050565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b7f8000000000000000000000000000000000000000000000000000000000000000161590565b606061260d61347d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b600061265282612c13565b198316905092915050565b612687817f0000000000000000000000000000000000000000000000000000000000000000611980565b156126d9576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b031615612743576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206578697374696e6720636f6c6c656374696f6e0000604482015290519081900360640190fd5b61274b611ac4565b600082815260056020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055612798816125dd565b1515817f4ebf8ad0df535ba5e487bc9cb27fe44120ca81c3a95d3eba79c0bd1df2ab2d5d60405160405180910390a350565b6000816001600160a01b0316836001600160a01b031614806119bc5750506001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b80612868576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b60008281526002602090815260408083206001600160a01b0388168452909152902054818110156128e0576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b031614610ed05760009283526002602090815260408085206001600160a01b039788168652909152808420918390039091559290931681522080549091019055565b81600114612989576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000838152600460205260409020546001600160a01b038681169116146129f7576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a206e6f6e2d6f776e6564204e46540000000000000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b038516905580610ed0576000612a42847f0000000000000000000000000000000000000000000000000000000000000000612647565b60009081526002602090815260408083206001600160a01b03998a168452909152808220805460001901905595909616865250505091208054600101905550565b3b151590565b7ff23a6e61000000000000000000000000000000000000000000000000000000006001600160a01b03851663f23a6e61612ac1611ac4565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612b3b578181015183820152602001612b23565b50505050905090810190601f168015612b685780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015612b8b57600080fd5b505af1158015612b9f573d6000803e3d6000fd5b505050506040513d6020811015612bb557600080fd5b50516001600160e01b03191614610ed0576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b6001610100919091031b6000190190565b60003381612c306135e0565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480612ca357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15612cb15791506112eb9050565b6001600160a01b0382163214801590612d7057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015612d4357600080fd5b505afa158015612d57573d6000803e3d6000fd5b505050506040513d6020811015612d6d57600080fd5b50515b15612d7e5791506112eb9050565b50905090565b80612dd6576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b600082815260036020526040902054818101818111612e3c576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a20737570706c79206f766572666c6f77000000000000604482015290519081900360640190fd5b600093845260036020908152604080862092909255600281528185206001600160a01b039096168552949094525091902080549091019055565b81600114612ecb576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b60008381526004602052604090205415612f2c576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206578697374696e672f6275726e74204e4654000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b038516905580610eb2576000612f77847f0000000000000000000000000000000000000000000000000000000000000000612647565b600090815260036020908152604080832080546001908101909155600283528184206001600160a01b038a168552909252909120805490910190555050505050565b7fbc197c81000000000000000000000000000000000000000000000000000000006001600160a01b03851663bc197c81612ff1611ac4565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561306a578181015183820152602001613052565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156130a9578181015183820152602001613091565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156130e55781810151838201526020016130cd565b50505050905090810190601f1680156131125780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015612b8b57600080fd5b606081613178575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610e91565b8160005b811561319057600101600a8204915061317c565b60008167ffffffffffffffff811180156131a957600080fd5b506040519080825280601f01601f1916602001820160405280156131d4576020820181803683370190505b50859350905060001982015b831561323d57600a840660300160f81b8282806001900393508151811061320357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506131e0565b50949350505050565b826001600160a01b0316846001600160a01b031614610eb25760009182526002602090815260408084206001600160a01b039687168552909152808320805483900390559290931681522080549091019055565b816132ad6001600160a01b038216612a83565b6132fe576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b6020831061333b5780518252601f19909201916020918201910161331c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461339d576040519150601f19603f3d011682016040523d82523d6000602084013e6133a2565b606091505b509150915081156134215780511561341c578080602001905160208110156133c957600080fd5b505161341c576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b610ed0565b8051613474576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168114806134e957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b15613500576134f66135ec565b92509250506135dc565b6001600160a01b03811632148015906135c657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d661354b6135e0565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561359957600080fd5b505afa1580156135ad573d6000803e3d6000fd5b505050506040513d60208110156135c357600080fd5b50515b156135d3576134f66135ec565b60003692509250505b9091565b60131936013560601c90565b3660006135ff60131983018284816136a8565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261363d5760008555613683565b82601f106136565782800160ff19823516178555613683565b82800160010185558215613683579182015b82811115613683578235825591602001919060010190613668565b5061368f929150613693565b5090565b5b8082111561368f5760008155600101613694565b600080858511156136b7578182fd5b838611156136c3578182fd5b505082019391909203915056fea264697066735822122086b91fdb9f790bc269fbc7947d5dd661463fc15001cec91b26da95f7a1352b6a64736f6c63430007060033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x390E CODESIZE SUB DUP1 PUSH3 0x390E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP3 DUP4 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE SWAP5 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 DUP4 SWAP2 DUP3 SWAP2 DUP8 SWAP2 DUP8 SWAP2 DUP7 SWAP2 DUP3 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0x80 MSTORE DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH3 0xBF JUMPI POP PUSH2 0x100 DUP2 LT JUMPDEST PUSH3 0x111 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67206D61736B206C656E67746800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xC0 MSTORE POP PUSH3 0x120 DUP2 PUSH3 0x12A JUMP JUMPDEST POP POP POP POP PUSH3 0x176 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH2 0x3706 PUSH3 0x208 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xDC7 MSTORE DUP1 PUSH2 0x146C MSTORE DUP1 PUSH2 0x163A MSTORE DUP1 PUSH2 0x16B5 MSTORE DUP1 PUSH2 0x1802 MSTORE DUP1 PUSH2 0x1C4E MSTORE DUP1 PUSH2 0x1C8C MSTORE DUP1 PUSH2 0x20B5 MSTORE DUP1 PUSH2 0x20F4 MSTORE DUP1 PUSH2 0x2280 MSTORE DUP1 PUSH2 0x2391 MSTORE DUP1 PUSH2 0x2663 MSTORE DUP1 PUSH2 0x2A1E MSTORE DUP1 PUSH2 0x2F53 MSTORE POP DUP1 PUSH2 0xFEC MSTORE DUP1 PUSH2 0x2C6F MSTORE DUP1 PUSH2 0x34B5 MSTORE POP DUP1 PUSH2 0x1027 MSTORE DUP1 PUSH2 0x2C34 MSTORE DUP1 PUSH2 0x2CC7 MSTORE DUP1 PUSH2 0x348B MSTORE DUP1 PUSH2 0x3516 MSTORE POP PUSH2 0x3706 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 0x1B8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xC3666C36 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD0011D9D GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD0011D9D EQ PUSH2 0xC28 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0xC45 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0xC73 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xD3E JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xAEF JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0xC03 JUMPI DUP1 PUSH4 0xC7778BAA EQ PUSH2 0xC0B JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0xA22CB465 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0xA61 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xA8F JUMPI DUP1 PUSH4 0xADEBF6F2 EQ PUSH2 0xAB5 JUMPI DUP1 PUSH4 0xBD85B039 EQ PUSH2 0xAD2 JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA2B JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0xA33 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0xA59 JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x510B5158 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x5CFA9297 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x5CFA9297 EQ PUSH2 0x7C8 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x88A JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x8A7 JUMPI DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0x9BB JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x510B5158 EQ PUSH2 0x761 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x79A JUMPI DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x7C0 JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0xE89341C GT PUSH2 0x197 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x3F6 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x488 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x64F JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1FB JUMPI DUP1 PUSH4 0xD6A5BBB EQ PUSH2 0x236 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD64 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x222 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xE50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x37F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x391 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xE96 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x413 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xEB8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x44D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x435 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x47A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x556 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x58A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x60E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xEC3 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x711 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x665 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x680 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x706 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xED7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x74D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x735 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x77E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x777 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFDD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x222 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFE8 JUMP JUMPDEST PUSH2 0x413 PUSH2 0x1061 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x7DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x815 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x849 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x10EF SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x77E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1106 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x90C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x92A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x93C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x95E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x97C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x98E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1170 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1262 JUMP JUMPDEST PUSH2 0x77E PUSH2 0x12DE JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12EE JUMP JUMPDEST PUSH2 0x3F4 PUSH2 0x1305 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1363 JUMP JUMPDEST PUSH2 0x222 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1444 JUMP JUMPDEST PUSH2 0x222 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xACB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1459 JUMP JUMPDEST PUSH2 0x1E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1464 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xB05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x14DB JUMP JUMPDEST PUSH2 0x413 PUSH2 0x1623 JUMP JUMPDEST PUSH2 0x1E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1632 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x16D9 JUMP JUMPDEST PUSH2 0x222 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x16ED JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xC89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xCFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x171B SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x190F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xDC1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2061646472657373000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xDEB DUP3 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST ISZERO PUSH2 0xE25 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0xE18 JUMPI PUSH1 0x0 PUSH2 0xE1B JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0xE4A JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x510B515800000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xE8E JUMPI POP PUSH2 0xE8E DUP3 PUSH2 0x19C3 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xEA6 PUSH2 0xEA1 PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0x1ACE JUMP JUMPDEST PUSH2 0xEB2 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1B3B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE8E DUP3 PUSH2 0x1E67 JUMP JUMPDEST PUSH2 0xED0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1F3A JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP3 EQ PUSH2 0xF2D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xF46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xF70 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP1 DUP7 EQ PUSH2 0xFD3 JUMPI PUSH2 0xFB4 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0xF8C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0xFA8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0xD64 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xFC0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xF76 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE8E DUP3 PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xE8E JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x10E7 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x10BC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x10E7 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 0x10CA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0x10FA PUSH2 0xEA1 PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0xEB2 DUP5 DUP5 DUP5 DUP5 PUSH2 0x2312 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xE8E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1180 PUSH2 0x117B PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0x2448 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x118F JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x11E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1258 JUMPI PUSH2 0x1250 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x11F9 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1215 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1228 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x250C SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x11E3 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x126D PUSH2 0x117B PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0x1279 PUSH1 0x6 DUP4 DUP4 PUSH2 0x3607 JUMP JUMPDEST POP PUSH32 0x4B1DC5C136A3CE9FDED8DB0CE3D3366C58764EC3A8E4C2B9E52E4DDFE5EBBF7 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12F9 PUSH2 0x117B PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0x1302 DUP2 PUSH2 0x2591 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x130F PUSH2 0x1AC4 JUMP JUMPDEST SWAP1 POP PUSH2 0x131A DUP2 PUSH2 0x1ACE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x136D PUSH2 0x1AC4 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x13D6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2073656C662D617070726F76616C0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE8E DUP3 PUSH2 0x25DD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1490 DUP3 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST ISZERO PUSH2 0x14C6 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x14B9 JUMPI PUSH1 0x1 PUSH2 0x14BC JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0xE91 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE91 JUMP JUMPDEST PUSH2 0x14E6 PUSH2 0x117B PUSH2 0x1AC4 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x14F5 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1546 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1258 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x155C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x1587 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x15A3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1600 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1614 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x1549 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x162D PUSH2 0x2603 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165E DUP3 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST PUSH2 0x16AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420616E204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE8E DUP3 PUSH32 0x0 PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x16E4 PUSH2 0x117B PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0x1302 DUP2 PUSH2 0x265D 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1725 PUSH2 0x1AC4 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x1782 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x178C DUP7 DUP3 PUSH2 0x27CA JUMP JUMPDEST PUSH2 0x17DD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17E6 DUP5 PUSH2 0x25DD JUMP JUMPDEST ISZERO PUSH2 0x17FC JUMPI PUSH2 0x17F7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2816 JUMP JUMPDEST PUSH2 0x1886 JUMP JUMPDEST PUSH2 0x1826 DUP5 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST ISZERO PUSH2 0x1839 JUMPI PUSH2 0x17F7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x0 PUSH2 0x2934 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120746F6B656E20696400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x18F5 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A83 JUMP JUMPDEST ISZERO PUSH2 0x1907 JUMPI PUSH2 0x1907 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2A89 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x191A PUSH2 0x117B PUSH2 0x1AC4 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x19BC JUMPI POP PUSH2 0x19B7 DUP3 PUSH2 0x2C13 JUMP JUMPDEST DUP4 AND ISZERO ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x1A26 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1A5A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1A8E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9CE5C4600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xE8E JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xBD85B03900000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x162D PUSH2 0x2C24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1302 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1B96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x1BED JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 EQ PUSH2 0x1D21 JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C08 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1C20 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1C33 DUP3 PUSH2 0x25DD JUMP JUMPDEST ISZERO PUSH2 0x1C48 JUMPI PUSH2 0x1C43 DUP11 DUP4 DUP4 PUSH2 0x2D84 JUMP JUMPDEST PUSH2 0x1D17 JUMP JUMPDEST PUSH2 0x1C72 DUP3 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST ISZERO PUSH2 0x1839 JUMPI PUSH2 0x1C84 DUP11 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2E76 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CB0 DUP4 PUSH32 0x0 PUSH2 0x2647 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x1CC3 JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x1D15 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x1D0E JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP10 ADD SWAP1 SSTORE SWAP8 DUP3 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP6 SWAP1 SWAP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP5 ADD SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP3 DUP5 PUSH2 0x1D15 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1BF3 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x1D61 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 PUSH2 0x1D75 PUSH2 0x1AC4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1DE5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DCD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E24 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E0C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1E4B DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A83 JUMP JUMPDEST ISZERO PUSH2 0x1E5E JUMPI PUSH2 0x1E5E PUSH1 0x0 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2FB9 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x6 PUSH2 0x1E74 DUP4 PUSH2 0x3137 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1ED2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1EB0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x1ED2 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 0x1EBE JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1EFE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1EDF JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1F95 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x1FEC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1FF6 PUSH2 0x1AC4 JUMP JUMPDEST SWAP1 POP PUSH2 0x2002 DUP8 DUP3 PUSH2 0x27CA JUMP JUMPDEST PUSH2 0x2053 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x215D JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x206E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2086 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x2099 DUP3 PUSH2 0x25DD JUMP JUMPDEST ISZERO PUSH2 0x20AF JUMPI PUSH2 0x20AA DUP13 DUP13 DUP5 DUP5 PUSH2 0x2816 JUMP JUMPDEST PUSH2 0x2153 JUMP JUMPDEST PUSH2 0x20D9 DUP3 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST ISZERO PUSH2 0x1839 JUMPI PUSH2 0x20EC DUP13 DUP13 DUP5 DUP5 PUSH1 0x1 PUSH2 0x2934 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2118 DUP4 PUSH32 0x0 PUSH2 0x2647 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x212B JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x2151 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x214A JUMPI PUSH2 0x213E DUP14 DUP14 DUP9 DUP9 PUSH2 0x3246 JUMP JUMPDEST DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x2151 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2059 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x2170 JUMPI PUSH2 0x2170 DUP10 DUP10 DUP5 DUP5 PUSH2 0x3246 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP11 DUP11 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x21F5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x21DD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2234 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x221C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x225B DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A83 JUMP JUMPDEST ISZERO PUSH2 0x226D JUMPI PUSH2 0x226D DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x2FB9 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22A4 DUP3 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST ISZERO PUSH2 0x22F6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x236D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2376 DUP4 PUSH2 0x25DD JUMP JUMPDEST ISZERO PUSH2 0x238B JUMPI PUSH2 0x2386 DUP5 DUP5 DUP5 PUSH2 0x2D84 JUMP JUMPDEST PUSH2 0x23C7 JUMP JUMPDEST PUSH2 0x23B5 DUP4 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST ISZERO PUSH2 0x1839 JUMPI PUSH2 0x2386 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x2E76 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 PUSH2 0x23DB PUSH2 0x1AC4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2435 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A83 JUMP JUMPDEST ISZERO PUSH2 0xEB2 JUMPI PUSH2 0xEB2 PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2A89 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2495 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1302 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x258C SWAP1 DUP5 SWAP1 PUSH2 0x329A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x260D PUSH2 0x347D JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2652 DUP3 PUSH2 0x2C13 JUMP JUMPDEST NOT DUP4 AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2687 DUP2 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST ISZERO PUSH2 0x26D9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2743 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E6720636F6C6C656374696F6E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x274B PUSH2 0x1AC4 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x2798 DUP2 PUSH2 0x25DD JUMP JUMPDEST ISZERO ISZERO DUP2 PUSH32 0x4EBF8AD0DF535BA5E487BC9CB27FE44120CA81C3A95D3EBA79C0BD1DF2AB2D5D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x19BC JUMPI POP POP 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x2868 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x28E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420656E6F7567682062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xED0 JUMPI PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP7 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP5 KECCAK256 SWAP2 DUP4 SWAP1 SUB SWAP1 SWAP2 SSTORE SWAP3 SWAP1 SWAP4 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x2989 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ PUSH2 0x29F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6F776E6564204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 SSTORE DUP1 PUSH2 0xED0 JUMPI PUSH1 0x0 PUSH2 0x2A42 DUP5 PUSH32 0x0 PUSH2 0x2647 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP6 SWAP1 SWAP7 AND DUP7 MSTORE POP POP POP SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xF23A6E61 PUSH2 0x2AC1 PUSH2 0x1AC4 JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2B3B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2B23 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2B68 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B9F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0xED0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220726566757365640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH2 0x100 SWAP2 SWAP1 SWAP2 SUB SHL PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x2C30 PUSH2 0x35E0 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2CA3 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x2CB1 JUMPI SWAP2 POP PUSH2 0x12EB SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x2D70 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x2D7E JUMPI SWAP2 POP PUSH2 0x12EB SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x2DD6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x2E3C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20737570706C79206F766572666C6F77000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP2 MSTORE DUP2 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP6 MSTORE SWAP5 SWAP1 SWAP5 MSTORE POP SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x2ECB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2F2C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E672F6275726E74204E4654000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 SSTORE DUP1 PUSH2 0xEB2 JUMPI PUSH1 0x0 PUSH2 0x2F77 DUP5 PUSH32 0x0 PUSH2 0x2647 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xBC197C81 PUSH2 0x2FF1 PUSH2 0x1AC4 JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x306A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3052 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x30A9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3091 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x30E5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x30CD JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3112 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x3178 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xE91 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x3190 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x317C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x31A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x31D4 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x323D JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x3203 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x31E0 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xEB2 JUMPI PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE SWAP3 SWAP1 SWAP4 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH2 0x32AD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2A83 JUMP JUMPDEST PUSH2 0x32FE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x333B JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x331C JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x339D 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 0x33A2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x3421 JUMPI DUP1 MLOAD ISZERO PUSH2 0x341C JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x341C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xED0 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x3474 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x34E9 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x3500 JUMPI PUSH2 0x34F6 PUSH2 0x35EC JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x35DC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x35C6 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x354B PUSH2 0x35E0 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x35D3 JUMPI PUSH2 0x34F6 PUSH2 0x35EC JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x35FF PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x36A8 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x363D JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3683 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3656 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x3683 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3683 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3683 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3668 JUMP JUMPDEST POP PUSH2 0x368F SWAP3 SWAP2 POP PUSH2 0x3693 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x368F JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3694 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x36B7 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x36C3 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP7 0xB9 0x1F 0xDB SWAP16 PUSH26 0xBC269FBC7947D5DD661463FC15001CEC91B26DA95F7A1352B6A PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "1115:3636:27:-:0;;;1323:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:266:27;;;;;;;;;;;960:6:2;:15;;-1:-1:-1;;;;;;960:15:2;1575:10:27;960:15:2;;;;;990:40;;1323:266:27;;;;;;1575:10;1323:266;;;;;;;;1575:10;;;;990:40:2;;960:6;;990:40;-1:-1:-1;;;;;;;443:40:85;;;;;;;;493:38;;;;;;2448:25:13;;;;;:55;;;2500:3;2477:20;:26;2448:55;2440:96;;;;;-1:-1:-1;;;2440:96:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;2546:44;;-1:-1:-1;476:18:1::1;487:6:::0;476:10:::1;:18::i;:::-;422:79:::0;1323:266:27;;;1115:3636;;1252:122:1;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;1115:3636:27:-;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:379:86",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:86",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "144:233:86",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "182:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "191:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "202:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "184:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "184:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "184:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "160:10:86"
                                  },
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "172:8:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "157:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "157:24:86"
                              },
                              "nodeType": "YulIf",
                              "src": "154:2:86"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "247:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "256:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "267:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "249:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "249:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "229:8:86"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "239:6:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "226:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "226:20:86"
                              },
                              "nodeType": "YulIf",
                              "src": "223:2:86"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "288:36:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "305:6:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "313:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "301:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "301:23:86"
                              },
                              "variableNames": [
                                {
                                  "name": "offsetOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "288:9:86"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "333:38:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "350:8:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "360:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "346:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "346:25:86"
                              },
                              "variableNames": [
                                {
                                  "name": "lengthOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:9:86"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "78:6:86",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "86:6:86",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "94:10:86",
                            "type": ""
                          },
                          {
                            "name": "endIndex",
                            "nodeType": "YulTypedName",
                            "src": "106:8:86",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "offsetOut",
                            "nodeType": "YulTypedName",
                            "src": "119:9:86",
                            "type": ""
                          },
                          {
                            "name": "lengthOut",
                            "nodeType": "YulTypedName",
                            "src": "130:9:86",
                            "type": ""
                          }
                        ],
                        "src": "14:363:86"
                      }
                    ]
                  },
                  "contents": "{\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(offsetOut, offsetOut) }\n        if gt(endIndex, length) { revert(offsetOut, offsetOut) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n}",
                  "id": 86,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "2354": [
                  {
                    "length": 32,
                    "start": 3527
                  },
                  {
                    "length": 32,
                    "start": 5228
                  },
                  {
                    "length": 32,
                    "start": 5690
                  },
                  {
                    "length": 32,
                    "start": 5813
                  },
                  {
                    "length": 32,
                    "start": 6146
                  },
                  {
                    "length": 32,
                    "start": 7246
                  },
                  {
                    "length": 32,
                    "start": 7308
                  },
                  {
                    "length": 32,
                    "start": 8373
                  },
                  {
                    "length": 32,
                    "start": 8436
                  },
                  {
                    "length": 32,
                    "start": 8832
                  },
                  {
                    "length": 32,
                    "start": 9105
                  },
                  {
                    "length": 32,
                    "start": 9827
                  },
                  {
                    "length": 32,
                    "start": 10782
                  },
                  {
                    "length": 32,
                    "start": 12115
                  }
                ],
                "15042": [
                  {
                    "length": 32,
                    "start": 4135
                  },
                  {
                    "length": 32,
                    "start": 11316
                  },
                  {
                    "length": 32,
                    "start": 11463
                  },
                  {
                    "length": 32,
                    "start": 13451
                  },
                  {
                    "length": 32,
                    "start": 13590
                  }
                ],
                "15044": [
                  {
                    "length": 32,
                    "start": 4076
                  },
                  {
                    "length": 32,
                    "start": 11375
                  },
                  {
                    "length": 32,
                    "start": 13493
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101b85760003560e01c80638da5cb5b116100f9578063c3666c3611610097578063d0011d9d11610071578063d0011d9d14610c28578063e985e9c514610c45578063f242432a14610c73578063f2fde38b14610d3e576101b8565b8063c3666c3614610aef578063c4c2bfdc14610c03578063c7778baa14610c0b576101b8565b8063a22cb465116100d3578063a22cb46514610a61578063aa271e1a14610a8f578063adebf6f214610ab5578063bd85b03914610ad2576101b8565b80638da5cb5b14610a2b578063983b2d5614610a335780639865027514610a59576101b8565b8063510b5158116101665780635cfa9297116101405780635cfa9297146107c85780636352211e1461088a57806373c8a958146108a75780637e518ec8146109bb576101b8565b8063510b515814610761578063572b6c051461079a5780635b2bd79e146107c0576101b8565b80630e89341c116101975780630e89341c146103f65780632eb2c2d6146104885780634e1273f41461064f576101b8565b8062fdd58e146101bd57806301ffc9a7146101fb5780630d6a5bbb14610236575b600080fd5b6101e9600480360360408110156101d357600080fd5b506001600160a01b038135169060200135610d64565b60408051918252519081900360200190f35b6102226004803603602081101561021157600080fd5b50356001600160e01b031916610e50565b604080519115158252519081900360200190f35b6103f46004803603608081101561024c57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561027757600080fd5b82018360208201111561028957600080fd5b803590602001918460208302840111640100000000831117156102ab57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156102fb57600080fd5b82018360208201111561030d57600080fd5b8035906020019184602083028401116401000000008311171561032f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561037f57600080fd5b82018360208201111561039157600080fd5b803590602001918460018302840111640100000000831117156103b357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e96945050505050565b005b6104136004803603602081101561040c57600080fd5b5035610eb8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561044d578181015183820152602001610435565b50505050905090810190601f16801561047a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103f4600480360360a081101561049e57600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156104d257600080fd5b8201836020820111156104e457600080fd5b8035906020019184602083028401116401000000008311171561050657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561055657600080fd5b82018360208201111561056857600080fd5b8035906020019184602083028401116401000000008311171561058a57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156105da57600080fd5b8201836020820111156105ec57600080fd5b8035906020019184600183028401116401000000008311171561060e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ec3945050505050565b6107116004803603604081101561066557600080fd5b81019060208101813564010000000081111561068057600080fd5b82018360208201111561069257600080fd5b803590602001918460208302840111640100000000831117156106b457600080fd5b9193909290916020810190356401000000008111156106d257600080fd5b8201836020820111156106e457600080fd5b8035906020019184602083028401116401000000008311171561070657600080fd5b509092509050610ed7565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561074d578181015183820152602001610735565b505050509050019250505060405180910390f35b61077e6004803603602081101561077757600080fd5b5035610fdd565b604080516001600160a01b039092168252519081900360200190f35b610222600480360360208110156107b057600080fd5b50356001600160a01b0316610fe8565b610413611061565b6103f4600480360360808110156107de57600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561081557600080fd5b82018360208201111561082757600080fd5b8035906020019184600183028401116401000000008311171561084957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110ef945050505050565b61077e600480360360208110156108a057600080fd5b5035611106565b6103f4600480360360608110156108bd57600080fd5b8101906020810181356401000000008111156108d857600080fd5b8201836020820111156108ea57600080fd5b8035906020019184602083028401116401000000008311171561090c57600080fd5b91939092909160208101903564010000000081111561092a57600080fd5b82018360208201111561093c57600080fd5b8035906020019184602083028401116401000000008311171561095e57600080fd5b91939092909160208101903564010000000081111561097c57600080fd5b82018360208201111561098e57600080fd5b803590602001918460208302840111640100000000831117156109b057600080fd5b509092509050611170565b6103f4600480360360208110156109d157600080fd5b8101906020810181356401000000008111156109ec57600080fd5b8201836020820111156109fe57600080fd5b80359060200191846001830284011164010000000083111715610a2057600080fd5b509092509050611262565b61077e6112de565b6103f460048036036020811015610a4957600080fd5b50356001600160a01b03166112ee565b6103f4611305565b6103f460048036036040811015610a7757600080fd5b506001600160a01b0381351690602001351515611363565b61022260048036036020811015610aa557600080fd5b50356001600160a01b0316611444565b61022260048036036020811015610acb57600080fd5b5035611459565b6101e960048036036020811015610ae857600080fd5b5035611464565b6103f460048036036060811015610b0557600080fd5b810190602081018135640100000000811115610b2057600080fd5b820183602082011115610b3257600080fd5b80359060200191846020830284011164010000000083111715610b5457600080fd5b919390929091602081019035640100000000811115610b7257600080fd5b820183602082011115610b8457600080fd5b80359060200191846020830284011164010000000083111715610ba657600080fd5b919390929091602081019035640100000000811115610bc457600080fd5b820183602082011115610bd657600080fd5b80359060200191846020830284011164010000000083111715610bf857600080fd5b5090925090506114db565b610413611623565b6101e960048036036020811015610c2157600080fd5b5035611632565b6103f460048036036020811015610c3e57600080fd5b50356116d9565b61022260048036036040811015610c5b57600080fd5b506001600160a01b03813581169160200135166116ed565b6103f4600480360360a0811015610c8957600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135640100000000811115610cc957600080fd5b820183602082011115610cdb57600080fd5b80359060200191846001830284011164010000000083111715610cfd57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061171b945050505050565b6103f460048036036020811015610d5457600080fd5b50356001600160a01b031661190f565b60006001600160a01b038316610dc1576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b610deb827f0000000000000000000000000000000000000000000000000000000000000000611980565b15610e25576000828152600460205260409020546001600160a01b03848116911614610e18576000610e1b565b60015b60ff169050610e4a565b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b031982167f510b5158000000000000000000000000000000000000000000000000000000001480610e8e5750610e8e826119c3565b90505b919050565b610ea6610ea1611ac4565b611ace565b610eb284848484611b3b565b50505050565b6060610e8e82611e67565b610ed08585858585611f3a565b5050505050565b6060838214610f2d576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60008467ffffffffffffffff81118015610f4657600080fd5b50604051908082528060200260200182016040528015610f70578160200160208202803683370190505b50905060005b808614610fd357610fb4878783818110610f8c57fe5b905060200201356001600160a01b0316868684818110610fa857fe5b90506020020135610d64565b828281518110610fc057fe5b6020908102919091010152600101610f76565b5095945050505050565b6000610e8e82612278565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610e8e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110e75780601f106110bc576101008083540402835291602001916110e7565b820191906000526020600020905b8154815290600101906020018083116110ca57829003601f168201915b505050505081565b6110fa610ea1611ac4565b610eb284848484612312565b6000818152600460205260408120546001600160a01b038116610e8e576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b61118061117b611ac4565b612448565b84838114801561118f57508082145b6111e0576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611258576112508888838181106111f957fe5b905060200201356001600160a01b031685858481811061121557fe5b9050602002013588888581811061122857fe5b905060200201356001600160a01b03166001600160a01b031661250c9092919063ffffffff16565b6001016111e3565b5050505050505050565b61126d61117b611ac4565b61127960068383613607565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b6000546001600160a01b03165b90565b6112f961117b611ac4565b61130281612591565b50565b600061130f611ac4565b905061131a81611ace565b6001600160a01b038116600081815260076020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b600061136d611ac4565b9050806001600160a01b0316836001600160a01b031614156113d6576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a2073656c662d617070726f76616c0000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260016020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b60076020526000908152604090205460ff1681565b6000610e8e826125dd565b6000611490827f0000000000000000000000000000000000000000000000000000000000000000611980565b156114c6576000828152600460205260409020546001600160a01b0316156114b95760016114bc565b60005b60ff169050610e91565b50600081815260036020526040902054610e91565b6114e661117b611ac4565b8483811480156114f557508082145b611546576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b8181146112585785858281811061155c57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a8581811061158757fe5b905060200201356001600160a01b03168787868181106115a357fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b50505050806001019050611549565b606061162d612603565b905090565b600061165e827f0000000000000000000000000000000000000000000000000000000000000000611980565b6116af576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a206e6f7420616e204e46540000000000000000000000604482015290519081900360640190fd5b610e8e827f0000000000000000000000000000000000000000000000000000000000000000612647565b6116e461117b611ac4565b6113028161265d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6000611725611ac4565b90506001600160a01b038516611782576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b61178c86826127ca565b6117dd576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b6117e6846125dd565b156117fc576117f786868686612816565b611886565b611826847f0000000000000000000000000000000000000000000000000000000000000000611980565b15611839576117f7868686866000612934565b6040805162461bcd60e51b815260206004820152601960248201527f496e76656e746f72793a206e6f74206120746f6b656e20696400000000000000604482015290519081900360640190fd5b846001600160a01b0316866001600160a01b0316826001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a46118f5856001600160a01b0316612a83565b15611907576119078686868686612a89565b505050505050565b61191a61117b611ac4565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60007f80000000000000000000000000000000000000000000000000000000000000008316158015906119bc57506119b782612c13565b831615155b9392505050565b60006001600160e01b031982167f01ffc9a7000000000000000000000000000000000000000000000000000000001480611a2657506001600160e01b031982167fd9b67a2600000000000000000000000000000000000000000000000000000000145b80611a5a57506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b80611a8e57506001600160e01b031982167f09ce5c4600000000000000000000000000000000000000000000000000000000145b80610e8e5750506001600160e01b0319167fbd85b039000000000000000000000000000000000000000000000000000000001490565b600061162d612c24565b6001600160a01b03811660009081526007602052604090205460ff16611302576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416611b96576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b825182518114611bed576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60008060005b838114611d21576000878281518110611c0857fe5b602002602001015190506000878381518110611c2057fe5b60200260200101519050611c33826125dd565b15611c4857611c438a8383612d84565b611d17565b611c72827f0000000000000000000000000000000000000000000000000000000000000000611980565b1561183957611c848a83836001612e76565b6000611cb0837f0000000000000000000000000000000000000000000000000000000000000000612647565b905085611cc35780955060019450611d15565b858114611d0e5760008681526002602090815260408083206001600160a01b038f16845282528083208054890190559782526003905295909520805490940190935560019284611d15565b8460010194505b505b5050600101611bf3565b508115611d615760008281526002602090815260408083206001600160a01b038b1684528252808320805485019055848352600390915290208054820190555b6001600160a01b0387166000611d75611ac4565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8989604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611de5578181015183820152602001611dcd565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611e24578181015183820152602001611e0c565b5050505090500194505050505060405180910390a4611e4b876001600160a01b0316612a83565b15611e5e57611e5e600088888888612fb9565b50505050505050565b60606006611e7483613137565b6040516020018083805460018160011615610100020316600290048015611ed25780601f10611eb0576101008083540402835291820191611ed2565b820191906000526020600020905b815481529060010190602001808311611ebe575b5050825160208401908083835b60208310611efe5780518252601f199092019160209182019101611edf565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b6001600160a01b038416611f95576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b825182518114611fec576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b6000611ff6611ac4565b905061200287826127ca565b612053576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b60008060005b84811461215d57600088828151811061206e57fe5b60200260200101519050600088838151811061208657fe5b60200260200101519050612099826125dd565b156120af576120aa8c8c8484612816565b612153565b6120d9827f0000000000000000000000000000000000000000000000000000000000000000611980565b15611839576120ec8c8c84846001612934565b6000612118837f0000000000000000000000000000000000000000000000000000000000000000612647565b90508561212b5780955060019450612151565b85811461214a5761213e8d8d8888613246565b80955060019450612151565b8460010194505b505b5050600101612059565b5081156121705761217089898484613246565b876001600160a01b0316896001600160a01b0316846001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a8a604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156121f55781810151838201526020016121dd565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561223457818101518382015260200161221c565b5050505090500194505050505060405180910390a461225b886001600160a01b0316612a83565b1561226d5761226d8989898989612fb9565b505050505050505050565b60006122a4827f0000000000000000000000000000000000000000000000000000000000000000611980565b156122f6576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b506000908152600560205260409020546001600160a01b031690565b6001600160a01b03841661236d576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b612376836125dd565b1561238b57612386848484612d84565b6123c7565b6123b5837f0000000000000000000000000000000000000000000000000000000000000000611980565b15611839576123868484846000612e76565b6001600160a01b03841660006123db611ac4565b6001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a4612435846001600160a01b0316612a83565b15610eb257610eb2600085858585612a89565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561248157600080fd5b505afa158015612495573d6000803e3d6000fd5b505050506040513d60208110156124ab57600080fd5b50516001600160a01b03828116911614611302576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261258c90849061329a565b505050565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b7f8000000000000000000000000000000000000000000000000000000000000000161590565b606061260d61347d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b600061265282612c13565b198316905092915050565b612687817f0000000000000000000000000000000000000000000000000000000000000000611980565b156126d9576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b031615612743576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206578697374696e6720636f6c6c656374696f6e0000604482015290519081900360640190fd5b61274b611ac4565b600082815260056020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055612798816125dd565b1515817f4ebf8ad0df535ba5e487bc9cb27fe44120ca81c3a95d3eba79c0bd1df2ab2d5d60405160405180910390a350565b6000816001600160a01b0316836001600160a01b031614806119bc5750506001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b80612868576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b60008281526002602090815260408083206001600160a01b0388168452909152902054818110156128e0576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b031614610ed05760009283526002602090815260408085206001600160a01b039788168652909152808420918390039091559290931681522080549091019055565b81600114612989576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000838152600460205260409020546001600160a01b038681169116146129f7576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a206e6f6e2d6f776e6564204e46540000000000000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b038516905580610ed0576000612a42847f0000000000000000000000000000000000000000000000000000000000000000612647565b60009081526002602090815260408083206001600160a01b03998a168452909152808220805460001901905595909616865250505091208054600101905550565b3b151590565b7ff23a6e61000000000000000000000000000000000000000000000000000000006001600160a01b03851663f23a6e61612ac1611ac4565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612b3b578181015183820152602001612b23565b50505050905090810190601f168015612b685780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015612b8b57600080fd5b505af1158015612b9f573d6000803e3d6000fd5b505050506040513d6020811015612bb557600080fd5b50516001600160e01b03191614610ed0576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b6001610100919091031b6000190190565b60003381612c306135e0565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480612ca357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15612cb15791506112eb9050565b6001600160a01b0382163214801590612d7057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015612d4357600080fd5b505afa158015612d57573d6000803e3d6000fd5b505050506040513d6020811015612d6d57600080fd5b50515b15612d7e5791506112eb9050565b50905090565b80612dd6576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b600082815260036020526040902054818101818111612e3c576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a20737570706c79206f766572666c6f77000000000000604482015290519081900360640190fd5b600093845260036020908152604080862092909255600281528185206001600160a01b039096168552949094525091902080549091019055565b81600114612ecb576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b60008381526004602052604090205415612f2c576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206578697374696e672f6275726e74204e4654000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b038516905580610eb2576000612f77847f0000000000000000000000000000000000000000000000000000000000000000612647565b600090815260036020908152604080832080546001908101909155600283528184206001600160a01b038a168552909252909120805490910190555050505050565b7fbc197c81000000000000000000000000000000000000000000000000000000006001600160a01b03851663bc197c81612ff1611ac4565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561306a578181015183820152602001613052565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156130a9578181015183820152602001613091565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156130e55781810151838201526020016130cd565b50505050905090810190601f1680156131125780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015612b8b57600080fd5b606081613178575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610e91565b8160005b811561319057600101600a8204915061317c565b60008167ffffffffffffffff811180156131a957600080fd5b506040519080825280601f01601f1916602001820160405280156131d4576020820181803683370190505b50859350905060001982015b831561323d57600a840660300160f81b8282806001900393508151811061320357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506131e0565b50949350505050565b826001600160a01b0316846001600160a01b031614610eb25760009182526002602090815260408084206001600160a01b039687168552909152808320805483900390559290931681522080549091019055565b816132ad6001600160a01b038216612a83565b6132fe576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b6020831061333b5780518252601f19909201916020918201910161331c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461339d576040519150601f19603f3d011682016040523d82523d6000602084013e6133a2565b606091505b509150915081156134215780511561341c578080602001905160208110156133c957600080fd5b505161341c576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b610ed0565b8051613474576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168114806134e957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b15613500576134f66135ec565b92509250506135dc565b6001600160a01b03811632148015906135c657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d661354b6135e0565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561359957600080fd5b505afa1580156135ad573d6000803e3d6000fd5b505050506040513d60208110156135c357600080fd5b50515b156135d3576134f66135ec565b60003692509250505b9091565b60131936013560601c90565b3660006135ff60131983018284816136a8565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261363d5760008555613683565b82601f106136565782800160ff19823516178555613683565b82800160010185558215613683579182015b82811115613683578235825591602001919060010190613668565b5061368f929150613693565b5090565b5b8082111561368f5760008155600101613694565b600080858511156136b7578182fd5b838611156136c3578182fd5b505082019391909203915056fea264697066735822122086b91fdb9f790bc269fbc7947d5dd661463fc15001cec91b26da95f7a1352b6a64736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xC3666C36 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD0011D9D GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD0011D9D EQ PUSH2 0xC28 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0xC45 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0xC73 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xD3E JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xAEF JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0xC03 JUMPI DUP1 PUSH4 0xC7778BAA EQ PUSH2 0xC0B JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0xA22CB465 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0xA61 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xA8F JUMPI DUP1 PUSH4 0xADEBF6F2 EQ PUSH2 0xAB5 JUMPI DUP1 PUSH4 0xBD85B039 EQ PUSH2 0xAD2 JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA2B JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0xA33 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0xA59 JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x510B5158 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x5CFA9297 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x5CFA9297 EQ PUSH2 0x7C8 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x88A JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x8A7 JUMPI DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0x9BB JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x510B5158 EQ PUSH2 0x761 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x79A JUMPI DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x7C0 JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0xE89341C GT PUSH2 0x197 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x3F6 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x488 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x64F JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1FB JUMPI DUP1 PUSH4 0xD6A5BBB EQ PUSH2 0x236 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD64 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x222 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xE50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x37F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x391 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xE96 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x413 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xEB8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x44D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x435 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x47A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x556 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x58A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x60E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xEC3 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x711 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x665 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x680 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x706 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xED7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x74D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x735 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x77E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x777 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFDD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x222 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFE8 JUMP JUMPDEST PUSH2 0x413 PUSH2 0x1061 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x7DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x815 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x849 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x10EF SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x77E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1106 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x90C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x92A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x93C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x95E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x97C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x98E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1170 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1262 JUMP JUMPDEST PUSH2 0x77E PUSH2 0x12DE JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12EE JUMP JUMPDEST PUSH2 0x3F4 PUSH2 0x1305 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1363 JUMP JUMPDEST PUSH2 0x222 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1444 JUMP JUMPDEST PUSH2 0x222 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xACB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1459 JUMP JUMPDEST PUSH2 0x1E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1464 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xB05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x14DB JUMP JUMPDEST PUSH2 0x413 PUSH2 0x1623 JUMP JUMPDEST PUSH2 0x1E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1632 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x16D9 JUMP JUMPDEST PUSH2 0x222 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x16ED JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xC89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xCFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x171B SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x190F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xDC1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2061646472657373000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xDEB DUP3 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST ISZERO PUSH2 0xE25 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0xE18 JUMPI PUSH1 0x0 PUSH2 0xE1B JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0xE4A JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x510B515800000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xE8E JUMPI POP PUSH2 0xE8E DUP3 PUSH2 0x19C3 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xEA6 PUSH2 0xEA1 PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0x1ACE JUMP JUMPDEST PUSH2 0xEB2 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1B3B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE8E DUP3 PUSH2 0x1E67 JUMP JUMPDEST PUSH2 0xED0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1F3A JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP3 EQ PUSH2 0xF2D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xF46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xF70 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP1 DUP7 EQ PUSH2 0xFD3 JUMPI PUSH2 0xFB4 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0xF8C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0xFA8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0xD64 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xFC0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xF76 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE8E DUP3 PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xE8E JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x10E7 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x10BC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x10E7 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 0x10CA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0x10FA PUSH2 0xEA1 PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0xEB2 DUP5 DUP5 DUP5 DUP5 PUSH2 0x2312 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xE8E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1180 PUSH2 0x117B PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0x2448 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x118F JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x11E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1258 JUMPI PUSH2 0x1250 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x11F9 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1215 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1228 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x250C SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x11E3 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x126D PUSH2 0x117B PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0x1279 PUSH1 0x6 DUP4 DUP4 PUSH2 0x3607 JUMP JUMPDEST POP PUSH32 0x4B1DC5C136A3CE9FDED8DB0CE3D3366C58764EC3A8E4C2B9E52E4DDFE5EBBF7 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12F9 PUSH2 0x117B PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0x1302 DUP2 PUSH2 0x2591 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x130F PUSH2 0x1AC4 JUMP JUMPDEST SWAP1 POP PUSH2 0x131A DUP2 PUSH2 0x1ACE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x136D PUSH2 0x1AC4 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x13D6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2073656C662D617070726F76616C0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE8E DUP3 PUSH2 0x25DD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1490 DUP3 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST ISZERO PUSH2 0x14C6 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x14B9 JUMPI PUSH1 0x1 PUSH2 0x14BC JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0xE91 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE91 JUMP JUMPDEST PUSH2 0x14E6 PUSH2 0x117B PUSH2 0x1AC4 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x14F5 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1546 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1258 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x155C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x1587 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x15A3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1600 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1614 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x1549 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x162D PUSH2 0x2603 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165E DUP3 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST PUSH2 0x16AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420616E204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE8E DUP3 PUSH32 0x0 PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x16E4 PUSH2 0x117B PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0x1302 DUP2 PUSH2 0x265D 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1725 PUSH2 0x1AC4 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x1782 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x178C DUP7 DUP3 PUSH2 0x27CA JUMP JUMPDEST PUSH2 0x17DD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17E6 DUP5 PUSH2 0x25DD JUMP JUMPDEST ISZERO PUSH2 0x17FC JUMPI PUSH2 0x17F7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2816 JUMP JUMPDEST PUSH2 0x1886 JUMP JUMPDEST PUSH2 0x1826 DUP5 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST ISZERO PUSH2 0x1839 JUMPI PUSH2 0x17F7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x0 PUSH2 0x2934 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120746F6B656E20696400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x18F5 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A83 JUMP JUMPDEST ISZERO PUSH2 0x1907 JUMPI PUSH2 0x1907 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2A89 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x191A PUSH2 0x117B PUSH2 0x1AC4 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x19BC JUMPI POP PUSH2 0x19B7 DUP3 PUSH2 0x2C13 JUMP JUMPDEST DUP4 AND ISZERO ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x1A26 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1A5A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1A8E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9CE5C4600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xE8E JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xBD85B03900000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x162D PUSH2 0x2C24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1302 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1B96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x1BED JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 EQ PUSH2 0x1D21 JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C08 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1C20 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1C33 DUP3 PUSH2 0x25DD JUMP JUMPDEST ISZERO PUSH2 0x1C48 JUMPI PUSH2 0x1C43 DUP11 DUP4 DUP4 PUSH2 0x2D84 JUMP JUMPDEST PUSH2 0x1D17 JUMP JUMPDEST PUSH2 0x1C72 DUP3 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST ISZERO PUSH2 0x1839 JUMPI PUSH2 0x1C84 DUP11 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2E76 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CB0 DUP4 PUSH32 0x0 PUSH2 0x2647 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x1CC3 JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x1D15 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x1D0E JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP10 ADD SWAP1 SSTORE SWAP8 DUP3 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP6 SWAP1 SWAP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP5 ADD SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP3 DUP5 PUSH2 0x1D15 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1BF3 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x1D61 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 PUSH2 0x1D75 PUSH2 0x1AC4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1DE5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DCD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E24 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E0C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1E4B DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A83 JUMP JUMPDEST ISZERO PUSH2 0x1E5E JUMPI PUSH2 0x1E5E PUSH1 0x0 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2FB9 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x6 PUSH2 0x1E74 DUP4 PUSH2 0x3137 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1ED2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1EB0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x1ED2 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 0x1EBE JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1EFE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1EDF JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1F95 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x1FEC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1FF6 PUSH2 0x1AC4 JUMP JUMPDEST SWAP1 POP PUSH2 0x2002 DUP8 DUP3 PUSH2 0x27CA JUMP JUMPDEST PUSH2 0x2053 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x215D JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x206E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2086 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x2099 DUP3 PUSH2 0x25DD JUMP JUMPDEST ISZERO PUSH2 0x20AF JUMPI PUSH2 0x20AA DUP13 DUP13 DUP5 DUP5 PUSH2 0x2816 JUMP JUMPDEST PUSH2 0x2153 JUMP JUMPDEST PUSH2 0x20D9 DUP3 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST ISZERO PUSH2 0x1839 JUMPI PUSH2 0x20EC DUP13 DUP13 DUP5 DUP5 PUSH1 0x1 PUSH2 0x2934 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2118 DUP4 PUSH32 0x0 PUSH2 0x2647 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x212B JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x2151 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x214A JUMPI PUSH2 0x213E DUP14 DUP14 DUP9 DUP9 PUSH2 0x3246 JUMP JUMPDEST DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x2151 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2059 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x2170 JUMPI PUSH2 0x2170 DUP10 DUP10 DUP5 DUP5 PUSH2 0x3246 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP11 DUP11 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x21F5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x21DD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2234 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x221C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x225B DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A83 JUMP JUMPDEST ISZERO PUSH2 0x226D JUMPI PUSH2 0x226D DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x2FB9 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22A4 DUP3 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST ISZERO PUSH2 0x22F6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x236D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2376 DUP4 PUSH2 0x25DD JUMP JUMPDEST ISZERO PUSH2 0x238B JUMPI PUSH2 0x2386 DUP5 DUP5 DUP5 PUSH2 0x2D84 JUMP JUMPDEST PUSH2 0x23C7 JUMP JUMPDEST PUSH2 0x23B5 DUP4 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST ISZERO PUSH2 0x1839 JUMPI PUSH2 0x2386 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x2E76 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 PUSH2 0x23DB PUSH2 0x1AC4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2435 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A83 JUMP JUMPDEST ISZERO PUSH2 0xEB2 JUMPI PUSH2 0xEB2 PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2A89 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2495 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1302 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x258C SWAP1 DUP5 SWAP1 PUSH2 0x329A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x260D PUSH2 0x347D JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2652 DUP3 PUSH2 0x2C13 JUMP JUMPDEST NOT DUP4 AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2687 DUP2 PUSH32 0x0 PUSH2 0x1980 JUMP JUMPDEST ISZERO PUSH2 0x26D9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2743 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E6720636F6C6C656374696F6E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x274B PUSH2 0x1AC4 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x2798 DUP2 PUSH2 0x25DD JUMP JUMPDEST ISZERO ISZERO DUP2 PUSH32 0x4EBF8AD0DF535BA5E487BC9CB27FE44120CA81C3A95D3EBA79C0BD1DF2AB2D5D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x19BC JUMPI POP POP 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x2868 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x28E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420656E6F7567682062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xED0 JUMPI PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP7 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP5 KECCAK256 SWAP2 DUP4 SWAP1 SUB SWAP1 SWAP2 SSTORE SWAP3 SWAP1 SWAP4 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x2989 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ PUSH2 0x29F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6F776E6564204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 SSTORE DUP1 PUSH2 0xED0 JUMPI PUSH1 0x0 PUSH2 0x2A42 DUP5 PUSH32 0x0 PUSH2 0x2647 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP6 SWAP1 SWAP7 AND DUP7 MSTORE POP POP POP SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xF23A6E61 PUSH2 0x2AC1 PUSH2 0x1AC4 JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2B3B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2B23 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2B68 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B9F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0xED0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220726566757365640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH2 0x100 SWAP2 SWAP1 SWAP2 SUB SHL PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x2C30 PUSH2 0x35E0 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2CA3 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x2CB1 JUMPI SWAP2 POP PUSH2 0x12EB SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x2D70 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x2D7E JUMPI SWAP2 POP PUSH2 0x12EB SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x2DD6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x2E3C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20737570706C79206F766572666C6F77000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP2 MSTORE DUP2 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP6 MSTORE SWAP5 SWAP1 SWAP5 MSTORE POP SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x2ECB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2F2C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E672F6275726E74204E4654000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 SSTORE DUP1 PUSH2 0xEB2 JUMPI PUSH1 0x0 PUSH2 0x2F77 DUP5 PUSH32 0x0 PUSH2 0x2647 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xBC197C81 PUSH2 0x2FF1 PUSH2 0x1AC4 JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x306A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3052 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x30A9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3091 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x30E5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x30CD JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3112 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x3178 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xE91 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x3190 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x317C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x31A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x31D4 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x323D JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x3203 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x31E0 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xEB2 JUMPI PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE SWAP3 SWAP1 SWAP4 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH2 0x32AD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2A83 JUMP JUMPDEST PUSH2 0x32FE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x333B JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x331C JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x339D 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 0x33A2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x3421 JUMPI DUP1 MLOAD ISZERO PUSH2 0x341C JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x341C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xED0 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x3474 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x34E9 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x3500 JUMPI PUSH2 0x34F6 PUSH2 0x35EC JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x35DC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x35C6 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x354B PUSH2 0x35E0 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x35D3 JUMPI PUSH2 0x34F6 PUSH2 0x35EC JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x35FF PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x36A8 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x363D JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3683 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3656 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x3683 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3683 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3683 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3668 JUMP JUMPDEST POP PUSH2 0x368F SWAP3 SWAP2 POP PUSH2 0x3693 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x368F JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3694 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x36B7 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x36C3 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP7 0xB9 0x1F 0xDB SWAP16 PUSH26 0xBC269FBC7947D5DD661463FC15001CEC91B26DA95F7A1352B6A PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "1115:3636:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3377:341:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3377:341:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1752:212:27;;;;;;;;;;;;;;;;-1:-1:-1;1752:212:27;-1:-1:-1;;;;;;1752:212:27;;:::i;:::-;;;;;;;;;;;;;;;;;;3761:255;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3761:255:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3761:255:27;;;;;;;;-1:-1:-1;3761:255:27;;-1:-1:-1;;3761:255:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3761:255:27;;;;;;;;-1:-1:-1;3761:255:27;;-1:-1:-1;;3761:255:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3761:255:27;;-1:-1:-1;3761:255:27;;-1:-1:-1;;;;;3761:255:27:i;:::-;;2139:112;;;;;;;;;;;;;;;;-1:-1:-1;2139:112:27;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1930:320:12;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1930:320:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1930:320:12;;;;;;;;-1:-1:-1;1930:320:12;;-1:-1:-1;;1930:320:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1930:320:12;;;;;;;;-1:-1:-1;1930:320:12;;-1:-1:-1;;1930:320:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1930:320:12;;-1:-1:-1;1930:320:12;;-1:-1:-1;;;;;1930:320:12:i;3762:435:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3762:435:13;;-1:-1:-1;3762:435:13;-1:-1:-1;3762:435:13;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2431:126:27;;;;;;;;;;;;;;;;-1:-1:-1;2431:126:27;;:::i;:::-;;;;-1:-1:-1;;;;;2431:126:27;;;;;;;;;;;;;;544:193:85;;;;;;;;;;;;;;;;-1:-1:-1;544:193:85;-1:-1:-1;;;;;544:193:85;;:::i;552:29:11:-;;;:::i;3434:223:27:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3434:223:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3434:223:27;;-1:-1:-1;3434:223:27;;-1:-1:-1;;;;;3434:223:27:i;5369:235:13:-;;;;;;;;;;;;;;;;-1:-1:-1;5369:235:13;;:::i;1137:481:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1137:481:8;;-1:-1:-1;1137:481:8;-1:-1:-1;1137:481:8;:::i;588:214:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;588:214:11;;-1:-1:-1;588:214:11;-1:-1:-1;588:214:11;:::i;1114:94:2:-;;;:::i;694:120:1:-;;;;;;;;;;;;;;;;-1:-1:-1;694:120:1;-1:-1:-1;;;;;694:120:1;;:::i;929:185::-;;;:::i;4232:301:13:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4232:301:13;;;;;;;;;;:::i;339:40:1:-;;;;;;;;;;;;;;;;-1:-1:-1;339:40:1;-1:-1:-1;;;;;339:40:1;;:::i;4905:122:13:-;;;;;;;;;;;;;;;;-1:-1:-1;4905:122:13;;:::i;5788:282::-;;;;;;;;;;;;;;;;-1:-1:-1;5788:282:13;;:::i;2430:511:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2430:511:8;;-1:-1:-1;2430:511:8;-1:-1:-1;2430:511:8;:::i;4655:94:27:-;;;:::i;5071:254:13:-;;;;;;;;;;;;;;;;-1:-1:-1;5071:254:13;;:::i;3055:146:27:-;;;;;;;;;;;;;;;;-1:-1:-1;3055:146:27;;:::i;4568:164:13:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4568:164:13;;;;;;;;;;:::i;1077:809:12:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1077:809:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1077:809:12;;-1:-1:-1;1077:809:12;;-1:-1:-1;;;;;1077:809:12:i;1448:197:2:-;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;3377:341:13:-;3461:7;-1:-1:-1;;;;;3488:19:13;;3480:55;;;;;-1:-1:-1;;;3480:55:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;3550:44;:2;3572:21;3550;:44::i;:::-;3546:128;;;3633:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;3617:38:13;;;;;;:46;;3662:1;3617:46;;;3658:1;3617:46;3610:53;;;;;;3546:128;-1:-1:-1;3691:13:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;3691:20:13;;;;;;;;;;3377:341;;;;;:::o;1752:212:27:-;1837:4;-1:-1:-1;;;;;;1860:57:27;;1875:42;1860:57;;:97;;;1921:36;1945:11;1921:23;:36::i;:::-;1853:104;;1752:212;;;;:::o;3761:255::-;3934:28;3949:12;:10;:12::i;:::-;3934:14;:28::i;:::-;3972:37;3987:2;3991:3;3996:6;4004:4;3972:14;:37::i;:::-;3761:255;;;;:::o;2139:112::-;2204:13;2236:8;2241:2;2236:4;:8::i;1930:320:12:-;2192:51;2215:4;2221:2;2225:3;2230:6;2238:4;2192:22;:51::i;:::-;1930:320;;;;;:::o;3762:435:13:-;3877:16;3913:27;;;3905:70;;;;;-1:-1:-1;;;3905:70:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;3986:25;4028:6;4014:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4014:28:13;;3986:56;;4058:9;4053:112;4073:18;;;4053:112;;4126:28;4136:6;;4143:1;4136:9;;;;;;;;;;;;;-1:-1:-1;;;;;4136:9:13;4147:3;;4151:1;4147:6;;;;;;;;;;;;;4126:9;:28::i;:::-;4112:8;4121:1;4112:11;;;;;;;;;;;;;;;;;:42;4093:3;;4053:112;;;-1:-1:-1;4182:8:13;3762:435;-1:-1:-1;;;;;3762:435:13:o;2431:126:27:-;2502:7;2528:22;2537:12;2528:8;:22::i;544:193:85:-;631:4;667:19;-1:-1:-1;;;;;654:32:85;:9;-1:-1:-1;;;;;654:32:85;;:76;;;;711:18;-1:-1:-1;;;;;690:40:85;:9;-1:-1:-1;;;;;690:40:85;;647:83;;544:193;;;:::o;552:29:11:-;;;;;;;;;;;;;;;-1:-1:-1;;552:29:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3434:223:27:-;3582:28;3597:12;:10;:12::i;3582:28::-;3620:30;3630:2;3634;3638:5;3645:4;3620:9;:30::i;5369:235:13:-;5439:7;5490:14;;;:7;:14;;;;;;-1:-1:-1;;;;;5524:19:13;;5516:59;;;;;-1:-1:-1;;;5516:59:13;;;;;;;;;;;;;;;;;;;;;;;;;;;1137:481:8;1301:31;1319:12;:10;:12::i;:::-;1301:17;:31::i;:::-;1359:8;1392:23;;;:51;;;;-1:-1:-1;1419:24:8;;;1392:51;1384:90;;;;;-1:-1:-1;;;1384:90:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;1489:9;1484:128;1509:6;1504:1;:11;1484:128;;1536:65;1577:8;;1586:1;1577:11;;;;;;;;;;;;;-1:-1:-1;;;;;1577:11:8;1590:7;;1598:1;1590:10;;;;;;;;;;;;;1550:6;;1557:1;1550:9;;;;;;;;;;;;;-1:-1:-1;;;;;1550:9:8;-1:-1:-1;;;;;1536:40:8;;;:65;;;;;:::i;:::-;1517:3;;1484:128;;;;1137:481;;;;;;;:::o;588:214:11:-;669:31;687:12;:10;:12::i;669:31::-;710:34;:15;728:16;;710:34;:::i;:::-;;759:36;778:16;;759:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;759:36:11;;;;;;;;-1:-1:-1;759:36:11;;-1:-1:-1;;;;759:36:11;588:214;;:::o;1114:94:2:-;1169:7;1195:6;-1:-1:-1;;;;;1195:6:2;1114:94;;:::o;694:120:1:-;747:31;765:12;:10;:12::i;747:31::-;788:19;799:7;788:10;:19::i;:::-;694:120;:::o;929:185::-;972:15;990:12;:10;:12::i;:::-;972:30;;1012:23;1027:7;1012:14;:23::i;:::-;-1:-1:-1;;;;;1045:17:1;;1065:5;1045:17;;;:8;:17;;;;;;:25;;-1:-1:-1;;1045:25:1;;;1085:22;;;1065:5;1085:22;929:185;:::o;4232:301:13:-;4326:14;4343:12;:10;:12::i;:::-;4326:29;;4385:6;-1:-1:-1;;;;;4373:18:13;:8;-1:-1:-1;;;;;4373:18:13;;;4365:55;;;;;-1:-1:-1;;;4365:55:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4430:18:13;;;;;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;;:39;;-1:-1:-1;;4430:39:13;;;;;;;;;;4484:42;;;;;;;;;;;;;;;;;4232:301;;;:::o;339:40:1:-;;;;;;;;;;;;;;;:::o;4905:122:13:-;4977:4;5000:20;:2;:18;:20::i;5788:282::-;5861:7;5884:44;:2;5906:21;5884;:44::i;:::-;5880:184;;;5992:1;5967:11;;;:7;:11;;;;;;-1:-1:-1;;;;;5951:43:13;;:51;;6001:1;5951:51;;;5997:1;5951:51;5944:58;;;;;;5880:184;-1:-1:-1;6040:13:13;;;;:9;:13;;;;;;6033:20;;2430:511:8;2599:31;2617:12;:10;:12::i;2599:31::-;2657:8;2690:26;;;:55;;;;-1:-1:-1;2720:25:8;;;2690:55;2682:94;;;;;-1:-1:-1;;;2682:94:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:9;2786:149;2811:6;2806:1;:11;2786:149;;2857:9;;2867:1;2857:12;;;;;;;;;;;;;-1:-1:-1;;;;;2857:12:8;-1:-1:-1;;;;;2838:45:8;;2892:4;2899:8;;2908:1;2899:11;;;;;;;;;;;;;-1:-1:-1;;;;;2899:11:8;2912:8;;2921:1;2912:11;;;;;;;;;;;;;2838:86;;;;;;;;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:3;;;;;2786:149;;4655:94:27;4697:16;4732:10;:8;:10::i;:::-;4725:17;;4655:94;:::o;5071:254:13:-;5148:7;5175:47;:5;5200:21;5175:24;:47::i;:::-;5167:81;;;;;-1:-1:-1;;;5167:81:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;5265:53;:5;5296:21;5265:30;:53::i;3055:146:27:-;3122:31;3140:12;:10;:12::i;3122:31::-;3163;3181:12;3163:17;:31::i;4568:164:13:-;-1:-1:-1;;;;;4693:22:13;;;4670:4;4693:22;;;:10;:22;;;;;;;;:32;;;;;;;;;;;;;;;4568:164::o;1077:809:12:-;1255:14;1272:12;:10;:12::i;:::-;1255:29;-1:-1:-1;;;;;;1302:16:12;;1294:56;;;;;-1:-1:-1;;;1294:56:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;1368:27;1382:4;1388:6;1368:13;:27::i;:::-;1360:70;;;;;-1:-1:-1;;;1360:70:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;1445:20;:2;:18;:20::i;:::-;1441:276;;;1481:38;1499:4;1505:2;1509;1513:5;1481:17;:38::i;:::-;1441:276;;;1540:44;:2;1562:21;1540;:44::i;:::-;1536:181;;;1600:40;1613:4;1619:2;1623;1627:5;1634;1600:12;:40::i;1536:181::-;1671:35;;;-1:-1:-1;;;1671:35:12;;;;;;;;;;;;;;;;;;;;;;;;;;;1536:181;1761:2;-1:-1:-1;;;;;1732:43:12;1755:4;-1:-1:-1;;;;;1732:43:12;1747:6;-1:-1:-1;;;;;1732:43:12;;1765:2;1769:5;1732:43;;;;;;;;;;;;;;;;;;;;;;;;1789:15;:2;-1:-1:-1;;;;;1789:13:12;;:15::i;:::-;1785:95;;;1820:49;1843:4;1849:2;1853;1857:5;1864:4;1820:22;:49::i;:::-;1077:809;;;;;;:::o;1448:197:2:-;1527:31;1545:12;:10;:12::i;1527:31::-;1568:6;:17;;;;-1:-1:-1;;;;;1568:17:2;;;;;;;;;1600:38;;1568:17;;1621:6;;;1600:38;;1568:6;1600:38;1448:197;:::o;875:200:15:-;968:4;747:8;991:12;;:17;;;;:77;;;1017:46;1042:20;1017:24;:46::i;:::-;1012:51;;:56;;991:77;984:84;875:200;-1:-1:-1;;;875:200:15:o;2760:444:13:-;2845:4;-1:-1:-1;;;;;;2880:40:13;;2895:25;2880:40;;:97;;-1:-1:-1;;;;;;;2936:41:13;;2951:26;2936:41;2880:97;:165;;;-1:-1:-1;;;;;;;2993:52:13;;3008:37;2993:52;2880:165;:240;;;-1:-1:-1;;;;;;;3061:59:13;;3076:44;3061:59;2880:240;:317;;;-1:-1:-1;;;;;;;;3136:61:13;3151:46;3136:61;;2760:444::o;4151:183:27:-;4256:15;4290:37;:35;:37::i;1120:126:1:-;-1:-1:-1;;;;;1193:17:1;;;;;;:8;:17;;;;;;;;1185:54;;;;;-1:-1:-1;;;1185:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;4973:1875:12;-1:-1:-1;;;;;5148:16:12;;5140:52;;;;;-1:-1:-1;;;5140:52:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;5219:10;;5257:13;;5247:23;;5239:66;;;;;-1:-1:-1;;;5239:66:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;5316:22;5348:25;5388:9;5383:1100;5404:6;5399:1;:11;5383:1100;;5431:10;5444:3;5448:1;5444:6;;;;;;;;;;;;;;5431:19;;5464:13;5480:6;5487:1;5480:9;;;;;;;;;;;;;;5464:25;;5507:20;:2;:18;:20::i;:::-;5503:970;;;5547:28;5561:2;5565;5569:5;5547:13;:28::i;:::-;5503:970;;;5600:44;:2;5622:21;5600;:44::i;:::-;5596:877;;;5664:29;5673:2;5677;5681:5;5688:4;5664:8;:29::i;:::-;5711:24;5738:50;:2;5766:21;5738:27;:50::i;:::-;5711:77;-1:-1:-1;5810:19:12;5806:579;;5870:16;5853:33;;5928:1;5908:21;;5806:579;;;6000:14;5980:16;:34;5976:391;;6042:25;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;6042:29:12;;;;;;;;;:50;;;;;;6118:25;;;:9;:25;;;;;;:46;;;;;;;;-1:-1:-1;;6207:16:12;5976:391;;;6325:19;;;;;5976:391;5596:877;;-1:-1:-1;;5412:3:12;;5383:1100;;;-1:-1:-1;6497:19:12;;6493:160;;6532:25;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;6532:29:12;;;;;;;;;:50;;;;;;6596:25;;;:9;:25;;;;;:46;;;;;;6493:160;-1:-1:-1;;;;;6668:56:12;;6704:1;6682:12;:10;:12::i;:::-;-1:-1:-1;;;;;6668:56:12;;6712:3;6717:6;6668:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6738:15;:2;-1:-1:-1;;;;;6738:13:12;;:15::i;:::-;6734:108;;;6769:62;6805:1;6809:2;6813:3;6818:6;6826:4;6769:27;:62::i;:::-;4973:1875;;;;;;;:::o;808:159:11:-;865:13;921:15;938:20;:2;:18;:20::i;:::-;904:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:11;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;890:70;;808:159;;;:::o;2385:1936:12:-;-1:-1:-1;;;;;2582:16:12;;2574:56;;;;;-1:-1:-1;;;2574:56:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;2657:10;;2695:13;;2685:23;;2677:66;;;;;-1:-1:-1;;;2677:66:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;2753:14;2770:12;:10;:12::i;:::-;2753:29;;2800:27;2814:4;2820:6;2800:13;:27::i;:::-;2792:70;;;;;-1:-1:-1;;;2792:70:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;2873:22;2905:25;2945:9;2940:1071;2961:6;2956:1;:11;2940:1071;;2988:10;3001:3;3005:1;3001:6;;;;;;;;;;;;;;2988:19;;3021:13;3037:6;3044:1;3037:9;;;;;;;;;;;;;;3021:25;;3064:20;:2;:18;:20::i;:::-;3060:941;;;3104:38;3122:4;3128:2;3132;3136:5;3104:17;:38::i;:::-;3060:941;;;3167:44;:2;3189:21;3167;:44::i;:::-;3163:838;;;3231:39;3244:4;3250:2;3254;3258:5;3265:4;3231:12;:39::i;:::-;3288:24;3315:50;:2;3343:21;3315:27;:50::i;:::-;3288:77;-1:-1:-1;3387:19:12;3383:530;;3447:16;3430:33;;3505:1;3485:21;;3383:530;;;3577:14;3557:16;:34;3553:342;;3619:73;3648:4;3654:2;3658:14;3674:17;3619:28;:73::i;:::-;3735:16;3718:33;;3797:1;3777:21;;3553:342;;;3853:19;;;;;3553:342;3163:838;;-1:-1:-1;;2969:3:12;;2940:1071;;;-1:-1:-1;4025:19:12;;4021:123;;4060:73;4089:4;4095:2;4099:14;4115:17;4060:28;:73::i;:::-;4187:2;-1:-1:-1;;;;;4159:44:12;4181:4;-1:-1:-1;;;;;4159:44:12;4173:6;-1:-1:-1;;;;;4159:44:12;;4191:3;4196:6;4159:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4217:15;:2;-1:-1:-1;;;;;4217:13:12;;:15::i;:::-;4213:102;;;4248:56;4276:4;4282:2;4286:3;4291:6;4299:4;4248:27;:56::i;:::-;2385:1936;;;;;;;;;:::o;6918:232:13:-;6989:7;7017:54;:12;7049:21;7017:31;:54::i;:::-;7016:55;7008:95;;;;;-1:-1:-1;;;7008:95:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7120:23:13;;;;:9;:23;;;;;;-1:-1:-1;;;;;7120:23:13;;6918:232::o;4327:640:12:-;-1:-1:-1;;;;;4469:16:12;;4461:52;;;;;-1:-1:-1;;;4461:52:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;4528:20;:2;:18;:20::i;:::-;4524:256;;;4564:28;4578:2;4582;4586:5;4564:13;:28::i;:::-;4524:256;;;4613:44;:2;4635:21;4613;:44::i;:::-;4609:171;;;4673:30;4682:2;4686;4690:5;4697;4673:8;:30::i;4609:171::-;-1:-1:-1;;;;;4795:55:12;;4832:1;4810:12;:10;:12::i;:::-;-1:-1:-1;;;;;4795:55:12;;4840:2;4844:5;4795:55;;;;;;;;;;;;;;;;;;;;;;;;4864:15;:2;-1:-1:-1;;;;;4864:13:12;;:15::i;:::-;4860:101;;;4895:55;4926:1;4930:2;4934;4938:5;4945:4;4895:22;:55::i;1770:136:2:-;1860:4;-1:-1:-1;;;;;1860:10:2;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1860:12:2;-1:-1:-1;;;;;1849:23:2;;;;;;1841:58;;;;;-1:-1:-1;;;1841:58:2;;;;;;;;;;;;;;;;;;;;;;;;;;;416:223:6;573:58;;;-1:-1:-1;;;;;573:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;596:23;573:58;;;538:94;;566:5;;538:27;:94::i;:::-;416:223;;;:::o;1252:122:1:-;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;762:107:15:-;747:8;845:12;:17;;762:107::o;4340:180:27:-;4443:16;4478:35;:33;:35::i;:::-;4471:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4471:42:27;;-1:-1:-1;;;;4340:180:27;:::o;1081:190:15:-;1183:7;1218:46;1243:20;1218:24;:46::i;:::-;1217:47;1209:5;:55;1202:62;;1081:190;;;;:::o;6518:394:13:-;6603:54;:12;6635:21;6603:31;:54::i;:::-;6602:55;6594:95;;;;;-1:-1:-1;;;6594:95:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;6742:1;6707:23;;;:9;:23;;;;;;-1:-1:-1;;;;;6707:23:13;:37;6699:80;;;;;-1:-1:-1;;;6699:80:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;6815:12;:10;:12::i;:::-;6789:23;;;;:9;:23;;;;;:38;;;;-1:-1:-1;;;;;6789:38:13;;;;;;;;;;6874:30;6789:23;6874:28;:30::i;:::-;6842:63;;6860:12;6842:63;;;;;;;;;;6518:394;:::o;7572:158::-;7656:4;7688:6;-1:-1:-1;;;;;7680:14:13;:4;-1:-1:-1;;;;;7680:14:13;;7679:44;;;-1:-1:-1;;;;;;;7699:16:13;;;;;;;:10;:16;;;;;;;;:24;;;;;;;;;;;;;;;7572:158::o;8179:487:12:-;8324:10;8316:44;;;;;-1:-1:-1;;;8316:44:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;8370:15;8388:13;;;:9;:13;;;;;;;;-1:-1:-1;;;;;8388:19:12;;;;;;;;;;8425:16;;;;8417:58;;;;;-1:-1:-1;;;8417:58:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;8497:2;-1:-1:-1;;;;;8489:10:12;:4;-1:-1:-1;;;;;8489:10:12;;8485:175;;8515:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;8515:19:12;;;;;;;;;;;8537:15;;;;8515:37;;;8623:17;;;;;;;:26;;;;;;;8179:487::o;8672:683::-;8834:5;8843:1;8834:10;8826:49;;;;;-1:-1:-1;;;8826:49:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;8917:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;8893:37:12;;;;;;8885:74;;;;;-1:-1:-1;;;8885:74:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;8969:11;;;;:7;:11;;;;;-1:-1:-1;;;;;8983:20:12;;8969:34;;9018:7;9013:336;;9041:20;9064:50;:2;9092:21;9064:27;:50::i;:::-;9201:23;;;;:9;:23;;;;;;;;-1:-1:-1;;;;;9201:29:12;;;;;;;;;;;:34;;-1:-1:-1;;9201:34:12;;;9306:27;;;;;;-1:-1:-1;;;9306:27:12;;:32;;-1:-1:-1;9306:32:12;;;-1:-1:-1;8672:683:12:o;913:377:9:-;1229:20;1275:8;;;913:377::o;8201:317:13:-;8462:17;-1:-1:-1;;;;;8378:43:13;;1559:10;8422:12;:10;:12::i;:::-;8436:4;8442:2;8446:5;8453:4;8378:80;;;;;;;;;;;;;-1:-1:-1;;;;;8378:80:13;;;;;;-1:-1:-1;;;;;8378:80:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8378:80:13;-1:-1:-1;;;;;;8378:101:13;;8370:141;;;;;-1:-1:-1;;;8370:141:13;;;;;;;;;;;;;;;;;;;;;;;;;;;1277:158:15;1427:1;1396:3;:26;;;;1390:33;-1:-1:-1;;1389:39:15;;1277:158::o;743:904:85:-;796:15;851:10;796:15;896:27;:25;:27::i;:::-;871:52;;958:18;-1:-1:-1;;;;;937:40:85;:9;-1:-1:-1;;;;;937:40:85;;:76;;;;994:19;-1:-1:-1;;;;;981:32:85;:9;-1:-1:-1;;;;;981:32:85;;937:76;933:166;;;1082:6;-1:-1:-1;1075:13:85;;-1:-1:-1;1075:13:85;933:166;-1:-1:-1;;;;;1496:22:85;;1509:9;1496:22;;;;:78;;;1522:18;-1:-1:-1;;;;;1522:33:85;;1556:6;1564:9;1522:52;;;;;;;;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1522:52:85;1496:78;1492:122;;;1597:6;-1:-1:-1;1590:13:85;;-1:-1:-1;1590:13:85;1492:122;-1:-1:-1;1631:9:85;-1:-1:-1;743:904:85;:::o;6983:476:12:-;7102:10;7094:44;;;;;-1:-1:-1;;;7094:44:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;7148:14;7165:13;;;:9;:13;;;;;;7208:14;;;7240:18;;;7232:57;;;;;-1:-1:-1;;;7232:57:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;7299:13;;;;:9;:13;;;;;;;;:25;;;;7426:9;:13;;;;;-1:-1:-1;;;;;7426:17:12;;;;;;;;;-1:-1:-1;7426:17:12;;;:26;;;;;;;6983:476::o;7465:708::-;7601:5;7610:1;7601:10;7593:49;;;;;-1:-1:-1;;;7593:49:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;7660:11;;;;:7;:11;;;;;;:16;7652:58;;;;;-1:-1:-1;;;7652:58:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;7721:11;;;;:7;:11;;;;;-1:-1:-1;;;;;7735:20:12;;7721:34;;7771:7;7766:401;;7794:20;7817:50;:2;7845:21;7817:27;:50::i;:::-;8033:23;;;;:9;:23;;;;;;;;8031:25;;;;;;;;;8129:9;:23;;;;;-1:-1:-1;;;;;8129:27:12;;;;;;;;;;8127:29;;;;;;;-1:-1:-1;7465:708:12;;;;:::o;9002:389:13:-;9308:23;-1:-1:-1;;;;;9217:48:13;;1721:10;9266:12;:10;:12::i;:::-;9280:4;9286:3;9291:6;9299:4;9217:87;;;;;;;;;;;;;-1:-1:-1;;;;;9217:87:13;;;;;;-1:-1:-1;;;;;9217:87:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;276:546:10;339:13;368:10;364:51;;-1:-1:-1;394:10:10;;;;;;;;;;;;;;;;;;;364:51;439:5;424:12;478:75;485:9;;478:75;;510:8;;540:2;532:10;;;;478:75;;;562:19;594:6;584:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;584:17:10;-1:-1:-1;654:5:10;;-1:-1:-1;562:39:10;-1:-1:-1;;;627:10:10;;669:116;676:9;;669:116;;745:2;738:4;:9;732:2;:16;719:31;;701:6;708:7;;;;;;;701:15;;;;;;;;;;;:49;;;;;;;;;;-1:-1:-1;772:2:10;764:10;;;;669:116;;;-1:-1:-1;808:6:10;276:546;-1:-1:-1;;;;276:546:10:o;9361:434:12:-;9540:2;-1:-1:-1;;;;;9532:10:12;:4;-1:-1:-1;;;;;9532:10:12;;9528:261;;9631:23;;;;:9;:23;;;;;;;;-1:-1:-1;;;;;9631:29:12;;;;;;;;;;;:39;;;;;;;9741:27;;;;;;;:37;;;;;;;9361:434::o;1147:870:6:-;1272:5;1296:19;-1:-1:-1;;;;;1296:17:6;;;:19::i;:::-;1288:58;;;;;-1:-1:-1;;;1288:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:12;1431:17;1452:6;-1:-1:-1;;;;;1452:11:6;1464:8;1452:21;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1452:21:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:57;;;;1487:7;1483:528;;;1514:11;;:16;1510:122;;1569:4;1558:24;;;;;;;;;;;;;;;-1:-1:-1;1558:24:6;1550:67;;;;;-1:-1:-1;;;1550:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:528;;;1720:11;;1716:95;;1756:40;;;-1:-1:-1;;;1756:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:95;1938:4;1932:11;1982:4;1975;1971:2;1967:13;1960:27;1653:670:85;1704:14;;1758:10;-1:-1:-1;;;;;1803:18:85;1782:40;;;;:76;;;1839:19;-1:-1:-1;;;;;1826:32:85;:9;-1:-1:-1;;;;;1826:32:85;;1782:76;1778:197;;;1927:37;:35;:37::i;:::-;1920:44;;;;;;;1778:197;-1:-1:-1;;;;;2122:22:85;;2135:9;2122:22;;;;:99;;;2148:18;-1:-1:-1;;;;;2148:33:85;;2182:27;:25;:27::i;:::-;2211:9;2148:73;;;;;;;;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2148:73:85;2122:99;2118:174;;;2244:37;:35;:37::i;2118:174::-;2308:8;;2301:15;;;;;1653:670;;;:::o;103:519:84:-;-1:-1:-1;;585:14:84;581:23;568:37;564:2;560:46;;536:80::o;628:149::-;706:14;;739:31;-1:-1:-1;;749:20:84;;706:14;;;739:31;:::i;:::-;732:38;;;;628:149;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:363:86;;;172:8;160:10;157:24;154:2;;;202:9;191;184:28;154:2;239:6;229:8;226:20;223:2;;;267:9;256;249:28;223:2;-1:-1:-1;;301:23:86;;;346:25;;;;;-1:-1:-1;144:233:86:o"
            },
            "methodIdentifiers": {
              "addMinter(address)": "983b2d56",
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "baseMetadataURI()": "5b2bd79e",
              "collectionOf(uint256)": "c7778baa",
              "createCollection(uint256)": "d0011d9d",
              "creator(uint256)": "510b5158",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isFungible(uint256)": "adebf6f2",
              "isMinter(address)": "aa271e1a",
              "isTrustedForwarder(address)": "572b6c05",
              "msgData()": "c4c2bfdc",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "recoverERC20s(address[],address[],uint256[])": "73c8a958",
              "recoverERC721s(address[],address[],uint256[])": "c3666c36",
              "renounceMinter()": "98650275",
              "safeBatchMint(address,uint256[],uint256[],bytes)": "0d6a5bbb",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeMint(address,uint256,uint256,bytes)": "5cfa9297",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setBaseMetadataURI(string)": "7e518ec8",
              "supportsInterface(bytes4)": "01ffc9a7",
              "totalSupply(uint256)": "bd85b039",
              "transferOwnership(address)": "f2fde38b",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "contracts/token/ERC1155/mocks/ERC1155InventoryPausableMock.sol": {
        "ERC1155InventoryPausableMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IForwarderRegistry",
                  "name": "forwarderRegistry",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "universalForwarder",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collectionMaskLength",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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": false,
                  "internalType": "string",
                  "name": "baseMetadataURI",
                  "type": "string"
                }
              ],
              "name": "BaseMetadataURISet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "fungible",
                  "type": "bool"
                }
              ],
              "name": "CollectionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterRemoved",
              "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": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Paused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Unpaused",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "addMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "baseMetadataURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                }
              ],
              "name": "createCollection",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                }
              ],
              "name": "creator",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isMinter",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "forwarder",
                  "type": "address"
                }
              ],
              "name": "isTrustedForwarder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "msgData",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "ret",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pause",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "paused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC20s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "contracts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC721s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "string",
                  "name": "baseMetadataURI_",
                  "type": "string"
                }
              ],
              "name": "setBaseMetadataURI",
              "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": "id",
                  "type": "uint256"
                }
              ],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "unpause",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60e06040523480156200001157600080fd5b50604051620043b5380380620043b5833981810160405260608110156200003757600080fd5b5080516020820151604092830151600080546001600160a81b0319163361010081029190911782559451939492939192859285928592918391829182918891889187918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606091821b811660a05291901b166080528015801590620000ce575061010081105b62000120576040805162461bcd60e51b815260206004820152601c60248201527f496e76656e746f72793a2077726f6e67206d61736b206c656e67746800000000604482015290519081900360640190fd5b60c05250620001319050816200013e565b505050505050506200018a565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b60805160601c60a05160601c60c0516141856200023060003980610f7f528061168d528061185b52806118d65280611bd65280611c145280611ff652806121c152806122d25280612528528061256652806128325280612a805280612f815280613558528061373c528061377b5280613fa65250806111de5280612c9d5280613c735250806112195280612c625280612cf55280613c495280613cd452506141856000f3fe608060405234801561001057600080fd5b50600436106101ef5760003560e01c8063805349341161010f578063bd85b039116100a2578063d0011d9d11610071578063d0011d9d14610de0578063e985e9c514610dfd578063f242432a14610e2b578063f2fde38b14610ef6576101ef565b8063bd85b03914610c8a578063c3666c3614610ca7578063c4c2bfdc14610dbb578063c7778baa14610dc3576101ef565b806398650275116100de5780639865027514610c11578063a22cb46514610c19578063aa271e1a14610c47578063adebf6f214610c6d576101ef565b80638053493414610aa45780638456cb5914610bdb5780638da5cb5b14610be3578063983b2d5614610beb576101ef565b8063510b5158116101875780635cfa9297116101565780635cfa9297146108415780636352211e1461090357806373c8a958146109205780637e518ec814610a34576101ef565b8063510b5158146107d2578063572b6c051461080b5780635b2bd79e146108315780635c975abb14610839576101ef565b8063124d91e5116101c3578063124d91e5146104bf5780632eb2c2d6146104f15780633f4ba83a146106b85780634e1273f4146106c0576101ef565b8062fdd58e146101f457806301ffc9a7146102325780630d6a5bbb1461026d5780630e89341c1461042d575b600080fd5b6102206004803603604081101561020a57600080fd5b506001600160a01b038135169060200135610f1c565b60408051918252519081900360200190f35b6102596004803603602081101561024857600080fd5b50356001600160e01b031916611008565b604080519115158252519081900360200190f35b61042b6004803603608081101561028357600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156102ae57600080fd5b8201836020820111156102c057600080fd5b803590602001918460208302840111640100000000831117156102e257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561033257600080fd5b82018360208201111561034457600080fd5b8035906020019184602083028401116401000000008311171561036657600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156103b657600080fd5b8201836020820111156103c857600080fd5b803590602001918460018302840111640100000000831117156103ea57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061104e945050505050565b005b61044a6004803603602081101561044357600080fd5b5035611070565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561048457818101518382015260200161046c565b50505050905090810190601f1680156104b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61042b600480360360608110156104d557600080fd5b506001600160a01b03813516906020810135906040013561107b565b61042b600480360360a081101561050757600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561053b57600080fd5b82018360208201111561054d57600080fd5b8035906020019184602083028401116401000000008311171561056f57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156105bf57600080fd5b8201836020820111156105d157600080fd5b803590602001918460208302840111640100000000831117156105f357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561064357600080fd5b82018360208201111561065557600080fd5b8035906020019184600183028401116401000000008311171561067757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611093945050505050565b61042b6110af565b610782600480360360408110156106d657600080fd5b8101906020810181356401000000008111156106f157600080fd5b82018360208201111561070357600080fd5b8035906020019184602083028401116401000000008311171561072557600080fd5b91939092909160208101903564010000000081111561074357600080fd5b82018360208201111561075557600080fd5b8035906020019184602083028401116401000000008311171561077757600080fd5b5090925090506110c9565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156107be5781810151838201526020016107a6565b505050509050019250505060405180910390f35b6107ef600480360360208110156107e857600080fd5b50356111cf565b604080516001600160a01b039092168252519081900360200190f35b6102596004803603602081101561082157600080fd5b50356001600160a01b03166111da565b61044a611253565b6102596112e1565b61042b6004803603608081101561085757600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561088e57600080fd5b8201836020820111156108a057600080fd5b803590602001918460018302840111640100000000831117156108c257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506112ea945050505050565b6107ef6004803603602081101561091957600080fd5b5035611301565b61042b6004803603606081101561093657600080fd5b81019060208101813564010000000081111561095157600080fd5b82018360208201111561096357600080fd5b8035906020019184602083028401116401000000008311171561098557600080fd5b9193909290916020810190356401000000008111156109a357600080fd5b8201836020820111156109b557600080fd5b803590602001918460208302840111640100000000831117156109d757600080fd5b9193909290916020810190356401000000008111156109f557600080fd5b820183602082011115610a0757600080fd5b80359060200191846020830284011164010000000083111715610a2957600080fd5b50909250905061136b565b61042b60048036036020811015610a4a57600080fd5b810190602081018135640100000000811115610a6557600080fd5b820183602082011115610a7757600080fd5b80359060200191846001830284011164010000000083111715610a9957600080fd5b509092509050611458565b61042b60048036036060811015610aba57600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115610ae557600080fd5b820183602082011115610af757600080fd5b80359060200191846020830284011164010000000083111715610b1957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050640100000000811115610b6957600080fd5b820183602082011115610b7b57600080fd5b80359060200191846020830284011164010000000083111715610b9d57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506114d4945050505050565b61042b6114e7565b6107ef6114fa565b61042b60048036036020811015610c0157600080fd5b50356001600160a01b031661150f565b61042b611526565b61042b60048036036040811015610c2f57600080fd5b506001600160a01b0381351690602001351515611584565b61025960048036036020811015610c5d57600080fd5b50356001600160a01b0316611665565b61025960048036036020811015610c8357600080fd5b503561167a565b61022060048036036020811015610ca057600080fd5b5035611685565b61042b60048036036060811015610cbd57600080fd5b810190602081018135640100000000811115610cd857600080fd5b820183602082011115610cea57600080fd5b80359060200191846020830284011164010000000083111715610d0c57600080fd5b919390929091602081019035640100000000811115610d2a57600080fd5b820183602082011115610d3c57600080fd5b80359060200191846020830284011164010000000083111715610d5e57600080fd5b919390929091602081019035640100000000811115610d7c57600080fd5b820183602082011115610d8e57600080fd5b80359060200191846020830284011164010000000083111715610db057600080fd5b5090925090506116fc565b61044a611844565b61022060048036036020811015610dd957600080fd5b5035611853565b61042b60048036036020811015610df657600080fd5b50356118fa565b61025960048036036040811015610e1357600080fd5b506001600160a01b038135811691602001351661190e565b61042b600480360360a0811015610e4157600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135640100000000811115610e8157600080fd5b820183602082011115610e9357600080fd5b80359060200191846001830284011164010000000083111715610eb557600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061193c945050505050565b61042b60048036036020811015610f0c57600080fd5b50356001600160a01b0316611951565b60006001600160a01b038316610f79576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b610fa3827f00000000000000000000000000000000000000000000000000000000000000006119cb565b15610fdd576000828152600460205260409020546001600160a01b03848116911614610fd0576000610fd3565b60015b60ff169050611002565b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b031982167f510b5158000000000000000000000000000000000000000000000000000000001480611046575061104682611a0e565b90505b919050565b61105e611059611a4c565b611a56565b61106a84848484611ac3565b50505050565b606061104682611e40565b611083611f13565b61108e838383611f6b565b505050565b61109b611f13565b6110a88585858585612090565b5050505050565b6110bf6110ba611a4c565b61209d565b6110c7612161565b565b606083821461111f576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60008467ffffffffffffffff8111801561113857600080fd5b50604051908082528060200260200182016040528015611162578160200160208202803683370190505b50905060005b8086146111c5576111a687878381811061117e57fe5b905060200201356001600160a01b031686868481811061119a57fe5b90506020020135610f1c565b8282815181106111b257fe5b6020908102919091010152600101611168565b5095945050505050565b6000611046826121b9565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061104657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156112d95780601f106112ae576101008083540402835291602001916112d9565b820191906000526020600020905b8154815290600101906020018083116112bc57829003601f168201915b505050505081565b60005460ff1681565b6112f5611059611a4c565b61106a84848484612253565b6000818152600460205260408120546001600160a01b038116611046576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b6113766110ba611a4c565b84838114801561138557508082145b6113d6576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461144e576114468888838181106113ef57fe5b905060200201356001600160a01b031685858481811061140b57fe5b9050602002013588888581811061141e57fe5b905060200201356001600160a01b03166001600160a01b03166123899092919063ffffffff16565b6001016113d9565b5050505050505050565b6114636110ba611a4c565b61146f60068383614086565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b6114dc611f13565b61108e838383612409565b6114f26110ba611a4c565b6110c7612722565b60005461010090046001600160a01b03165b90565b61151a6110ba611a4c565b61152381612760565b50565b6000611530611a4c565b905061153b81611a56565b6001600160a01b038116600081815260076020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b600061158e611a4c565b9050806001600160a01b0316836001600160a01b031614156115f7576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a2073656c662d617070726f76616c0000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260016020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b60076020526000908152604090205460ff1681565b6000611046826127ac565b60006116b1827f00000000000000000000000000000000000000000000000000000000000000006119cb565b156116e7576000828152600460205260409020546001600160a01b0316156116da5760016116dd565b60005b60ff169050611049565b50600081815260036020526040902054611049565b6117076110ba611a4c565b84838114801561171657508082145b611767576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461144e5785858281811061177d57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a858181106117a857fe5b905060200201356001600160a01b03168787868181106117c457fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561182157600080fd5b505af1158015611835573d6000803e3d6000fd5b5050505080600101905061176a565b606061184e6127d2565b905090565b600061187f827f00000000000000000000000000000000000000000000000000000000000000006119cb565b6118d0576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a206e6f7420616e204e46540000000000000000000000604482015290519081900360640190fd5b611046827f0000000000000000000000000000000000000000000000000000000000000000612816565b6119056110ba611a4c565b6115238161282c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b611944611f13565b6110a88585858585612999565b61195c6110ba611a4c565b600080547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682810293909317808555604051939492900416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60007f8000000000000000000000000000000000000000000000000000000000000000831615801590611a075750611a0282612b40565b831615155b9392505050565b60006001600160e01b031982167f921ed8d1000000000000000000000000000000000000000000000000000000001480611046575061104682612b51565b600061184e612c52565b6001600160a01b03811660009081526007602052604090205460ff16611523576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416611b1e576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b825182518114611b75576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60008060005b838114611cfa576000878281518110611b9057fe5b602002602001015190506000878381518110611ba857fe5b60200260200101519050611bbb826127ac565b15611bd057611bcb8a8383612db2565b611cf0565b611bfa827f00000000000000000000000000000000000000000000000000000000000000006119cb565b15611ca357611c0c8a83836001612ea4565b6000611c38837f0000000000000000000000000000000000000000000000000000000000000000612816565b905085611c4b5780955060019450611c9d565b858114611c965760008681526002602090815260408083206001600160a01b038f16845282528083208054890190559782526003905295909520805490940190935560019284611c9d565b8460010194505b50611cf0565b6040805162461bcd60e51b815260206004820152601960248201527f496e76656e746f72793a206e6f74206120746f6b656e20696400000000000000604482015290519081900360640190fd5b5050600101611b7b565b508115611d3a5760008281526002602090815260408083206001600160a01b038b1684528252808320805485019055848352600390915290208054820190555b6001600160a01b0387166000611d4e611a4c565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8989604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611dbe578181015183820152602001611da6565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611dfd578181015183820152602001611de5565b5050505090500194505050505060405180910390a4611e24876001600160a01b0316612fe7565b15611e3757611e37600088888888612fed565b50505050505050565b60606006611e4d836131f3565b6040516020018083805460018160011615610100020316600290048015611eab5780601f10611e89576101008083540402835291820191611eab565b820191906000526020600020905b815481529060010190602001808311611e97575b5050825160208401908083835b60208310611ed75780518252601f199092019160209182019101611eb8565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b60005460ff16156110c7576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6000611f75611a4c565b9050611f818482613302565b611fd2576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b611fdb836127ac565b15611ff057611feb84848461334e565b61202c565b61201a837f00000000000000000000000000000000000000000000000000000000000000006119cb565b15611ca357611feb8484846000613457565b60006001600160a01b0316846001600160a01b0316826001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a450505050565b6110a885858585856135c1565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156120d657600080fd5b505afa1580156120ea573d6000803e3d6000fd5b505050506040513d602081101561210057600080fd5b50516001600160a01b03828116911614611523576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b6121696138ff565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61219c611a4c565b604080516001600160a01b039092168252519081900360200190a1565b60006121e5827f00000000000000000000000000000000000000000000000000000000000000006119cb565b15612237576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b506000908152600560205260409020546001600160a01b031690565b6001600160a01b0384166122ae576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b6122b7836127ac565b156122cc576122c7848484612db2565b612308565b6122f6837f00000000000000000000000000000000000000000000000000000000000000006119cb565b15611ca3576122c78484846000612ea4565b6001600160a01b038416600061231c611a4c565b6001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a4612376846001600160a01b0316612fe7565b1561106a5761106a600085858585613956565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261108e908490613a58565b815181518114612460576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b600061246a611a4c565b90506124768582613302565b6124c7576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b60008060005b8481146125fd5760008782815181106124e257fe5b6020026020010151905060008783815181106124fa57fe5b6020026020010151905061250d826127ac565b156125225761251d8a838361334e565b6125f3565b61254c827f00000000000000000000000000000000000000000000000000000000000000006119cb565b15611ca35761255e8a83836001613457565b600061258a837f0000000000000000000000000000000000000000000000000000000000000000612816565b90508561259d57809550600194506125f1565b8581146125ea5760008681526002602090815260408083206001600160a01b038f1684528252808320805489900390559782526003905295909520805494909403909355600192846125f1565b8460010194505b505b50506001016124cd565b50811561263f5760008281526002602090815260408083206001600160a01b038b16845282528083208054859003905584835260039091529020805482900390555b60006001600160a01b0316876001600160a01b0316846001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8989604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156126c55781810151838201526020016126ad565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156127045781810151838201526020016126ec565b5050505090500194505050505060405180910390a450505050505050565b61272a611f13565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861219c611a4c565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b7f8000000000000000000000000000000000000000000000000000000000000000161590565b60606127dc613c3b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b600061282182612b40565b198316905092915050565b612856817f00000000000000000000000000000000000000000000000000000000000000006119cb565b156128a8576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b031615612912576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206578697374696e6720636f6c6c656374696f6e0000604482015290519081900360640190fd5b61291a611a4c565b600082815260056020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055612967816127ac565b1515817f4ebf8ad0df535ba5e487bc9cb27fe44120ca81c3a95d3eba79c0bd1df2ab2d5d60405160405180910390a350565b60006129a3611a4c565b90506001600160a01b038516612a00576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b612a0a8682613302565b612a5b576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b612a64846127ac565b15612a7a57612a7586868686613d9e565b612ab7565b612aa4847f00000000000000000000000000000000000000000000000000000000000000006119cb565b15611ca357612a75868686866000613ebc565b846001600160a01b0316866001600160a01b0316826001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a4612b26856001600160a01b0316612fe7565b15612b3857612b388686868686613956565b505050505050565b6001610100919091031b6000190190565b60006001600160e01b031982167f01ffc9a7000000000000000000000000000000000000000000000000000000001480612bb457506001600160e01b031982167fd9b67a2600000000000000000000000000000000000000000000000000000000145b80612be857506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b80612c1c57506001600160e01b031982167f09ce5c4600000000000000000000000000000000000000000000000000000000145b806110465750506001600160e01b0319167fbd85b039000000000000000000000000000000000000000000000000000000001490565b60003381612c5e61400b565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480612cd157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15612cdf57915061150c9050565b6001600160a01b0382163214801590612d9e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015612d7157600080fd5b505afa158015612d85573d6000803e3d6000fd5b505050506040513d6020811015612d9b57600080fd5b50515b15612dac57915061150c9050565b50905090565b80612e04576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b600082815260036020526040902054818101818111612e6a576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a20737570706c79206f766572666c6f77000000000000604482015290519081900360640190fd5b600093845260036020908152604080862092909255600281528185206001600160a01b039096168552949094525091902080549091019055565b81600114612ef9576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b60008381526004602052604090205415612f5a576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206578697374696e672f6275726e74204e4654000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b03851690558061106a576000612fa5847f0000000000000000000000000000000000000000000000000000000000000000612816565b600090815260036020908152604080832080546001908101909155600283528184206001600160a01b038a168552909252909120805490910190555050505050565b3b151590565b7fbc197c81000000000000000000000000000000000000000000000000000000006001600160a01b03851663bc197c81613025611a4c565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561309e578181015183820152602001613086565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156130dd5781810151838201526020016130c5565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015613119578181015183820152602001613101565b50505050905090810190601f1680156131465780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b505050506040513d602081101561319557600080fd5b50516001600160e01b031916146110a8576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b606081613234575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152611049565b8160005b811561324c57600101600a82049150613238565b60008167ffffffffffffffff8111801561326557600080fd5b506040519080825280601f01601f191660200182016040528015613290576020820181803683370190505b50859350905060001982015b83156132f957600a840660300160f81b828280600190039350815181106132bf57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8404935061329c565b50949350505050565b6000816001600160a01b0316836001600160a01b03161480611a075750506001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b806133a0576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b60008281526002602090815260408083206001600160a01b038716845290915290205481811015613418576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b03909716835295815285822092849003909255928352600390529190208054919091039055565b816001146134ac576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000838152600460205260409020546001600160a01b0385811691161461351a576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a206e6f6e2d6f776e6564204e46540000000000000000604482015290519081900360640190fd5b60008381526004602052604090207fdead00000000000000000000000000000000000000000000000000000000000090558061106a57600061357c847f0000000000000000000000000000000000000000000000000000000000000000612816565b60008181526002602090815260408083206001600160a01b038a1684528252808320805460001990810190915593835260039091529020805490910190555050505050565b6001600160a01b03841661361c576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b825182518114613673576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b600061367d611a4c565b90506136898782613302565b6136da576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b60008060005b8481146137e45760008882815181106136f557fe5b60200260200101519050600088838151811061370d57fe5b60200260200101519050613720826127ac565b15613736576137318c8c8484613d9e565b6137da565b613760827f00000000000000000000000000000000000000000000000000000000000000006119cb565b15611ca3576137738c8c84846001613ebc565b600061379f837f0000000000000000000000000000000000000000000000000000000000000000612816565b9050856137b257809550600194506137d8565b8581146137d1576137c58d8d8888614017565b809550600194506137d8565b8460010194505b505b50506001016136e0565b5081156137f7576137f789898484614017565b876001600160a01b0316896001600160a01b0316846001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a8a604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561387c578181015183820152602001613864565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156138bb5781810151838201526020016138a3565b5050505090500194505050505060405180910390a46138e2886001600160a01b0316612fe7565b156138f4576138f48989898989612fed565b505050505050505050565b60005460ff166110c7576040805162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b7ff23a6e61000000000000000000000000000000000000000000000000000000006001600160a01b03851663f23a6e6161398e611a4c565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613a085781810151838201526020016139f0565b50505050905090810190601f168015613a355780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561316b57600080fd5b81613a6b6001600160a01b038216612fe7565b613abc576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b60208310613af95780518252601f199092019160209182019101613ada565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613b5b576040519150601f19603f3d011682016040523d82523d6000602084013e613b60565b606091505b50915091508115613bdf57805115613bda57808060200190516020811015613b8757600080fd5b5051613bda576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b6110a8565b8051613c32576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016811480613ca757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b15613cbe57613cb461406b565b9250925050613d9a565b6001600160a01b0381163214801590613d8457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6613d0961400b565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015613d5757600080fd5b505afa158015613d6b573d6000803e3d6000fd5b505050506040513d6020811015613d8157600080fd5b50515b15613d9157613cb461406b565b60003692509250505b9091565b80613df0576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b60008281526002602090815260408083206001600160a01b038816845290915290205481811015613e68576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b0316146110a85760009283526002602090815260408085206001600160a01b039788168652909152808420918390039091559290931681522080549091019055565b81600114613f11576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000838152600460205260409020546001600160a01b03868116911614613f7f576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a206e6f6e2d6f776e6564204e46540000000000000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b0385169055806110a8576000613fca847f0000000000000000000000000000000000000000000000000000000000000000612816565b60009081526002602090815260408083206001600160a01b03998a168452909152808220805460001901905595909616865250505091208054600101905550565b60131936013560601c90565b826001600160a01b0316846001600160a01b03161461106a5760009182526002602090815260408084206001600160a01b039687168552909152808320805483900390559290931681522080549091019055565b36600061407e6013198301828481614127565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826140bc5760008555614102565b82601f106140d55782800160ff19823516178555614102565b82800160010185558215614102579182015b828111156141025782358255916020019190600101906140e7565b5061410e929150614112565b5090565b5b8082111561410e5760008155600101614113565b60008085851115614136578182fd5b83861115614142578182fd5b505082019391909203915056fea2646970667358221220504af697ca658b128dc7816a8677520d4e7b9262d3324eae43be48f9523a1f5964736f6c63430007060033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x43B5 CODESIZE SUB DUP1 PUSH3 0x43B5 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP3 DUP4 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND CALLER PUSH2 0x100 DUP2 MUL SWAP2 SWAP1 SWAP2 OR DUP3 SSTORE SWAP5 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 DUP6 SWAP3 DUP6 SWAP3 DUP6 SWAP3 SWAP2 DUP4 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP9 SWAP2 DUP9 SWAP2 DUP8 SWAP2 DUP3 SWAP2 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0x80 MSTORE DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH3 0xCE JUMPI POP PUSH2 0x100 DUP2 LT JUMPDEST PUSH3 0x120 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67206D61736B206C656E67746800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xC0 MSTORE POP PUSH3 0x131 SWAP1 POP DUP2 PUSH3 0x13E JUMP JUMPDEST POP POP POP POP POP POP POP PUSH3 0x18A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH2 0x4185 PUSH3 0x230 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xF7F MSTORE DUP1 PUSH2 0x168D MSTORE DUP1 PUSH2 0x185B MSTORE DUP1 PUSH2 0x18D6 MSTORE DUP1 PUSH2 0x1BD6 MSTORE DUP1 PUSH2 0x1C14 MSTORE DUP1 PUSH2 0x1FF6 MSTORE DUP1 PUSH2 0x21C1 MSTORE DUP1 PUSH2 0x22D2 MSTORE DUP1 PUSH2 0x2528 MSTORE DUP1 PUSH2 0x2566 MSTORE DUP1 PUSH2 0x2832 MSTORE DUP1 PUSH2 0x2A80 MSTORE DUP1 PUSH2 0x2F81 MSTORE DUP1 PUSH2 0x3558 MSTORE DUP1 PUSH2 0x373C MSTORE DUP1 PUSH2 0x377B MSTORE DUP1 PUSH2 0x3FA6 MSTORE POP DUP1 PUSH2 0x11DE MSTORE DUP1 PUSH2 0x2C9D MSTORE DUP1 PUSH2 0x3C73 MSTORE POP DUP1 PUSH2 0x1219 MSTORE DUP1 PUSH2 0x2C62 MSTORE DUP1 PUSH2 0x2CF5 MSTORE DUP1 PUSH2 0x3C49 MSTORE DUP1 PUSH2 0x3CD4 MSTORE POP PUSH2 0x4185 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 0x1EF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80534934 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xBD85B039 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD0011D9D GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD0011D9D EQ PUSH2 0xDE0 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0xDFD JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0xE2B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xEF6 JUMPI PUSH2 0x1EF JUMP JUMPDEST DUP1 PUSH4 0xBD85B039 EQ PUSH2 0xC8A JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xCA7 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0xDBB JUMPI DUP1 PUSH4 0xC7778BAA EQ PUSH2 0xDC3 JUMPI PUSH2 0x1EF JUMP JUMPDEST DUP1 PUSH4 0x98650275 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0xC11 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0xC19 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xC47 JUMPI DUP1 PUSH4 0xADEBF6F2 EQ PUSH2 0xC6D JUMPI PUSH2 0x1EF JUMP JUMPDEST DUP1 PUSH4 0x80534934 EQ PUSH2 0xAA4 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0xBDB JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xBE3 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0xBEB JUMPI PUSH2 0x1EF JUMP JUMPDEST DUP1 PUSH4 0x510B5158 GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x5CFA9297 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x5CFA9297 EQ PUSH2 0x841 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x903 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x920 JUMPI DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0xA34 JUMPI PUSH2 0x1EF JUMP JUMPDEST DUP1 PUSH4 0x510B5158 EQ PUSH2 0x7D2 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x80B JUMPI DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x831 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x839 JUMPI PUSH2 0x1EF JUMP JUMPDEST DUP1 PUSH4 0x124D91E5 GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x124D91E5 EQ PUSH2 0x4BF JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x4F1 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x6B8 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x6C0 JUMPI PUSH2 0x1EF JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xD6A5BBB EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x42D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF1C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x1008 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x332 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x104E SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x44A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1070 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x484 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x46C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4B1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x107B JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x53B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x56F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x643 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x655 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1093 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x42B PUSH2 0x10AF JUMP JUMPDEST PUSH2 0x782 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x703 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x725 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x755 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x777 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x10C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7BE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7A6 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7EF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11DA JUMP JUMPDEST PUSH2 0x44A PUSH2 0x1253 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x12E1 JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x857 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x88E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x8C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x12EA SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x7EF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x919 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1301 JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x963 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x136B JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1458 JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xABA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xAE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x14D4 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x42B PUSH2 0x14E7 JUMP JUMPDEST PUSH2 0x7EF PUSH2 0x14FA JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x150F JUMP JUMPDEST PUSH2 0x42B PUSH2 0x1526 JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1584 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1665 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x167A JUMP JUMPDEST PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1685 JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xCBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xDB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x16FC JUMP JUMPDEST PUSH2 0x44A PUSH2 0x1844 JUMP JUMPDEST PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1853 JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x18FA JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x190E JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xE41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xE81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xEB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x193C SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1951 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xF79 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2061646472657373000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xFA3 DUP3 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0xFDD JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0xFD0 JUMPI PUSH1 0x0 PUSH2 0xFD3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1002 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x510B515800000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x1046 JUMPI POP PUSH2 0x1046 DUP3 PUSH2 0x1A0E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x105E PUSH2 0x1059 PUSH2 0x1A4C JUMP JUMPDEST PUSH2 0x1A56 JUMP JUMPDEST PUSH2 0x106A DUP5 DUP5 DUP5 DUP5 PUSH2 0x1AC3 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1046 DUP3 PUSH2 0x1E40 JUMP JUMPDEST PUSH2 0x1083 PUSH2 0x1F13 JUMP JUMPDEST PUSH2 0x108E DUP4 DUP4 DUP4 PUSH2 0x1F6B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x109B PUSH2 0x1F13 JUMP JUMPDEST PUSH2 0x10A8 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2090 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x10BF PUSH2 0x10BA PUSH2 0x1A4C JUMP JUMPDEST PUSH2 0x209D JUMP JUMPDEST PUSH2 0x10C7 PUSH2 0x2161 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP4 DUP3 EQ PUSH2 0x111F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1162 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP1 DUP7 EQ PUSH2 0x11C5 JUMPI PUSH2 0x11A6 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x117E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x119A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0xF1C JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x11B2 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1168 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1046 DUP3 PUSH2 0x21B9 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1046 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x12D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x12AE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x12D9 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 0x12BC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x12F5 PUSH2 0x1059 PUSH2 0x1A4C JUMP JUMPDEST PUSH2 0x106A DUP5 DUP5 DUP5 DUP5 PUSH2 0x2253 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1046 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1376 PUSH2 0x10BA PUSH2 0x1A4C JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1385 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x13D6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x144E JUMPI PUSH2 0x1446 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x13EF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x140B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x141E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2389 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x13D9 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1463 PUSH2 0x10BA PUSH2 0x1A4C JUMP JUMPDEST PUSH2 0x146F PUSH1 0x6 DUP4 DUP4 PUSH2 0x4086 JUMP JUMPDEST POP PUSH32 0x4B1DC5C136A3CE9FDED8DB0CE3D3366C58764EC3A8E4C2B9E52E4DDFE5EBBF7 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG1 POP POP JUMP JUMPDEST PUSH2 0x14DC PUSH2 0x1F13 JUMP JUMPDEST PUSH2 0x108E DUP4 DUP4 DUP4 PUSH2 0x2409 JUMP JUMPDEST PUSH2 0x14F2 PUSH2 0x10BA PUSH2 0x1A4C JUMP JUMPDEST PUSH2 0x10C7 PUSH2 0x2722 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x151A PUSH2 0x10BA PUSH2 0x1A4C JUMP JUMPDEST PUSH2 0x1523 DUP2 PUSH2 0x2760 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1530 PUSH2 0x1A4C JUMP JUMPDEST SWAP1 POP PUSH2 0x153B DUP2 PUSH2 0x1A56 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x158E PUSH2 0x1A4C JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x15F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2073656C662D617070726F76616C0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1046 DUP3 PUSH2 0x27AC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16B1 DUP3 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x16E7 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x16DA JUMPI PUSH1 0x1 PUSH2 0x16DD JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1049 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1049 JUMP JUMPDEST PUSH2 0x1707 PUSH2 0x10BA PUSH2 0x1A4C JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1716 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1767 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x144E JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x177D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x17A8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x17C4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1835 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x176A JUMP JUMPDEST PUSH1 0x60 PUSH2 0x184E PUSH2 0x27D2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x187F DUP3 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST PUSH2 0x18D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420616E204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1046 DUP3 PUSH32 0x0 PUSH2 0x2816 JUMP JUMPDEST PUSH2 0x1905 PUSH2 0x10BA PUSH2 0x1A4C JUMP JUMPDEST PUSH2 0x1523 DUP2 PUSH2 0x282C 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1944 PUSH2 0x1F13 JUMP JUMPDEST PUSH2 0x10A8 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2999 JUMP JUMPDEST PUSH2 0x195C PUSH2 0x10BA PUSH2 0x1A4C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND DUP3 DUP2 MUL SWAP4 SWAP1 SWAP4 OR DUP1 DUP6 SSTORE PUSH1 0x40 MLOAD SWAP4 SWAP5 SWAP3 SWAP1 DIV AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1A07 JUMPI POP PUSH2 0x1A02 DUP3 PUSH2 0x2B40 JUMP JUMPDEST DUP4 AND ISZERO ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x921ED8D100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x1046 JUMPI POP PUSH2 0x1046 DUP3 PUSH2 0x2B51 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x184E PUSH2 0x2C52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1523 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1B1E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x1B75 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 EQ PUSH2 0x1CFA JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B90 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1BA8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1BBB DUP3 PUSH2 0x27AC JUMP JUMPDEST ISZERO PUSH2 0x1BD0 JUMPI PUSH2 0x1BCB DUP11 DUP4 DUP4 PUSH2 0x2DB2 JUMP JUMPDEST PUSH2 0x1CF0 JUMP JUMPDEST PUSH2 0x1BFA DUP3 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x1CA3 JUMPI PUSH2 0x1C0C DUP11 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2EA4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C38 DUP4 PUSH32 0x0 PUSH2 0x2816 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x1C4B JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x1C9D JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x1C96 JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP10 ADD SWAP1 SSTORE SWAP8 DUP3 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP6 SWAP1 SWAP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP5 ADD SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP3 DUP5 PUSH2 0x1C9D JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP PUSH2 0x1CF0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120746F6B656E20696400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1B7B JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x1D3A JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 PUSH2 0x1D4E PUSH2 0x1A4C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1DBE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DA6 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1DFD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DE5 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1E24 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2FE7 JUMP JUMPDEST ISZERO PUSH2 0x1E37 JUMPI PUSH2 0x1E37 PUSH1 0x0 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2FED JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x6 PUSH2 0x1E4D DUP4 PUSH2 0x31F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1EAB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1E89 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x1EAB 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 0x1E97 JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1ED7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1EB8 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x10C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A2070617573656400000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F75 PUSH2 0x1A4C JUMP JUMPDEST SWAP1 POP PUSH2 0x1F81 DUP5 DUP3 PUSH2 0x3302 JUMP JUMPDEST PUSH2 0x1FD2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1FDB DUP4 PUSH2 0x27AC JUMP JUMPDEST ISZERO PUSH2 0x1FF0 JUMPI PUSH2 0x1FEB DUP5 DUP5 DUP5 PUSH2 0x334E JUMP JUMPDEST PUSH2 0x202C JUMP JUMPDEST PUSH2 0x201A DUP4 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x1CA3 JUMPI PUSH2 0x1FEB DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x3457 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x10A8 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x35C1 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1523 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2169 PUSH2 0x38FF JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH2 0x219C PUSH2 0x1A4C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21E5 DUP3 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x2237 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x22AE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x22B7 DUP4 PUSH2 0x27AC JUMP JUMPDEST ISZERO PUSH2 0x22CC JUMPI PUSH2 0x22C7 DUP5 DUP5 DUP5 PUSH2 0x2DB2 JUMP JUMPDEST PUSH2 0x2308 JUMP JUMPDEST PUSH2 0x22F6 DUP4 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x1CA3 JUMPI PUSH2 0x22C7 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x2EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 PUSH2 0x231C PUSH2 0x1A4C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2376 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2FE7 JUMP JUMPDEST ISZERO PUSH2 0x106A JUMPI PUSH2 0x106A PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 PUSH2 0x3956 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x108E SWAP1 DUP5 SWAP1 PUSH2 0x3A58 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x2460 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x246A PUSH2 0x1A4C JUMP JUMPDEST SWAP1 POP PUSH2 0x2476 DUP6 DUP3 PUSH2 0x3302 JUMP JUMPDEST PUSH2 0x24C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x25FD JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x24E2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x24FA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x250D DUP3 PUSH2 0x27AC JUMP JUMPDEST ISZERO PUSH2 0x2522 JUMPI PUSH2 0x251D DUP11 DUP4 DUP4 PUSH2 0x334E JUMP JUMPDEST PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x254C DUP3 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x1CA3 JUMPI PUSH2 0x255E DUP11 DUP4 DUP4 PUSH1 0x1 PUSH2 0x3457 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x258A DUP4 PUSH32 0x0 PUSH2 0x2816 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x259D JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x25F1 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x25EA JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP10 SWAP1 SUB SWAP1 SSTORE SWAP8 DUP3 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP6 SWAP1 SWAP6 KECCAK256 DUP1 SLOAD SWAP5 SWAP1 SWAP5 SUB SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP3 DUP5 PUSH2 0x25F1 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x24CD JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x263F JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x26C5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26AD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2704 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26EC JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x272A PUSH2 0x1F13 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x219C PUSH2 0x1A4C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x27DC PUSH2 0x3C3B JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2821 DUP3 PUSH2 0x2B40 JUMP JUMPDEST NOT DUP4 AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2856 DUP2 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x28A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2912 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E6720636F6C6C656374696F6E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x291A PUSH2 0x1A4C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x2967 DUP2 PUSH2 0x27AC JUMP JUMPDEST ISZERO ISZERO DUP2 PUSH32 0x4EBF8AD0DF535BA5E487BC9CB27FE44120CA81C3A95D3EBA79C0BD1DF2AB2D5D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29A3 PUSH2 0x1A4C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x2A00 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2A0A DUP7 DUP3 PUSH2 0x3302 JUMP JUMPDEST PUSH2 0x2A5B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2A64 DUP5 PUSH2 0x27AC JUMP JUMPDEST ISZERO PUSH2 0x2A7A JUMPI PUSH2 0x2A75 DUP7 DUP7 DUP7 DUP7 PUSH2 0x3D9E JUMP JUMPDEST PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x2AA4 DUP5 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x1CA3 JUMPI PUSH2 0x2A75 DUP7 DUP7 DUP7 DUP7 PUSH1 0x0 PUSH2 0x3EBC JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2B26 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2FE7 JUMP JUMPDEST ISZERO PUSH2 0x2B38 JUMPI PUSH2 0x2B38 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x3956 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x100 SWAP2 SWAP1 SWAP2 SUB SHL PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2BB4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x2BE8 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x2C1C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9CE5C4600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1046 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xBD85B03900000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x2C5E PUSH2 0x400B JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2CD1 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x2CDF JUMPI SWAP2 POP PUSH2 0x150C SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x2D9E JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x2DAC JUMPI SWAP2 POP PUSH2 0x150C SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x2E04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x2E6A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20737570706C79206F766572666C6F77000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP2 MSTORE DUP2 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP6 MSTORE SWAP5 SWAP1 SWAP5 MSTORE POP SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x2EF9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2F5A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E672F6275726E74204E4654000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 SSTORE DUP1 PUSH2 0x106A JUMPI PUSH1 0x0 PUSH2 0x2FA5 DUP5 PUSH32 0x0 PUSH2 0x2816 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xBC197C81 PUSH2 0x3025 PUSH2 0x1A4C JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x309E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3086 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x30DD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x30C5 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3119 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3101 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3146 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x316B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x317F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x10A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220726566757365640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x3234 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1049 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x324C JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x3238 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x3290 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x32F9 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x32BF JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x329C JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1A07 JUMPI POP POP 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x33A0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x3418 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420656E6F7567682062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP8 AND DUP4 MSTORE SWAP6 DUP2 MSTORE DUP6 DUP3 KECCAK256 SWAP3 DUP5 SWAP1 SUB SWAP1 SWAP3 SSTORE SWAP3 DUP4 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x34AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 AND EQ PUSH2 0x351A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6F776E6564204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH32 0xDEAD000000000000000000000000000000000000000000000000000000000000 SWAP1 SSTORE DUP1 PUSH2 0x106A JUMPI PUSH1 0x0 PUSH2 0x357C DUP5 PUSH32 0x0 PUSH2 0x2816 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE SWAP4 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x361C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x3673 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x367D PUSH2 0x1A4C JUMP JUMPDEST SWAP1 POP PUSH2 0x3689 DUP8 DUP3 PUSH2 0x3302 JUMP JUMPDEST PUSH2 0x36DA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x37E4 JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x36F5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x370D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3720 DUP3 PUSH2 0x27AC JUMP JUMPDEST ISZERO PUSH2 0x3736 JUMPI PUSH2 0x3731 DUP13 DUP13 DUP5 DUP5 PUSH2 0x3D9E JUMP JUMPDEST PUSH2 0x37DA JUMP JUMPDEST PUSH2 0x3760 DUP3 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x1CA3 JUMPI PUSH2 0x3773 DUP13 DUP13 DUP5 DUP5 PUSH1 0x1 PUSH2 0x3EBC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x379F DUP4 PUSH32 0x0 PUSH2 0x2816 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x37B2 JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x37D8 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x37D1 JUMPI PUSH2 0x37C5 DUP14 DUP14 DUP9 DUP9 PUSH2 0x4017 JUMP JUMPDEST DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x37D8 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x36E0 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x37F7 JUMPI PUSH2 0x37F7 DUP10 DUP10 DUP5 DUP5 PUSH2 0x4017 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP11 DUP11 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x387C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3864 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x38BB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x38A3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x38E2 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2FE7 JUMP JUMPDEST ISZERO PUSH2 0x38F4 JUMPI PUSH2 0x38F4 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x2FED JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x10C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A206E6F7420706175736564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xF23A6E61 PUSH2 0x398E PUSH2 0x1A4C JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3A08 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x39F0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3A35 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x316B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x3A6B PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2FE7 JUMP JUMPDEST PUSH2 0x3ABC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3AF9 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3ADA JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3B5B 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 0x3B60 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x3BDF JUMPI DUP1 MLOAD ISZERO PUSH2 0x3BDA JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3BDA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x10A8 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x3C32 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x3CA7 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x3CBE JUMPI PUSH2 0x3CB4 PUSH2 0x406B JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x3D9A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x3D84 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x3D09 PUSH2 0x400B JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3D6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x3D91 JUMPI PUSH2 0x3CB4 PUSH2 0x406B JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST DUP1 PUSH2 0x3DF0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x3E68 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420656E6F7567682062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x10A8 JUMPI PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP7 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP5 KECCAK256 SWAP2 DUP4 SWAP1 SUB SWAP1 SWAP2 SSTORE SWAP3 SWAP1 SWAP4 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x3F11 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ PUSH2 0x3F7F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6F776E6564204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 SSTORE DUP1 PUSH2 0x10A8 JUMPI PUSH1 0x0 PUSH2 0x3FCA DUP5 PUSH32 0x0 PUSH2 0x2816 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP6 SWAP1 SWAP7 AND DUP7 MSTORE POP POP POP SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x106A JUMPI PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE SWAP3 SWAP1 SWAP4 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x407E PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x4127 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x40BC JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x4102 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x40D5 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x4102 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x4102 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x4102 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x40E7 JUMP JUMPDEST POP PUSH2 0x410E SWAP3 SWAP2 POP PUSH2 0x4112 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x410E JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4113 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x4136 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x4142 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP 0x4A 0xF6 SWAP8 0xCA PUSH6 0x8B128DC7816A DUP7 PUSH24 0x520D4E7B9262D3324EAE43BE48F9523A1F5964736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "895:2909:28:-:0;;;981:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;981:246:28;;;;;;;;;;;1218:5;543:16:4;;-1:-1:-1;;;;;;960:15:2;1624:10:26;543:16:4;960:15:2;;;;;;;;990:40;;981:246:28;;;;;;;;;;;;1624:10:26;981:246:28;;;;;;;;;;1624:10:26;;;;1218:5:28;990:40:2;;1218:5:28;;990:40:2;-1:-1:-1;;;;;;;443:40:85;;;;;;;;493:38;;;;;;2448:25:13;;;;;:55;;;2500:3;2477:20;:26;2448:55;2440:96;;;;;-1:-1:-1;;;2440:96:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;2546:44;;-1:-1:-1;476:18:1::1;::::0;-1:-1:-1;487:6:1;476:10:::1;:18::i;:::-;422:79:::0;1364:274:26;;;981:246:28;;;895:2909;;1252:122:1;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;895:2909:28:-;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:379:86",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:86",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "144:233:86",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "182:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "191:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "202:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "184:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "184:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "184:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "160:10:86"
                                  },
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "172:8:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "157:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "157:24:86"
                              },
                              "nodeType": "YulIf",
                              "src": "154:2:86"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "247:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "256:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "267:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "249:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "249:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "229:8:86"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "239:6:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "226:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "226:20:86"
                              },
                              "nodeType": "YulIf",
                              "src": "223:2:86"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "288:36:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "305:6:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "313:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "301:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "301:23:86"
                              },
                              "variableNames": [
                                {
                                  "name": "offsetOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "288:9:86"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "333:38:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "350:8:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "360:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "346:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "346:25:86"
                              },
                              "variableNames": [
                                {
                                  "name": "lengthOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:9:86"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "78:6:86",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "86:6:86",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "94:10:86",
                            "type": ""
                          },
                          {
                            "name": "endIndex",
                            "nodeType": "YulTypedName",
                            "src": "106:8:86",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "offsetOut",
                            "nodeType": "YulTypedName",
                            "src": "119:9:86",
                            "type": ""
                          },
                          {
                            "name": "lengthOut",
                            "nodeType": "YulTypedName",
                            "src": "130:9:86",
                            "type": ""
                          }
                        ],
                        "src": "14:363:86"
                      }
                    ]
                  },
                  "contents": "{\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(offsetOut, offsetOut) }\n        if gt(endIndex, length) { revert(offsetOut, offsetOut) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n}",
                  "id": 86,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "2354": [
                  {
                    "length": 32,
                    "start": 3967
                  },
                  {
                    "length": 32,
                    "start": 5773
                  },
                  {
                    "length": 32,
                    "start": 6235
                  },
                  {
                    "length": 32,
                    "start": 6358
                  },
                  {
                    "length": 32,
                    "start": 7126
                  },
                  {
                    "length": 32,
                    "start": 7188
                  },
                  {
                    "length": 32,
                    "start": 8182
                  },
                  {
                    "length": 32,
                    "start": 8641
                  },
                  {
                    "length": 32,
                    "start": 8914
                  },
                  {
                    "length": 32,
                    "start": 9512
                  },
                  {
                    "length": 32,
                    "start": 9574
                  },
                  {
                    "length": 32,
                    "start": 10290
                  },
                  {
                    "length": 32,
                    "start": 10880
                  },
                  {
                    "length": 32,
                    "start": 12161
                  },
                  {
                    "length": 32,
                    "start": 13656
                  },
                  {
                    "length": 32,
                    "start": 14140
                  },
                  {
                    "length": 32,
                    "start": 14203
                  },
                  {
                    "length": 32,
                    "start": 16294
                  }
                ],
                "15042": [
                  {
                    "length": 32,
                    "start": 4633
                  },
                  {
                    "length": 32,
                    "start": 11362
                  },
                  {
                    "length": 32,
                    "start": 11509
                  },
                  {
                    "length": 32,
                    "start": 15433
                  },
                  {
                    "length": 32,
                    "start": 15572
                  }
                ],
                "15044": [
                  {
                    "length": 32,
                    "start": 4574
                  },
                  {
                    "length": 32,
                    "start": 11421
                  },
                  {
                    "length": 32,
                    "start": 15475
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101ef5760003560e01c8063805349341161010f578063bd85b039116100a2578063d0011d9d11610071578063d0011d9d14610de0578063e985e9c514610dfd578063f242432a14610e2b578063f2fde38b14610ef6576101ef565b8063bd85b03914610c8a578063c3666c3614610ca7578063c4c2bfdc14610dbb578063c7778baa14610dc3576101ef565b806398650275116100de5780639865027514610c11578063a22cb46514610c19578063aa271e1a14610c47578063adebf6f214610c6d576101ef565b80638053493414610aa45780638456cb5914610bdb5780638da5cb5b14610be3578063983b2d5614610beb576101ef565b8063510b5158116101875780635cfa9297116101565780635cfa9297146108415780636352211e1461090357806373c8a958146109205780637e518ec814610a34576101ef565b8063510b5158146107d2578063572b6c051461080b5780635b2bd79e146108315780635c975abb14610839576101ef565b8063124d91e5116101c3578063124d91e5146104bf5780632eb2c2d6146104f15780633f4ba83a146106b85780634e1273f4146106c0576101ef565b8062fdd58e146101f457806301ffc9a7146102325780630d6a5bbb1461026d5780630e89341c1461042d575b600080fd5b6102206004803603604081101561020a57600080fd5b506001600160a01b038135169060200135610f1c565b60408051918252519081900360200190f35b6102596004803603602081101561024857600080fd5b50356001600160e01b031916611008565b604080519115158252519081900360200190f35b61042b6004803603608081101561028357600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156102ae57600080fd5b8201836020820111156102c057600080fd5b803590602001918460208302840111640100000000831117156102e257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561033257600080fd5b82018360208201111561034457600080fd5b8035906020019184602083028401116401000000008311171561036657600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156103b657600080fd5b8201836020820111156103c857600080fd5b803590602001918460018302840111640100000000831117156103ea57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061104e945050505050565b005b61044a6004803603602081101561044357600080fd5b5035611070565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561048457818101518382015260200161046c565b50505050905090810190601f1680156104b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61042b600480360360608110156104d557600080fd5b506001600160a01b03813516906020810135906040013561107b565b61042b600480360360a081101561050757600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561053b57600080fd5b82018360208201111561054d57600080fd5b8035906020019184602083028401116401000000008311171561056f57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156105bf57600080fd5b8201836020820111156105d157600080fd5b803590602001918460208302840111640100000000831117156105f357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561064357600080fd5b82018360208201111561065557600080fd5b8035906020019184600183028401116401000000008311171561067757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611093945050505050565b61042b6110af565b610782600480360360408110156106d657600080fd5b8101906020810181356401000000008111156106f157600080fd5b82018360208201111561070357600080fd5b8035906020019184602083028401116401000000008311171561072557600080fd5b91939092909160208101903564010000000081111561074357600080fd5b82018360208201111561075557600080fd5b8035906020019184602083028401116401000000008311171561077757600080fd5b5090925090506110c9565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156107be5781810151838201526020016107a6565b505050509050019250505060405180910390f35b6107ef600480360360208110156107e857600080fd5b50356111cf565b604080516001600160a01b039092168252519081900360200190f35b6102596004803603602081101561082157600080fd5b50356001600160a01b03166111da565b61044a611253565b6102596112e1565b61042b6004803603608081101561085757600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561088e57600080fd5b8201836020820111156108a057600080fd5b803590602001918460018302840111640100000000831117156108c257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506112ea945050505050565b6107ef6004803603602081101561091957600080fd5b5035611301565b61042b6004803603606081101561093657600080fd5b81019060208101813564010000000081111561095157600080fd5b82018360208201111561096357600080fd5b8035906020019184602083028401116401000000008311171561098557600080fd5b9193909290916020810190356401000000008111156109a357600080fd5b8201836020820111156109b557600080fd5b803590602001918460208302840111640100000000831117156109d757600080fd5b9193909290916020810190356401000000008111156109f557600080fd5b820183602082011115610a0757600080fd5b80359060200191846020830284011164010000000083111715610a2957600080fd5b50909250905061136b565b61042b60048036036020811015610a4a57600080fd5b810190602081018135640100000000811115610a6557600080fd5b820183602082011115610a7757600080fd5b80359060200191846001830284011164010000000083111715610a9957600080fd5b509092509050611458565b61042b60048036036060811015610aba57600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115610ae557600080fd5b820183602082011115610af757600080fd5b80359060200191846020830284011164010000000083111715610b1957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050640100000000811115610b6957600080fd5b820183602082011115610b7b57600080fd5b80359060200191846020830284011164010000000083111715610b9d57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506114d4945050505050565b61042b6114e7565b6107ef6114fa565b61042b60048036036020811015610c0157600080fd5b50356001600160a01b031661150f565b61042b611526565b61042b60048036036040811015610c2f57600080fd5b506001600160a01b0381351690602001351515611584565b61025960048036036020811015610c5d57600080fd5b50356001600160a01b0316611665565b61025960048036036020811015610c8357600080fd5b503561167a565b61022060048036036020811015610ca057600080fd5b5035611685565b61042b60048036036060811015610cbd57600080fd5b810190602081018135640100000000811115610cd857600080fd5b820183602082011115610cea57600080fd5b80359060200191846020830284011164010000000083111715610d0c57600080fd5b919390929091602081019035640100000000811115610d2a57600080fd5b820183602082011115610d3c57600080fd5b80359060200191846020830284011164010000000083111715610d5e57600080fd5b919390929091602081019035640100000000811115610d7c57600080fd5b820183602082011115610d8e57600080fd5b80359060200191846020830284011164010000000083111715610db057600080fd5b5090925090506116fc565b61044a611844565b61022060048036036020811015610dd957600080fd5b5035611853565b61042b60048036036020811015610df657600080fd5b50356118fa565b61025960048036036040811015610e1357600080fd5b506001600160a01b038135811691602001351661190e565b61042b600480360360a0811015610e4157600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135640100000000811115610e8157600080fd5b820183602082011115610e9357600080fd5b80359060200191846001830284011164010000000083111715610eb557600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061193c945050505050565b61042b60048036036020811015610f0c57600080fd5b50356001600160a01b0316611951565b60006001600160a01b038316610f79576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b610fa3827f00000000000000000000000000000000000000000000000000000000000000006119cb565b15610fdd576000828152600460205260409020546001600160a01b03848116911614610fd0576000610fd3565b60015b60ff169050611002565b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b031982167f510b5158000000000000000000000000000000000000000000000000000000001480611046575061104682611a0e565b90505b919050565b61105e611059611a4c565b611a56565b61106a84848484611ac3565b50505050565b606061104682611e40565b611083611f13565b61108e838383611f6b565b505050565b61109b611f13565b6110a88585858585612090565b5050505050565b6110bf6110ba611a4c565b61209d565b6110c7612161565b565b606083821461111f576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60008467ffffffffffffffff8111801561113857600080fd5b50604051908082528060200260200182016040528015611162578160200160208202803683370190505b50905060005b8086146111c5576111a687878381811061117e57fe5b905060200201356001600160a01b031686868481811061119a57fe5b90506020020135610f1c565b8282815181106111b257fe5b6020908102919091010152600101611168565b5095945050505050565b6000611046826121b9565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061104657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156112d95780601f106112ae576101008083540402835291602001916112d9565b820191906000526020600020905b8154815290600101906020018083116112bc57829003601f168201915b505050505081565b60005460ff1681565b6112f5611059611a4c565b61106a84848484612253565b6000818152600460205260408120546001600160a01b038116611046576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b6113766110ba611a4c565b84838114801561138557508082145b6113d6576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461144e576114468888838181106113ef57fe5b905060200201356001600160a01b031685858481811061140b57fe5b9050602002013588888581811061141e57fe5b905060200201356001600160a01b03166001600160a01b03166123899092919063ffffffff16565b6001016113d9565b5050505050505050565b6114636110ba611a4c565b61146f60068383614086565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b6114dc611f13565b61108e838383612409565b6114f26110ba611a4c565b6110c7612722565b60005461010090046001600160a01b03165b90565b61151a6110ba611a4c565b61152381612760565b50565b6000611530611a4c565b905061153b81611a56565b6001600160a01b038116600081815260076020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b600061158e611a4c565b9050806001600160a01b0316836001600160a01b031614156115f7576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a2073656c662d617070726f76616c0000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260016020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b60076020526000908152604090205460ff1681565b6000611046826127ac565b60006116b1827f00000000000000000000000000000000000000000000000000000000000000006119cb565b156116e7576000828152600460205260409020546001600160a01b0316156116da5760016116dd565b60005b60ff169050611049565b50600081815260036020526040902054611049565b6117076110ba611a4c565b84838114801561171657508082145b611767576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461144e5785858281811061177d57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a858181106117a857fe5b905060200201356001600160a01b03168787868181106117c457fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561182157600080fd5b505af1158015611835573d6000803e3d6000fd5b5050505080600101905061176a565b606061184e6127d2565b905090565b600061187f827f00000000000000000000000000000000000000000000000000000000000000006119cb565b6118d0576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a206e6f7420616e204e46540000000000000000000000604482015290519081900360640190fd5b611046827f0000000000000000000000000000000000000000000000000000000000000000612816565b6119056110ba611a4c565b6115238161282c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b611944611f13565b6110a88585858585612999565b61195c6110ba611a4c565b600080547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682810293909317808555604051939492900416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60007f8000000000000000000000000000000000000000000000000000000000000000831615801590611a075750611a0282612b40565b831615155b9392505050565b60006001600160e01b031982167f921ed8d1000000000000000000000000000000000000000000000000000000001480611046575061104682612b51565b600061184e612c52565b6001600160a01b03811660009081526007602052604090205460ff16611523576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416611b1e576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b825182518114611b75576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60008060005b838114611cfa576000878281518110611b9057fe5b602002602001015190506000878381518110611ba857fe5b60200260200101519050611bbb826127ac565b15611bd057611bcb8a8383612db2565b611cf0565b611bfa827f00000000000000000000000000000000000000000000000000000000000000006119cb565b15611ca357611c0c8a83836001612ea4565b6000611c38837f0000000000000000000000000000000000000000000000000000000000000000612816565b905085611c4b5780955060019450611c9d565b858114611c965760008681526002602090815260408083206001600160a01b038f16845282528083208054890190559782526003905295909520805490940190935560019284611c9d565b8460010194505b50611cf0565b6040805162461bcd60e51b815260206004820152601960248201527f496e76656e746f72793a206e6f74206120746f6b656e20696400000000000000604482015290519081900360640190fd5b5050600101611b7b565b508115611d3a5760008281526002602090815260408083206001600160a01b038b1684528252808320805485019055848352600390915290208054820190555b6001600160a01b0387166000611d4e611a4c565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8989604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611dbe578181015183820152602001611da6565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611dfd578181015183820152602001611de5565b5050505090500194505050505060405180910390a4611e24876001600160a01b0316612fe7565b15611e3757611e37600088888888612fed565b50505050505050565b60606006611e4d836131f3565b6040516020018083805460018160011615610100020316600290048015611eab5780601f10611e89576101008083540402835291820191611eab565b820191906000526020600020905b815481529060010190602001808311611e97575b5050825160208401908083835b60208310611ed75780518252601f199092019160209182019101611eb8565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b60005460ff16156110c7576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6000611f75611a4c565b9050611f818482613302565b611fd2576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b611fdb836127ac565b15611ff057611feb84848461334e565b61202c565b61201a837f00000000000000000000000000000000000000000000000000000000000000006119cb565b15611ca357611feb8484846000613457565b60006001600160a01b0316846001600160a01b0316826001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a450505050565b6110a885858585856135c1565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156120d657600080fd5b505afa1580156120ea573d6000803e3d6000fd5b505050506040513d602081101561210057600080fd5b50516001600160a01b03828116911614611523576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b6121696138ff565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61219c611a4c565b604080516001600160a01b039092168252519081900360200190a1565b60006121e5827f00000000000000000000000000000000000000000000000000000000000000006119cb565b15612237576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b506000908152600560205260409020546001600160a01b031690565b6001600160a01b0384166122ae576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b6122b7836127ac565b156122cc576122c7848484612db2565b612308565b6122f6837f00000000000000000000000000000000000000000000000000000000000000006119cb565b15611ca3576122c78484846000612ea4565b6001600160a01b038416600061231c611a4c565b6001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a4612376846001600160a01b0316612fe7565b1561106a5761106a600085858585613956565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261108e908490613a58565b815181518114612460576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b600061246a611a4c565b90506124768582613302565b6124c7576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b60008060005b8481146125fd5760008782815181106124e257fe5b6020026020010151905060008783815181106124fa57fe5b6020026020010151905061250d826127ac565b156125225761251d8a838361334e565b6125f3565b61254c827f00000000000000000000000000000000000000000000000000000000000000006119cb565b15611ca35761255e8a83836001613457565b600061258a837f0000000000000000000000000000000000000000000000000000000000000000612816565b90508561259d57809550600194506125f1565b8581146125ea5760008681526002602090815260408083206001600160a01b038f1684528252808320805489900390559782526003905295909520805494909403909355600192846125f1565b8460010194505b505b50506001016124cd565b50811561263f5760008281526002602090815260408083206001600160a01b038b16845282528083208054859003905584835260039091529020805482900390555b60006001600160a01b0316876001600160a01b0316846001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8989604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156126c55781810151838201526020016126ad565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156127045781810151838201526020016126ec565b5050505090500194505050505060405180910390a450505050505050565b61272a611f13565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861219c611a4c565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b7f8000000000000000000000000000000000000000000000000000000000000000161590565b60606127dc613c3b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b600061282182612b40565b198316905092915050565b612856817f00000000000000000000000000000000000000000000000000000000000000006119cb565b156128a8576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b031615612912576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206578697374696e6720636f6c6c656374696f6e0000604482015290519081900360640190fd5b61291a611a4c565b600082815260056020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055612967816127ac565b1515817f4ebf8ad0df535ba5e487bc9cb27fe44120ca81c3a95d3eba79c0bd1df2ab2d5d60405160405180910390a350565b60006129a3611a4c565b90506001600160a01b038516612a00576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b612a0a8682613302565b612a5b576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b612a64846127ac565b15612a7a57612a7586868686613d9e565b612ab7565b612aa4847f00000000000000000000000000000000000000000000000000000000000000006119cb565b15611ca357612a75868686866000613ebc565b846001600160a01b0316866001600160a01b0316826001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a4612b26856001600160a01b0316612fe7565b15612b3857612b388686868686613956565b505050505050565b6001610100919091031b6000190190565b60006001600160e01b031982167f01ffc9a7000000000000000000000000000000000000000000000000000000001480612bb457506001600160e01b031982167fd9b67a2600000000000000000000000000000000000000000000000000000000145b80612be857506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b80612c1c57506001600160e01b031982167f09ce5c4600000000000000000000000000000000000000000000000000000000145b806110465750506001600160e01b0319167fbd85b039000000000000000000000000000000000000000000000000000000001490565b60003381612c5e61400b565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480612cd157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15612cdf57915061150c9050565b6001600160a01b0382163214801590612d9e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015612d7157600080fd5b505afa158015612d85573d6000803e3d6000fd5b505050506040513d6020811015612d9b57600080fd5b50515b15612dac57915061150c9050565b50905090565b80612e04576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b600082815260036020526040902054818101818111612e6a576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a20737570706c79206f766572666c6f77000000000000604482015290519081900360640190fd5b600093845260036020908152604080862092909255600281528185206001600160a01b039096168552949094525091902080549091019055565b81600114612ef9576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b60008381526004602052604090205415612f5a576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206578697374696e672f6275726e74204e4654000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b03851690558061106a576000612fa5847f0000000000000000000000000000000000000000000000000000000000000000612816565b600090815260036020908152604080832080546001908101909155600283528184206001600160a01b038a168552909252909120805490910190555050505050565b3b151590565b7fbc197c81000000000000000000000000000000000000000000000000000000006001600160a01b03851663bc197c81613025611a4c565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561309e578181015183820152602001613086565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156130dd5781810151838201526020016130c5565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015613119578181015183820152602001613101565b50505050905090810190601f1680156131465780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b505050506040513d602081101561319557600080fd5b50516001600160e01b031916146110a8576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b606081613234575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152611049565b8160005b811561324c57600101600a82049150613238565b60008167ffffffffffffffff8111801561326557600080fd5b506040519080825280601f01601f191660200182016040528015613290576020820181803683370190505b50859350905060001982015b83156132f957600a840660300160f81b828280600190039350815181106132bf57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8404935061329c565b50949350505050565b6000816001600160a01b0316836001600160a01b03161480611a075750506001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b806133a0576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b60008281526002602090815260408083206001600160a01b038716845290915290205481811015613418576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b03909716835295815285822092849003909255928352600390529190208054919091039055565b816001146134ac576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000838152600460205260409020546001600160a01b0385811691161461351a576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a206e6f6e2d6f776e6564204e46540000000000000000604482015290519081900360640190fd5b60008381526004602052604090207fdead00000000000000000000000000000000000000000000000000000000000090558061106a57600061357c847f0000000000000000000000000000000000000000000000000000000000000000612816565b60008181526002602090815260408083206001600160a01b038a1684528252808320805460001990810190915593835260039091529020805490910190555050505050565b6001600160a01b03841661361c576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b825182518114613673576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b600061367d611a4c565b90506136898782613302565b6136da576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b60008060005b8481146137e45760008882815181106136f557fe5b60200260200101519050600088838151811061370d57fe5b60200260200101519050613720826127ac565b15613736576137318c8c8484613d9e565b6137da565b613760827f00000000000000000000000000000000000000000000000000000000000000006119cb565b15611ca3576137738c8c84846001613ebc565b600061379f837f0000000000000000000000000000000000000000000000000000000000000000612816565b9050856137b257809550600194506137d8565b8581146137d1576137c58d8d8888614017565b809550600194506137d8565b8460010194505b505b50506001016136e0565b5081156137f7576137f789898484614017565b876001600160a01b0316896001600160a01b0316846001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a8a604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561387c578181015183820152602001613864565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156138bb5781810151838201526020016138a3565b5050505090500194505050505060405180910390a46138e2886001600160a01b0316612fe7565b156138f4576138f48989898989612fed565b505050505050505050565b60005460ff166110c7576040805162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b7ff23a6e61000000000000000000000000000000000000000000000000000000006001600160a01b03851663f23a6e6161398e611a4c565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613a085781810151838201526020016139f0565b50505050905090810190601f168015613a355780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561316b57600080fd5b81613a6b6001600160a01b038216612fe7565b613abc576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b60208310613af95780518252601f199092019160209182019101613ada565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613b5b576040519150601f19603f3d011682016040523d82523d6000602084013e613b60565b606091505b50915091508115613bdf57805115613bda57808060200190516020811015613b8757600080fd5b5051613bda576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b6110a8565b8051613c32576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016811480613ca757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b15613cbe57613cb461406b565b9250925050613d9a565b6001600160a01b0381163214801590613d8457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6613d0961400b565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015613d5757600080fd5b505afa158015613d6b573d6000803e3d6000fd5b505050506040513d6020811015613d8157600080fd5b50515b15613d9157613cb461406b565b60003692509250505b9091565b80613df0576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b60008281526002602090815260408083206001600160a01b038816845290915290205481811015613e68576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b0316146110a85760009283526002602090815260408085206001600160a01b039788168652909152808420918390039091559290931681522080549091019055565b81600114613f11576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000838152600460205260409020546001600160a01b03868116911614613f7f576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a206e6f6e2d6f776e6564204e46540000000000000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b0385169055806110a8576000613fca847f0000000000000000000000000000000000000000000000000000000000000000612816565b60009081526002602090815260408083206001600160a01b03998a168452909152808220805460001901905595909616865250505091208054600101905550565b60131936013560601c90565b826001600160a01b0316846001600160a01b03161461106a5760009182526002602090815260408084206001600160a01b039687168552909152808320805483900390559290931681522080549091019055565b36600061407e6013198301828481614127565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826140bc5760008555614102565b82601f106140d55782800160ff19823516178555614102565b82800160010185558215614102579182015b828111156141025782358255916020019190600101906140e7565b5061410e929150614112565b5090565b5b8082111561410e5760008155600101614113565b60008085851115614136578182fd5b83861115614142578182fd5b505082019391909203915056fea2646970667358221220504af697ca658b128dc7816a8677520d4e7b9262d3324eae43be48f9523a1f5964736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1EF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80534934 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xBD85B039 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD0011D9D GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD0011D9D EQ PUSH2 0xDE0 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0xDFD JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0xE2B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xEF6 JUMPI PUSH2 0x1EF JUMP JUMPDEST DUP1 PUSH4 0xBD85B039 EQ PUSH2 0xC8A JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xCA7 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0xDBB JUMPI DUP1 PUSH4 0xC7778BAA EQ PUSH2 0xDC3 JUMPI PUSH2 0x1EF JUMP JUMPDEST DUP1 PUSH4 0x98650275 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0xC11 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0xC19 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xC47 JUMPI DUP1 PUSH4 0xADEBF6F2 EQ PUSH2 0xC6D JUMPI PUSH2 0x1EF JUMP JUMPDEST DUP1 PUSH4 0x80534934 EQ PUSH2 0xAA4 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0xBDB JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xBE3 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0xBEB JUMPI PUSH2 0x1EF JUMP JUMPDEST DUP1 PUSH4 0x510B5158 GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x5CFA9297 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x5CFA9297 EQ PUSH2 0x841 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x903 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x920 JUMPI DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0xA34 JUMPI PUSH2 0x1EF JUMP JUMPDEST DUP1 PUSH4 0x510B5158 EQ PUSH2 0x7D2 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x80B JUMPI DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x831 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x839 JUMPI PUSH2 0x1EF JUMP JUMPDEST DUP1 PUSH4 0x124D91E5 GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x124D91E5 EQ PUSH2 0x4BF JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x4F1 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x6B8 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x6C0 JUMPI PUSH2 0x1EF JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xD6A5BBB EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x42D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF1C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x1008 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x332 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x104E SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x44A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1070 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x484 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x46C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4B1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x107B JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x53B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x56F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x643 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x655 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1093 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x42B PUSH2 0x10AF JUMP JUMPDEST PUSH2 0x782 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x703 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x725 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x755 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x777 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x10C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7BE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7A6 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7EF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11DA JUMP JUMPDEST PUSH2 0x44A PUSH2 0x1253 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x12E1 JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x857 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x88E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x8C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x12EA SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x7EF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x919 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1301 JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x963 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x136B JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1458 JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xABA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xAE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x14D4 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x42B PUSH2 0x14E7 JUMP JUMPDEST PUSH2 0x7EF PUSH2 0x14FA JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x150F JUMP JUMPDEST PUSH2 0x42B PUSH2 0x1526 JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1584 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1665 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x167A JUMP JUMPDEST PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1685 JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xCBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xDB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x16FC JUMP JUMPDEST PUSH2 0x44A PUSH2 0x1844 JUMP JUMPDEST PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1853 JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x18FA JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x190E JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xE41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xE81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xEB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x193C SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x42B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1951 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xF79 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2061646472657373000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xFA3 DUP3 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0xFDD JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0xFD0 JUMPI PUSH1 0x0 PUSH2 0xFD3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1002 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x510B515800000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x1046 JUMPI POP PUSH2 0x1046 DUP3 PUSH2 0x1A0E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x105E PUSH2 0x1059 PUSH2 0x1A4C JUMP JUMPDEST PUSH2 0x1A56 JUMP JUMPDEST PUSH2 0x106A DUP5 DUP5 DUP5 DUP5 PUSH2 0x1AC3 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1046 DUP3 PUSH2 0x1E40 JUMP JUMPDEST PUSH2 0x1083 PUSH2 0x1F13 JUMP JUMPDEST PUSH2 0x108E DUP4 DUP4 DUP4 PUSH2 0x1F6B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x109B PUSH2 0x1F13 JUMP JUMPDEST PUSH2 0x10A8 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2090 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x10BF PUSH2 0x10BA PUSH2 0x1A4C JUMP JUMPDEST PUSH2 0x209D JUMP JUMPDEST PUSH2 0x10C7 PUSH2 0x2161 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP4 DUP3 EQ PUSH2 0x111F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1162 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP1 DUP7 EQ PUSH2 0x11C5 JUMPI PUSH2 0x11A6 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x117E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x119A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0xF1C JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x11B2 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1168 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1046 DUP3 PUSH2 0x21B9 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1046 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x12D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x12AE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x12D9 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 0x12BC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x12F5 PUSH2 0x1059 PUSH2 0x1A4C JUMP JUMPDEST PUSH2 0x106A DUP5 DUP5 DUP5 DUP5 PUSH2 0x2253 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1046 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1376 PUSH2 0x10BA PUSH2 0x1A4C JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1385 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x13D6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x144E JUMPI PUSH2 0x1446 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x13EF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x140B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x141E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2389 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x13D9 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1463 PUSH2 0x10BA PUSH2 0x1A4C JUMP JUMPDEST PUSH2 0x146F PUSH1 0x6 DUP4 DUP4 PUSH2 0x4086 JUMP JUMPDEST POP PUSH32 0x4B1DC5C136A3CE9FDED8DB0CE3D3366C58764EC3A8E4C2B9E52E4DDFE5EBBF7 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG1 POP POP JUMP JUMPDEST PUSH2 0x14DC PUSH2 0x1F13 JUMP JUMPDEST PUSH2 0x108E DUP4 DUP4 DUP4 PUSH2 0x2409 JUMP JUMPDEST PUSH2 0x14F2 PUSH2 0x10BA PUSH2 0x1A4C JUMP JUMPDEST PUSH2 0x10C7 PUSH2 0x2722 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x151A PUSH2 0x10BA PUSH2 0x1A4C JUMP JUMPDEST PUSH2 0x1523 DUP2 PUSH2 0x2760 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1530 PUSH2 0x1A4C JUMP JUMPDEST SWAP1 POP PUSH2 0x153B DUP2 PUSH2 0x1A56 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x158E PUSH2 0x1A4C JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x15F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2073656C662D617070726F76616C0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1046 DUP3 PUSH2 0x27AC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16B1 DUP3 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x16E7 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x16DA JUMPI PUSH1 0x1 PUSH2 0x16DD JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1049 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1049 JUMP JUMPDEST PUSH2 0x1707 PUSH2 0x10BA PUSH2 0x1A4C JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1716 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1767 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x144E JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x177D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x17A8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x17C4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1835 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x176A JUMP JUMPDEST PUSH1 0x60 PUSH2 0x184E PUSH2 0x27D2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x187F DUP3 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST PUSH2 0x18D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420616E204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1046 DUP3 PUSH32 0x0 PUSH2 0x2816 JUMP JUMPDEST PUSH2 0x1905 PUSH2 0x10BA PUSH2 0x1A4C JUMP JUMPDEST PUSH2 0x1523 DUP2 PUSH2 0x282C 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1944 PUSH2 0x1F13 JUMP JUMPDEST PUSH2 0x10A8 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2999 JUMP JUMPDEST PUSH2 0x195C PUSH2 0x10BA PUSH2 0x1A4C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND DUP3 DUP2 MUL SWAP4 SWAP1 SWAP4 OR DUP1 DUP6 SSTORE PUSH1 0x40 MLOAD SWAP4 SWAP5 SWAP3 SWAP1 DIV AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1A07 JUMPI POP PUSH2 0x1A02 DUP3 PUSH2 0x2B40 JUMP JUMPDEST DUP4 AND ISZERO ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x921ED8D100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x1046 JUMPI POP PUSH2 0x1046 DUP3 PUSH2 0x2B51 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x184E PUSH2 0x2C52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1523 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1B1E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x1B75 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 EQ PUSH2 0x1CFA JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B90 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1BA8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1BBB DUP3 PUSH2 0x27AC JUMP JUMPDEST ISZERO PUSH2 0x1BD0 JUMPI PUSH2 0x1BCB DUP11 DUP4 DUP4 PUSH2 0x2DB2 JUMP JUMPDEST PUSH2 0x1CF0 JUMP JUMPDEST PUSH2 0x1BFA DUP3 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x1CA3 JUMPI PUSH2 0x1C0C DUP11 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2EA4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C38 DUP4 PUSH32 0x0 PUSH2 0x2816 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x1C4B JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x1C9D JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x1C96 JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP10 ADD SWAP1 SSTORE SWAP8 DUP3 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP6 SWAP1 SWAP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP5 ADD SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP3 DUP5 PUSH2 0x1C9D JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP PUSH2 0x1CF0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120746F6B656E20696400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1B7B JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x1D3A JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 PUSH2 0x1D4E PUSH2 0x1A4C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1DBE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DA6 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1DFD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DE5 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1E24 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2FE7 JUMP JUMPDEST ISZERO PUSH2 0x1E37 JUMPI PUSH2 0x1E37 PUSH1 0x0 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2FED JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x6 PUSH2 0x1E4D DUP4 PUSH2 0x31F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1EAB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1E89 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x1EAB 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 0x1E97 JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1ED7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1EB8 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x10C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A2070617573656400000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F75 PUSH2 0x1A4C JUMP JUMPDEST SWAP1 POP PUSH2 0x1F81 DUP5 DUP3 PUSH2 0x3302 JUMP JUMPDEST PUSH2 0x1FD2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1FDB DUP4 PUSH2 0x27AC JUMP JUMPDEST ISZERO PUSH2 0x1FF0 JUMPI PUSH2 0x1FEB DUP5 DUP5 DUP5 PUSH2 0x334E JUMP JUMPDEST PUSH2 0x202C JUMP JUMPDEST PUSH2 0x201A DUP4 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x1CA3 JUMPI PUSH2 0x1FEB DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x3457 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x10A8 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x35C1 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1523 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2169 PUSH2 0x38FF JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH2 0x219C PUSH2 0x1A4C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21E5 DUP3 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x2237 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x22AE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x22B7 DUP4 PUSH2 0x27AC JUMP JUMPDEST ISZERO PUSH2 0x22CC JUMPI PUSH2 0x22C7 DUP5 DUP5 DUP5 PUSH2 0x2DB2 JUMP JUMPDEST PUSH2 0x2308 JUMP JUMPDEST PUSH2 0x22F6 DUP4 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x1CA3 JUMPI PUSH2 0x22C7 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x2EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 PUSH2 0x231C PUSH2 0x1A4C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2376 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2FE7 JUMP JUMPDEST ISZERO PUSH2 0x106A JUMPI PUSH2 0x106A PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 PUSH2 0x3956 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x108E SWAP1 DUP5 SWAP1 PUSH2 0x3A58 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x2460 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x246A PUSH2 0x1A4C JUMP JUMPDEST SWAP1 POP PUSH2 0x2476 DUP6 DUP3 PUSH2 0x3302 JUMP JUMPDEST PUSH2 0x24C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x25FD JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x24E2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x24FA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x250D DUP3 PUSH2 0x27AC JUMP JUMPDEST ISZERO PUSH2 0x2522 JUMPI PUSH2 0x251D DUP11 DUP4 DUP4 PUSH2 0x334E JUMP JUMPDEST PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x254C DUP3 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x1CA3 JUMPI PUSH2 0x255E DUP11 DUP4 DUP4 PUSH1 0x1 PUSH2 0x3457 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x258A DUP4 PUSH32 0x0 PUSH2 0x2816 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x259D JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x25F1 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x25EA JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP10 SWAP1 SUB SWAP1 SSTORE SWAP8 DUP3 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP6 SWAP1 SWAP6 KECCAK256 DUP1 SLOAD SWAP5 SWAP1 SWAP5 SUB SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP3 DUP5 PUSH2 0x25F1 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x24CD JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x263F JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x26C5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26AD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2704 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26EC JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x272A PUSH2 0x1F13 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x219C PUSH2 0x1A4C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x27DC PUSH2 0x3C3B JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2821 DUP3 PUSH2 0x2B40 JUMP JUMPDEST NOT DUP4 AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2856 DUP2 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x28A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2912 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E6720636F6C6C656374696F6E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x291A PUSH2 0x1A4C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x2967 DUP2 PUSH2 0x27AC JUMP JUMPDEST ISZERO ISZERO DUP2 PUSH32 0x4EBF8AD0DF535BA5E487BC9CB27FE44120CA81C3A95D3EBA79C0BD1DF2AB2D5D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29A3 PUSH2 0x1A4C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x2A00 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2A0A DUP7 DUP3 PUSH2 0x3302 JUMP JUMPDEST PUSH2 0x2A5B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2A64 DUP5 PUSH2 0x27AC JUMP JUMPDEST ISZERO PUSH2 0x2A7A JUMPI PUSH2 0x2A75 DUP7 DUP7 DUP7 DUP7 PUSH2 0x3D9E JUMP JUMPDEST PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x2AA4 DUP5 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x1CA3 JUMPI PUSH2 0x2A75 DUP7 DUP7 DUP7 DUP7 PUSH1 0x0 PUSH2 0x3EBC JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2B26 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2FE7 JUMP JUMPDEST ISZERO PUSH2 0x2B38 JUMPI PUSH2 0x2B38 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x3956 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x100 SWAP2 SWAP1 SWAP2 SUB SHL PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2BB4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x2BE8 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x2C1C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9CE5C4600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1046 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xBD85B03900000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x2C5E PUSH2 0x400B JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2CD1 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x2CDF JUMPI SWAP2 POP PUSH2 0x150C SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x2D9E JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x2DAC JUMPI SWAP2 POP PUSH2 0x150C SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x2E04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x2E6A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20737570706C79206F766572666C6F77000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP2 MSTORE DUP2 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP6 MSTORE SWAP5 SWAP1 SWAP5 MSTORE POP SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x2EF9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2F5A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E672F6275726E74204E4654000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 SSTORE DUP1 PUSH2 0x106A JUMPI PUSH1 0x0 PUSH2 0x2FA5 DUP5 PUSH32 0x0 PUSH2 0x2816 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xBC197C81 PUSH2 0x3025 PUSH2 0x1A4C JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x309E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3086 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x30DD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x30C5 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3119 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3101 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3146 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x316B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x317F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x10A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220726566757365640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x3234 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1049 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x324C JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x3238 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x3290 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x32F9 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x32BF JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x329C JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1A07 JUMPI POP POP 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x33A0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x3418 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420656E6F7567682062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP8 AND DUP4 MSTORE SWAP6 DUP2 MSTORE DUP6 DUP3 KECCAK256 SWAP3 DUP5 SWAP1 SUB SWAP1 SWAP3 SSTORE SWAP3 DUP4 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x34AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 AND EQ PUSH2 0x351A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6F776E6564204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH32 0xDEAD000000000000000000000000000000000000000000000000000000000000 SWAP1 SSTORE DUP1 PUSH2 0x106A JUMPI PUSH1 0x0 PUSH2 0x357C DUP5 PUSH32 0x0 PUSH2 0x2816 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE SWAP4 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x361C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x3673 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x367D PUSH2 0x1A4C JUMP JUMPDEST SWAP1 POP PUSH2 0x3689 DUP8 DUP3 PUSH2 0x3302 JUMP JUMPDEST PUSH2 0x36DA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x37E4 JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x36F5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x370D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3720 DUP3 PUSH2 0x27AC JUMP JUMPDEST ISZERO PUSH2 0x3736 JUMPI PUSH2 0x3731 DUP13 DUP13 DUP5 DUP5 PUSH2 0x3D9E JUMP JUMPDEST PUSH2 0x37DA JUMP JUMPDEST PUSH2 0x3760 DUP3 PUSH32 0x0 PUSH2 0x19CB JUMP JUMPDEST ISZERO PUSH2 0x1CA3 JUMPI PUSH2 0x3773 DUP13 DUP13 DUP5 DUP5 PUSH1 0x1 PUSH2 0x3EBC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x379F DUP4 PUSH32 0x0 PUSH2 0x2816 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x37B2 JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x37D8 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x37D1 JUMPI PUSH2 0x37C5 DUP14 DUP14 DUP9 DUP9 PUSH2 0x4017 JUMP JUMPDEST DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x37D8 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x36E0 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x37F7 JUMPI PUSH2 0x37F7 DUP10 DUP10 DUP5 DUP5 PUSH2 0x4017 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP11 DUP11 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x387C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3864 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x38BB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x38A3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x38E2 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2FE7 JUMP JUMPDEST ISZERO PUSH2 0x38F4 JUMPI PUSH2 0x38F4 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x2FED JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x10C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A206E6F7420706175736564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xF23A6E61 PUSH2 0x398E PUSH2 0x1A4C JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3A08 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x39F0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3A35 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x316B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x3A6B PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2FE7 JUMP JUMPDEST PUSH2 0x3ABC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3AF9 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3ADA JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3B5B 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 0x3B60 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x3BDF JUMPI DUP1 MLOAD ISZERO PUSH2 0x3BDA JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3BDA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x10A8 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x3C32 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x3CA7 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x3CBE JUMPI PUSH2 0x3CB4 PUSH2 0x406B JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x3D9A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x3D84 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x3D09 PUSH2 0x400B JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3D6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x3D91 JUMPI PUSH2 0x3CB4 PUSH2 0x406B JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST DUP1 PUSH2 0x3DF0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x3E68 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420656E6F7567682062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x10A8 JUMPI PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP7 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP5 KECCAK256 SWAP2 DUP4 SWAP1 SUB SWAP1 SWAP2 SSTORE SWAP3 SWAP1 SWAP4 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x3F11 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ PUSH2 0x3F7F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6F776E6564204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 SSTORE DUP1 PUSH2 0x10A8 JUMPI PUSH1 0x0 PUSH2 0x3FCA DUP5 PUSH32 0x0 PUSH2 0x2816 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP6 SWAP1 SWAP7 AND DUP7 MSTORE POP POP POP SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x106A JUMPI PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE SWAP3 SWAP1 SWAP4 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x407E PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x4127 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x40BC JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x4102 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x40D5 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x4102 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x4102 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x4102 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x40E7 JUMP JUMPDEST POP PUSH2 0x410E SWAP3 SWAP2 POP PUSH2 0x4112 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x410E JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4113 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x4136 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x4142 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP 0x4A 0xF6 SWAP8 0xCA PUSH6 0x8B128DC7816A DUP7 PUSH24 0x520D4E7B9262D3324EAE43BE48F9523A1F5964736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "895:2909:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3377:341:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3377:341:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1801:212:26;;;;;;;;;;;;;;;;-1:-1:-1;1801:212:26;-1:-1:-1;;;;;;1801:212:26;;:::i;:::-;;;;;;;;;;;;;;;;;;3810:255;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3810:255:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3810:255:26;;;;;;;;-1:-1:-1;3810:255:26;;-1:-1:-1;;3810:255:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3810:255:26;;;;;;;;-1:-1:-1;3810:255:26;;-1:-1:-1;;3810:255:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3810:255:26;;-1:-1:-1;3810:255:26;;-1:-1:-1;;;;;3810:255:26:i;:::-;;2188:112;;;;;;;;;;;;;;;;-1:-1:-1;2188:112:26;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:190:28;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2778:190:28;;;;;;;;;;;;;:::i;2254:295::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2254:295:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:295:28;;;;;;;;-1:-1:-1;2254:295:28;;-1:-1:-1;;2254:295:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:295:28;;;;;;;;-1:-1:-1;2254:295:28;;-1:-1:-1;;2254:295:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:295:28;;-1:-1:-1;2254:295:28;;-1:-1:-1;;;;;2254:295:28:i;1592:104::-;;;:::i;3762:435:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3762:435:13;;-1:-1:-1;3762:435:13;-1:-1:-1;3762:435:13;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2480:126:26;;;;;;;;;;;;;;;;-1:-1:-1;2480:126:26;;:::i;:::-;;;;-1:-1:-1;;;;;2480:126:26;;;;;;;;;;;;;;544:193:85;;;;;;;;;;;;;;;;-1:-1:-1;544:193:85;-1:-1:-1;;;;;544:193:85;;:::i;552:29:11:-;;;:::i;482:18:4:-;;;:::i;3483:223:26:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3483:223:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3483:223:26;;-1:-1:-1;3483:223:26;;-1:-1:-1;;;;;3483:223:26:i;5369:235:13:-;;;;;;;;;;;;;;;;-1:-1:-1;5369:235:13;;:::i;1137:481:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1137:481:8;;-1:-1:-1;1137:481:8;-1:-1:-1;1137:481:8;:::i;588:214:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;588:214:11;;-1:-1:-1;588:214:11;-1:-1:-1;588:214:11;:::i;3068:222:28:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3068:222:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3068:222:28;;;;;;;;-1:-1:-1;3068:222:28;;-1:-1:-1;;3068:222:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3068:222:28;;-1:-1:-1;3068:222:28;;-1:-1:-1;;;;;3068:222:28:i;1424:100::-;;;:::i;1114:94:2:-;;;:::i;694:120:1:-;;;;;;;;;;;;;;;;-1:-1:-1;694:120:1;-1:-1:-1;;;;;694:120:1;;:::i;929:185::-;;;:::i;4232:301:13:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4232:301:13;;;;;;;;;;:::i;339:40:1:-;;;;;;;;;;;;;;;;-1:-1:-1;339:40:1;-1:-1:-1;;;;;339:40:1;;:::i;4905:122:13:-;;;;;;;;;;;;;;;;-1:-1:-1;4905:122:13;;:::i;5788:282::-;;;;;;;;;;;;;;;;-1:-1:-1;5788:282:13;;:::i;2430:511:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2430:511:8;;-1:-1:-1;2430:511:8;-1:-1:-1;2430:511:8;:::i;4704:94:26:-;;;:::i;5071:254:13:-;;;;;;;;;;;;;;;;-1:-1:-1;5071:254:13;;:::i;3104:146:26:-;;;;;;;;;;;;;;;;-1:-1:-1;3104:146:26;;:::i;4568:164:13:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4568:164:13;;;;;;;;;;:::i;1908:263:28:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1908:263:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1908:263:28;;-1:-1:-1;1908:263:28;;-1:-1:-1;;;;;1908:263:28:i;1448:197:2:-;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;3377:341:13:-;3461:7;-1:-1:-1;;;;;3488:19:13;;3480:55;;;;;-1:-1:-1;;;3480:55:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;3550:44;:2;3572:21;3550;:44::i;:::-;3546:128;;;3633:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;3617:38:13;;;;;;:46;;3662:1;3617:46;;;3658:1;3617:46;3610:53;;;;;;3546:128;-1:-1:-1;3691:13:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;3691:20:13;;;;;;;;;;3377:341;;;;;:::o;1801:212:26:-;1886:4;-1:-1:-1;;;;;;1909:57:26;;1924:42;1909:57;;:97;;;1970:36;1994:11;1970:23;:36::i;:::-;1902:104;;1801:212;;;;:::o;3810:255::-;3983:28;3998:12;:10;:12::i;:::-;3983:14;:28::i;:::-;4021:37;4036:2;4040:3;4045:6;4053:4;4021:14;:37::i;:::-;3810:255;;;;:::o;2188:112::-;2253:13;2285:8;2290:2;2285:4;:8::i;2778:190:28:-;2901:19;:17;:19::i;:::-;2930:31;2945:4;2951:2;2955:5;2930:14;:31::i;:::-;2778:190;;;:::o;2254:295::-;2457:19;:17;:19::i;:::-;2486:56;2514:4;2520:2;2524:3;2529:6;2537:4;2486:27;:56::i;:::-;2254:295;;;;;:::o;1592:104::-;1638:31;1656:12;:10;:12::i;:::-;1638:17;:31::i;:::-;1679:10;:8;:10::i;:::-;1592:104::o;3762:435:13:-;3877:16;3913:27;;;3905:70;;;;;-1:-1:-1;;;3905:70:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;3986:25;4028:6;4014:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4014:28:13;;3986:56;;4058:9;4053:112;4073:18;;;4053:112;;4126:28;4136:6;;4143:1;4136:9;;;;;;;;;;;;;-1:-1:-1;;;;;4136:9:13;4147:3;;4151:1;4147:6;;;;;;;;;;;;;4126:9;:28::i;:::-;4112:8;4121:1;4112:11;;;;;;;;;;;;;;;;;:42;4093:3;;4053:112;;;-1:-1:-1;4182:8:13;3762:435;-1:-1:-1;;;;;3762:435:13:o;2480:126:26:-;2551:7;2577:22;2586:12;2577:8;:22::i;544:193:85:-;631:4;667:19;-1:-1:-1;;;;;654:32:85;:9;-1:-1:-1;;;;;654:32:85;;:76;;;;711:18;-1:-1:-1;;;;;690:40:85;:9;-1:-1:-1;;;;;690:40:85;;647:83;;544:193;;;:::o;552:29:11:-;;;;;;;;;;;;;;;-1:-1:-1;;552:29:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;482:18:4:-;;;;;;:::o;3483:223:26:-;3631:28;3646:12;:10;:12::i;3631:28::-;3669:30;3679:2;3683;3687:5;3694:4;3669:9;:30::i;5369:235:13:-;5439:7;5490:14;;;:7;:14;;;;;;-1:-1:-1;;;;;5524:19:13;;5516:59;;;;;-1:-1:-1;;;5516:59:13;;;;;;;;;;;;;;;;;;;;;;;;;;;1137:481:8;1301:31;1319:12;:10;:12::i;1301:31::-;1359:8;1392:23;;;:51;;;;-1:-1:-1;1419:24:8;;;1392:51;1384:90;;;;;-1:-1:-1;;;1384:90:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;1489:9;1484:128;1509:6;1504:1;:11;1484:128;;1536:65;1577:8;;1586:1;1577:11;;;;;;;;;;;;;-1:-1:-1;;;;;1577:11:8;1590:7;;1598:1;1590:10;;;;;;;;;;;;;1550:6;;1557:1;1550:9;;;;;;;;;;;;;-1:-1:-1;;;;;1550:9:8;-1:-1:-1;;;;;1536:40:8;;;:65;;;;;:::i;:::-;1517:3;;1484:128;;;;1137:481;;;;;;;:::o;588:214:11:-;669:31;687:12;:10;:12::i;669:31::-;710:34;:15;728:16;;710:34;:::i;:::-;;759:36;778:16;;759:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;759:36:11;;;;;;;;-1:-1:-1;759:36:11;;-1:-1:-1;;;;759:36:11;588:214;;:::o;3068:222:28:-;3216:19;:17;:19::i;:::-;3245:38;3265:4;3271:3;3276:6;3245:19;:38::i;1424:100::-;1468:31;1486:12;:10;:12::i;1468:31::-;1509:8;:6;:8::i;1114:94:2:-;1169:7;1195:6;;;;-1:-1:-1;;;;;1195:6:2;1114:94;;:::o;694:120:1:-;747:31;765:12;:10;:12::i;747:31::-;788:19;799:7;788:10;:19::i;:::-;694:120;:::o;929:185::-;972:15;990:12;:10;:12::i;:::-;972:30;;1012:23;1027:7;1012:14;:23::i;:::-;-1:-1:-1;;;;;1045:17:1;;1065:5;1045:17;;;:8;:17;;;;;;:25;;-1:-1:-1;;1045:25:1;;;1085:22;;;1065:5;1085:22;929:185;:::o;4232:301:13:-;4326:14;4343:12;:10;:12::i;:::-;4326:29;;4385:6;-1:-1:-1;;;;;4373:18:13;:8;-1:-1:-1;;;;;4373:18:13;;;4365:55;;;;;-1:-1:-1;;;4365:55:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4430:18:13;;;;;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;;:39;;-1:-1:-1;;4430:39:13;;;;;;;;;;4484:42;;;;;;;;;;;;;;;;;4232:301;;;:::o;339:40:1:-;;;;;;;;;;;;;;;:::o;4905:122:13:-;4977:4;5000:20;:2;:18;:20::i;5788:282::-;5861:7;5884:44;:2;5906:21;5884;:44::i;:::-;5880:184;;;5992:1;5967:11;;;:7;:11;;;;;;-1:-1:-1;;;;;5951:43:13;;:51;;6001:1;5951:51;;;5997:1;5951:51;5944:58;;;;;;5880:184;-1:-1:-1;6040:13:13;;;;:9;:13;;;;;;6033:20;;2430:511:8;2599:31;2617:12;:10;:12::i;2599:31::-;2657:8;2690:26;;;:55;;;;-1:-1:-1;2720:25:8;;;2690:55;2682:94;;;;;-1:-1:-1;;;2682:94:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:9;2786:149;2811:6;2806:1;:11;2786:149;;2857:9;;2867:1;2857:12;;;;;;;;;;;;;-1:-1:-1;;;;;2857:12:8;-1:-1:-1;;;;;2838:45:8;;2892:4;2899:8;;2908:1;2899:11;;;;;;;;;;;;;-1:-1:-1;;;;;2899:11:8;2912:8;;2921:1;2912:11;;;;;;;;;;;;;2838:86;;;;;;;;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:3;;;;;2786:149;;4704:94:26;4746:16;4781:10;:8;:10::i;:::-;4774:17;;4704:94;:::o;5071:254:13:-;5148:7;5175:47;:5;5200:21;5175:24;:47::i;:::-;5167:81;;;;;-1:-1:-1;;;5167:81:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;5265:53;:5;5296:21;5265:30;:53::i;3104:146:26:-;3171:31;3189:12;:10;:12::i;3171:31::-;3212;3230:12;3212:17;:31::i;4568:164:13:-;-1:-1:-1;;;;;4693:22:13;;;4670:4;4693:22;;;:10;:22;;;;;;;;:32;;;;;;;;;;;;;;;4568:164::o;1908:263:28:-;2086:19;:17;:19::i;:::-;2115:49;2138:4;2144:2;2148;2152:5;2159:4;2115:22;:49::i;1448:197:2:-;1527:31;1545:12;:10;:12::i;1527:31::-;1568:6;:17;;;;;-1:-1:-1;;;;;1568:17:2;;;;;;;;;;;;;1600:38;;1568:17;;1621:6;;;;;1600:38;;1568:6;1600:38;1448:197;:::o;875:200:15:-;968:4;747:8;991:12;;:17;;;;:77;;;1017:46;1042:20;1017:24;:46::i;:::-;1012:51;;:56;;991:77;984:84;875:200;-1:-1:-1;;;875:200:15:o;972:213:14:-;1057:4;-1:-1:-1;;;;;;1080:58:14;;1095:43;1080:58;;:98;;;1142:36;1166:11;1142:23;:36::i;3425:187:28:-;3534:15;3568:37;:35;:37::i;1120:126:1:-;-1:-1:-1;;;;;1193:17:1;;;;;;:8;:17;;;;;;;;1185:54;;;;;-1:-1:-1;;;1185:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;4973:1875:12;-1:-1:-1;;;;;5148:16:12;;5140:52;;;;;-1:-1:-1;;;5140:52:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;5219:10;;5257:13;;5247:23;;5239:66;;;;;-1:-1:-1;;;5239:66:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;5316:22;5348:25;5388:9;5383:1100;5404:6;5399:1;:11;5383:1100;;5431:10;5444:3;5448:1;5444:6;;;;;;;;;;;;;;5431:19;;5464:13;5480:6;5487:1;5480:9;;;;;;;;;;;;;;5464:25;;5507:20;:2;:18;:20::i;:::-;5503:970;;;5547:28;5561:2;5565;5569:5;5547:13;:28::i;:::-;5503:970;;;5600:44;:2;5622:21;5600;:44::i;:::-;5596:877;;;5664:29;5673:2;5677;5681:5;5688:4;5664:8;:29::i;:::-;5711:24;5738:50;:2;5766:21;5738:27;:50::i;:::-;5711:77;-1:-1:-1;5810:19:12;5806:579;;5870:16;5853:33;;5928:1;5908:21;;5806:579;;;6000:14;5980:16;:34;5976:391;;6042:25;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;6042:29:12;;;;;;;;;:50;;;;;;6118:25;;;:9;:25;;;;;;:46;;;;;;;;-1:-1:-1;;6207:16:12;5976:391;;;6325:19;;;;;5976:391;5596:877;;;;6423:35;;;-1:-1:-1;;;6423:35:12;;;;;;;;;;;;;;;;;;;;;;;;;;;5596:877;-1:-1:-1;;5412:3:12;;5383:1100;;;-1:-1:-1;6497:19:12;;6493:160;;6532:25;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;6532:29:12;;;;;;;;;:50;;;;;;6596:25;;;:9;:25;;;;;:46;;;;;;6493:160;-1:-1:-1;;;;;6668:56:12;;6704:1;6682:12;:10;:12::i;:::-;-1:-1:-1;;;;;6668:56:12;;6712:3;6717:6;6668:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6738:15;:2;-1:-1:-1;;;;;6738:13:12;;:15::i;:::-;6734:108;;;6769:62;6805:1;6809:2;6813:3;6818:6;6826:4;6769:27;:62::i;:::-;4973:1875;;;;;;;:::o;808:159:11:-;865:13;921:15;938:20;:2;:18;:20::i;:::-;904:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:11;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;890:70;;808:159;;;:::o;572:96:4:-;634:6;;;;633:7;625:36;;;;;-1:-1:-1;;;625:36:4;;;;;;;;;;;;;;;;;;;;;;;;;;;1366:576:14;1489:14;1506:12;:10;:12::i;:::-;1489:29;;1536:27;1550:4;1556:6;1536:13;:27::i;:::-;1528:70;;;;;-1:-1:-1;;;1528:70:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:20;:2;:18;:20::i;:::-;1609:260;;;1649:30;1663:4;1669:2;1673:5;1649:13;:30::i;:::-;1609:260;;;1700:44;:2;1722:21;1700;:44::i;:::-;1696:173;;;1760:32;1769:4;1775:2;1779:5;1786;1760:8;:32::i;1696:173::-;1921:1;-1:-1:-1;;;;;1884:51:14;1907:4;-1:-1:-1;;;;;1884:51:14;1899:6;-1:-1:-1;;;;;1884:51:14;;1925:2;1929:5;1884:51;;;;;;;;;;;;;;;;;;;;;;;;1366:576;;;;:::o;1930:320:12:-;2192:51;2215:4;2221:2;2225:3;2230:6;2238:4;2192:22;:51::i;1770:136:2:-;1860:4;-1:-1:-1;;;;;1860:10:2;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1860:12:2;-1:-1:-1;;;;;1849:23:2;;;;;;1841:58;;;;;-1:-1:-1;;;1841:58:2;;;;;;;;;;;;;;;;;;;;;;;;;;;1166:131:4;1213:16;:14;:16::i;:::-;1248:5;1239:14;;-1:-1:-1;;1239:14:4;;;1268:22;1277:12;:10;:12::i;:::-;1268:22;;;-1:-1:-1;;;;;1268:22:4;;;;;;;;;;;;;;1166:131::o;6918:232:13:-;6989:7;7017:54;:12;7049:21;7017:31;:54::i;:::-;7016:55;7008:95;;;;;-1:-1:-1;;;7008:95:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7120:23:13;;;;:9;:23;;;;;;-1:-1:-1;;;;;7120:23:13;;6918:232::o;4327:640:12:-;-1:-1:-1;;;;;4469:16:12;;4461:52;;;;;-1:-1:-1;;;4461:52:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;4528:20;:2;:18;:20::i;:::-;4524:256;;;4564:28;4578:2;4582;4586:5;4564:13;:28::i;:::-;4524:256;;;4613:44;:2;4635:21;4613;:44::i;:::-;4609:171;;;4673:30;4682:2;4686;4690:5;4697;4673:8;:30::i;4609:171::-;-1:-1:-1;;;;;4795:55:12;;4832:1;4810:12;:10;:12::i;:::-;-1:-1:-1;;;;;4795:55:12;;4840:2;4844:5;4795:55;;;;;;;;;;;;;;;;;;;;;;;;4864:15;:2;-1:-1:-1;;;;;4864:13:12;;:15::i;:::-;4860:101;;;4895:55;4926:1;4930:2;4934;4938:5;4945:4;4895:22;:55::i;416:223:6:-;573:58;;;-1:-1:-1;;;;;573:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;596:23;573:58;;;538:94;;566:5;;538:27;:94::i;1994:1801:14:-;2159:10;;2197:13;;2187:23;;2179:66;;;;;-1:-1:-1;;;2179:66:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;2256:14;2273:12;:10;:12::i;:::-;2256:29;;2303:27;2317:4;2323:6;2303:13;:27::i;:::-;2295:70;;;;;-1:-1:-1;;;2295:70:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;2376:22;2408:25;2448:9;2443:1106;2464:6;2459:1;:11;2443:1106;;2491:10;2504:3;2508:1;2504:6;;;;;;;;;;;;;;2491:19;;2524:13;2540:6;2547:1;2540:9;;;;;;;;;;;;;;2524:25;;2567:20;:2;:18;:20::i;:::-;2563:976;;;2607:30;2621:4;2627:2;2631:5;2607:13;:30::i;:::-;2563:976;;;2662:44;:2;2684:21;2662;:44::i;:::-;2658:881;;;2726:31;2735:4;2741:2;2745:5;2752:4;2726:8;:31::i;:::-;2775:24;2802:50;:2;2830:21;2802:27;:50::i;:::-;2775:77;-1:-1:-1;2874:19:14;2870:581;;2934:16;2917:33;;2992:1;2972:21;;2870:581;;;3064:14;3044:16;:34;3040:393;;3106:25;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;3106:31:14;;;;;;;;;:52;;;;;;;3184:25;;;:9;:25;;;;;;:46;;;;;;;;;-1:-1:-1;;3273:16:14;3040:393;;;3391:19;;;;;3040:393;2658:881;;-1:-1:-1;;2472:3:14;;2443:1106;;;-1:-1:-1;3563:19:14;;3559:162;;3598:25;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;3598:31:14;;;;;;;;;:52;;;;;;;3664:25;;;:9;:25;;;;;:46;;;;;;;3559:162;3772:1;-1:-1:-1;;;;;3736:52:14;3758:4;-1:-1:-1;;;;;3736:52:14;3750:6;-1:-1:-1;;;;;3736:52:14;;3776:3;3781:6;3736:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1994:1801;;;;;;;:::o;905:129:4:-;950:19;:17;:19::i;:::-;979:6;:13;;-1:-1:-1;;979:13:4;988:4;979:13;;;1007:20;1014:12;:10;:12::i;1252:122:1:-;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;762:107:15:-;747:8;845:12;:17;;762:107::o;3618:184:28:-;3725:16;3760:35;:33;:35::i;:::-;3753:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3753:42:28;;-1:-1:-1;;;;3618:184:28;:::o;1081:190:15:-;1183:7;1218:46;1243:20;1218:24;:46::i;:::-;1217:47;1209:5;:55;1202:62;;1081:190;;;;:::o;6518:394:13:-;6603:54;:12;6635:21;6603:31;:54::i;:::-;6602:55;6594:95;;;;;-1:-1:-1;;;6594:95:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;6742:1;6707:23;;;:9;:23;;;;;;-1:-1:-1;;;;;6707:23:13;:37;6699:80;;;;;-1:-1:-1;;;6699:80:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;6815:12;:10;:12::i;:::-;6789:23;;;;:9;:23;;;;;:38;;;;-1:-1:-1;;;;;6789:38:13;;;;;;;;;;6874:30;6789:23;6874:28;:30::i;:::-;6842:63;;6860:12;6842:63;;;;;;;;;;6518:394;:::o;1077:809:12:-;1255:14;1272:12;:10;:12::i;:::-;1255:29;-1:-1:-1;;;;;;1302:16:12;;1294:56;;;;;-1:-1:-1;;;1294:56:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;1368:27;1382:4;1388:6;1368:13;:27::i;:::-;1360:70;;;;;-1:-1:-1;;;1360:70:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;1445:20;:2;:18;:20::i;:::-;1441:276;;;1481:38;1499:4;1505:2;1509;1513:5;1481:17;:38::i;:::-;1441:276;;;1540:44;:2;1562:21;1540;:44::i;:::-;1536:181;;;1600:40;1613:4;1619:2;1623;1627:5;1634;1600:12;:40::i;1536:181::-;1761:2;-1:-1:-1;;;;;1732:43:12;1755:4;-1:-1:-1;;;;;1732:43:12;1747:6;-1:-1:-1;;;;;1732:43:12;;1765:2;1769:5;1732:43;;;;;;;;;;;;;;;;;;;;;;;;1789:15;:2;-1:-1:-1;;;;;1789:13:12;;:15::i;:::-;1785:95;;;1820:49;1843:4;1849:2;1853;1857:5;1864:4;1820:22;:49::i;:::-;1077:809;;;;;;:::o;1277:158:15:-;1427:1;1396:3;:26;;;;1390:33;-1:-1:-1;;1389:39:15;;1277:158::o;2760:444:13:-;2845:4;-1:-1:-1;;;;;;2880:40:13;;2895:25;2880:40;;:97;;-1:-1:-1;;;;;;;2936:41:13;;2951:26;2936:41;2880:97;:165;;;-1:-1:-1;;;;;;;2993:52:13;;3008:37;2993:52;2880:165;:240;;;-1:-1:-1;;;;;;;3061:59:13;;3076:44;3061:59;2880:240;:317;;;-1:-1:-1;;;;;;;;3136:61:13;3151:46;3136:61;;2760:444::o;743:904:85:-;796:15;851:10;796:15;896:27;:25;:27::i;:::-;871:52;;958:18;-1:-1:-1;;;;;937:40:85;:9;-1:-1:-1;;;;;937:40:85;;:76;;;;994:19;-1:-1:-1;;;;;981:32:85;:9;-1:-1:-1;;;;;981:32:85;;937:76;933:166;;;1082:6;-1:-1:-1;1075:13:85;;-1:-1:-1;1075:13:85;933:166;-1:-1:-1;;;;;1496:22:85;;1509:9;1496:22;;;;:78;;;1522:18;-1:-1:-1;;;;;1522:33:85;;1556:6;1564:9;1522:52;;;;;;;;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1522:52:85;1496:78;1492:122;;;1597:6;-1:-1:-1;1590:13:85;;-1:-1:-1;1590:13:85;1492:122;-1:-1:-1;1631:9:85;-1:-1:-1;743:904:85;:::o;6983:476:12:-;7102:10;7094:44;;;;;-1:-1:-1;;;7094:44:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;7148:14;7165:13;;;:9;:13;;;;;;7208:14;;;7240:18;;;7232:57;;;;;-1:-1:-1;;;7232:57:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;7299:13;;;;:9;:13;;;;;;;;:25;;;;7426:9;:13;;;;;-1:-1:-1;;;;;7426:17:12;;;;;;;;;-1:-1:-1;7426:17:12;;;:26;;;;;;;6983:476::o;7465:708::-;7601:5;7610:1;7601:10;7593:49;;;;;-1:-1:-1;;;7593:49:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;7660:11;;;;:7;:11;;;;;;:16;7652:58;;;;;-1:-1:-1;;;7652:58:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;7721:11;;;;:7;:11;;;;;-1:-1:-1;;;;;7735:20:12;;7721:34;;7771:7;7766:401;;7794:20;7817:50;:2;7845:21;7817:27;:50::i;:::-;8033:23;;;;:9;:23;;;;;;;;8031:25;;;;;;;;;8129:9;:23;;;;;-1:-1:-1;;;;;8129:27:12;;;;;;;;;;8127:29;;;;;;;-1:-1:-1;7465:708:12;;;;:::o;913:377:9:-;1229:20;1275:8;;;913:377::o;9002:389:13:-;9308:23;-1:-1:-1;;;;;9217:48:13;;1721:10;9266:12;:10;:12::i;:::-;9280:4;9286:3;9291:6;9299:4;9217:87;;;;;;;;;;;;;-1:-1:-1;;;;;9217:87:13;;;;;;-1:-1:-1;;;;;9217:87:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9217:87:13;-1:-1:-1;;;;;;9217:114:13;;9196:188;;;;;-1:-1:-1;;;9196:188:13;;;;;;;;;;;;;;;;;;;;;;;;;;;276:546:10;339:13;368:10;364:51;;-1:-1:-1;394:10:10;;;;;;;;;;;;;;;;;;;364:51;439:5;424:12;478:75;485:9;;478:75;;510:8;;540:2;532:10;;;;478:75;;;562:19;594:6;584:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;584:17:10;-1:-1:-1;654:5:10;;-1:-1:-1;562:39:10;-1:-1:-1;;;627:10:10;;669:116;676:9;;669:116;;745:2;738:4;:9;732:2;:16;719:31;;701:6;708:7;;;;;;;701:15;;;;;;;;;;;:49;;;;;;;;;;-1:-1:-1;772:2:10;764:10;;;;669:116;;;-1:-1:-1;808:6:10;276:546;-1:-1:-1;;;;276:546:10:o;7572:158:13:-;7656:4;7688:6;-1:-1:-1;;;;;7680:14:13;:4;-1:-1:-1;;;;;7680:14:13;;7679:44;;;-1:-1:-1;;;;;;;7699:16:13;;;;;;;:10;:16;;;;;;;;:24;;;;;;;;;;;;;;;7572:158::o;3930:386:14:-;4051:10;4043:44;;;;;-1:-1:-1;;;4043:44:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;4097:15;4115:13;;;:9;:13;;;;;;;;-1:-1:-1;;;;;4115:19:14;;;;;;;;;;4152:16;;;;4144:58;;;;;-1:-1:-1;;;4144:58:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;4212:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;4212:19:14;;;;;;;;;;;4234:15;;;;4212:37;;;4287:13;;;:9;:13;;;;;:22;;;;;;;;3930:386::o;4322:622::-;4460:5;4469:1;4460:10;4452:49;;;;;-1:-1:-1;;;4452:49:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;4543:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;4519:37:14;;;;;;4511:74;;;;;-1:-1:-1;;;4511:74:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;4595:11;;;;:7;:11;;;;;1835:66:13;4595:30:14;;4641:7;4636:302;;4664:20;4687:50;:2;4715:21;4687:27;:50::i;:::-;4827:23;;;;:9;:23;;;;;;;;-1:-1:-1;;;;;4827:29:14;;;;;;;;;4825:31;;-1:-1:-1;;4825:31:14;;;;;;4904:23;;;:9;:23;;;;;4902:25;;;;;;;-1:-1:-1;4322:622:14;;;;:::o;2385:1936:12:-;-1:-1:-1;;;;;2582:16:12;;2574:56;;;;;-1:-1:-1;;;2574:56:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;2657:10;;2695:13;;2685:23;;2677:66;;;;;-1:-1:-1;;;2677:66:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;2753:14;2770:12;:10;:12::i;:::-;2753:29;;2800:27;2814:4;2820:6;2800:13;:27::i;:::-;2792:70;;;;;-1:-1:-1;;;2792:70:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;2873:22;2905:25;2945:9;2940:1071;2961:6;2956:1;:11;2940:1071;;2988:10;3001:3;3005:1;3001:6;;;;;;;;;;;;;;2988:19;;3021:13;3037:6;3044:1;3037:9;;;;;;;;;;;;;;3021:25;;3064:20;:2;:18;:20::i;:::-;3060:941;;;3104:38;3122:4;3128:2;3132;3136:5;3104:17;:38::i;:::-;3060:941;;;3167:44;:2;3189:21;3167;:44::i;:::-;3163:838;;;3231:39;3244:4;3250:2;3254;3258:5;3265:4;3231:12;:39::i;:::-;3288:24;3315:50;:2;3343:21;3315:27;:50::i;:::-;3288:77;-1:-1:-1;3387:19:12;3383:530;;3447:16;3430:33;;3505:1;3485:21;;3383:530;;;3577:14;3557:16;:34;3553:342;;3619:73;3648:4;3654:2;3658:14;3674:17;3619:28;:73::i;:::-;3735:16;3718:33;;3797:1;3777:21;;3553:342;;;3853:19;;;;;3553:342;3163:838;;-1:-1:-1;;2969:3:12;;2940:1071;;;-1:-1:-1;4025:19:12;;4021:123;;4060:73;4089:4;4095:2;4099:14;4115:17;4060:28;:73::i;:::-;4187:2;-1:-1:-1;;;;;4159:44:12;4181:4;-1:-1:-1;;;;;4159:44:12;4173:6;-1:-1:-1;;;;;4159:44:12;;4191:3;4196:6;4159:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4217:15;:2;-1:-1:-1;;;;;4217:13:12;;:15::i;:::-;4213:102;;;4248:56;4276:4;4282:2;4286:3;4291:6;4299:4;4248:27;:56::i;:::-;2385:1936;;;;;;;;;:::o;674:96:4:-;732:6;;;;724:39;;;;;-1:-1:-1;;;724:39:4;;;;;;;;;;;;;;;;;;;;;;;;;;;8201:317:13;8462:17;-1:-1:-1;;;;;8378:43:13;;1559:10;8422:12;:10;:12::i;:::-;8436:4;8442:2;8446:5;8453:4;8378:80;;;;;;;;;;;;;-1:-1:-1;;;;;8378:80:13;;;;;;-1:-1:-1;;;;;8378:80:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1147:870:6;1272:5;1296:19;-1:-1:-1;;;;;1296:17:6;;;:19::i;:::-;1288:58;;;;;-1:-1:-1;;;1288:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:12;1431:17;1452:6;-1:-1:-1;;;;;1452:11:6;1464:8;1452:21;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1452:21:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:57;;;;1487:7;1483:528;;;1514:11;;:16;1510:122;;1569:4;1558:24;;;;;;;;;;;;;;;-1:-1:-1;1558:24:6;1550:67;;;;;-1:-1:-1;;;1550:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:528;;;1720:11;;1716:95;;1756:40;;;-1:-1:-1;;;1756:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:95;1938:4;1932:11;1982:4;1975;1971:2;1967:13;1960:27;1653:670:85;1704:14;;1758:10;-1:-1:-1;;;;;1803:18:85;1782:40;;;;:76;;;1839:19;-1:-1:-1;;;;;1826:32:85;:9;-1:-1:-1;;;;;1826:32:85;;1782:76;1778:197;;;1927:37;:35;:37::i;:::-;1920:44;;;;;;;1778:197;-1:-1:-1;;;;;2122:22:85;;2135:9;2122:22;;;;:99;;;2148:18;-1:-1:-1;;;;;2148:33:85;;2182:27;:25;:27::i;:::-;2211:9;2148:73;;;;;;;;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2148:73:85;2122:99;2118:174;;;2244:37;:35;:37::i;2118:174::-;2308:8;;2301:15;;;;;1653:670;;;:::o;8179:487:12:-;8324:10;8316:44;;;;;-1:-1:-1;;;8316:44:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;8370:15;8388:13;;;:9;:13;;;;;;;;-1:-1:-1;;;;;8388:19:12;;;;;;;;;;8425:16;;;;8417:58;;;;;-1:-1:-1;;;8417:58:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;8497:2;-1:-1:-1;;;;;8489:10:12;:4;-1:-1:-1;;;;;8489:10:12;;8485:175;;8515:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;8515:19:12;;;;;;;;;;;8537:15;;;;8515:37;;;8623:17;;;;;;;:26;;;;;;;8179:487::o;8672:683::-;8834:5;8843:1;8834:10;8826:49;;;;;-1:-1:-1;;;8826:49:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;8917:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;8893:37:12;;;;;;8885:74;;;;;-1:-1:-1;;;8885:74:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;8969:11;;;;:7;:11;;;;;-1:-1:-1;;;;;8983:20:12;;8969:34;;9018:7;9013:336;;9041:20;9064:50;:2;9092:21;9064:27;:50::i;:::-;9201:23;;;;:9;:23;;;;;;;;-1:-1:-1;;;;;9201:29:12;;;;;;;;;;;:34;;-1:-1:-1;;9201:34:12;;;9306:27;;;;;;-1:-1:-1;;;9306:27:12;;:32;;-1:-1:-1;9306:32:12;;;-1:-1:-1;8672:683:12:o;103:519:84:-;-1:-1:-1;;585:14:84;581:23;568:37;564:2;560:46;;536:80::o;9361:434:12:-;9540:2;-1:-1:-1;;;;;9532:10:12;:4;-1:-1:-1;;;;;9532:10:12;;9528:261;;9631:23;;;;:9;:23;;;;;;;;-1:-1:-1;;;;;9631:29:12;;;;;;;;;;;:39;;;;;;;9741:27;;;;;;;:37;;;;;;;9361:434::o;628:149:84:-;706:14;;739:31;-1:-1:-1;;749:20:84;;706:14;;;739:31;:::i;:::-;732:38;;;;628:149;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:363:86;;;172:8;160:10;157:24;154:2;;;202:9;191;184:28;154:2;239:6;229:8;226:20;223:2;;;267:9;256;249:28;223:2;-1:-1:-1;;301:23:86;;;346:25;;;;;-1:-1:-1;144:233:86:o"
            },
            "methodIdentifiers": {
              "addMinter(address)": "983b2d56",
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "baseMetadataURI()": "5b2bd79e",
              "batchBurnFrom(address,uint256[],uint256[])": "80534934",
              "burnFrom(address,uint256,uint256)": "124d91e5",
              "collectionOf(uint256)": "c7778baa",
              "createCollection(uint256)": "d0011d9d",
              "creator(uint256)": "510b5158",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isFungible(uint256)": "adebf6f2",
              "isMinter(address)": "aa271e1a",
              "isTrustedForwarder(address)": "572b6c05",
              "msgData()": "c4c2bfdc",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "pause()": "8456cb59",
              "paused()": "5c975abb",
              "recoverERC20s(address[],address[],uint256[])": "73c8a958",
              "recoverERC721s(address[],address[],uint256[])": "c3666c36",
              "renounceMinter()": "98650275",
              "safeBatchMint(address,uint256[],uint256[],bytes)": "0d6a5bbb",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeMint(address,uint256,uint256,bytes)": "5cfa9297",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setBaseMetadataURI(string)": "7e518ec8",
              "supportsInterface(bytes4)": "01ffc9a7",
              "totalSupply(uint256)": "bd85b039",
              "transferOwnership(address)": "f2fde38b",
              "unpause()": "3f4ba83a",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "contracts/token/ERC1155/mocks/ERC1155TokenReceiverMock.sol": {
        "ERC1155TokenReceiverMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "accept1155",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "gas",
                  "type": "uint256"
                }
              ],
              "name": "ReceivedBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "gas",
                  "type": "uint256"
                }
              ],
              "name": "ReceivedSingle",
              "type": "event"
            },
            {
              "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60c060405234801561001057600080fd5b5060405161093e38038061093e8339818101604052604081101561003357600080fd5b50805160209091015190151560f881901b608052606082901b6001600160601b03191660a05260ff16906001600160a01b03166108b161008d6000398061042d52806106b55250806104bb528061074352506108b16000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c8114610099578063f23a6e61146102a2575b600080fd5b6100856004803603602081101561005c57600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661037a565b604080519115158252519081900360200190f35b61026d600480360360a08110156100af57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82358116926020810135909116918101906060810160408201356401000000008111156100f057600080fd5b82018360208201111561010257600080fd5b8035906020019184602083028401116401000000008311171561012457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561017457600080fd5b82018360208201111561018657600080fd5b803590602001918460208302840111640100000000831117156101a857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156101f857600080fd5b82018360208201111561020a57600080fd5b8035906020019184600183028401116401000000008311171561022c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610413945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b61026d600480360360a08110156102b857600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561030557600080fd5b82018360208201111561031757600080fd5b8035906020019184600183028401116401000000008311171561033957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061069b945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061040d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b92915050565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146104b957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433131353552656365697665723a2077726f6e6720746f6b656e00000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000001561066f577f8667b06aa891a7720ada21ca62207388e6c8bd0ebee8a3d70ed6d3382e1e375386868686865a604051808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001858152602001848103845288818151815260200191508051906020019060200280838360005b8381101561058c578181015183820152602001610574565b50505050905001848103835287818151815260200191508051906020019060200280838360005b838110156105cb5781810151838201526020016105b3565b50505050905001848103825286818151815260200191508051906020019080838360005b838110156106075781810151838201526020016105ef565b50505050905090810190601f1680156106345780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a1507fbc197c8100000000000000000000000000000000000000000000000000000000610692565b507fffffffff000000000000000000000000000000000000000000000000000000005b95945050505050565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461074157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433131353552656365697665723a2077726f6e6720746f6b656e00000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000001561066f577fbafaa6e1c57bb05a9b952e12b8ff1bcbfd2a0d9f6c8097c6fb28e241610cac5286868686865a604051808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156108155781810151838201526020016107fd565b50505050905090810190601f1680156108425780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1507ff23a6e610000000000000000000000000000000000000000000000000000000061069256fea2646970667358221220280f914f0edba950fd1706333cb43624e8c50aab632818fecc0e90e92df0210864736f6c63430007060033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x93E CODESIZE SUB DUP1 PUSH2 0x93E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 ISZERO ISZERO PUSH1 0xF8 DUP2 SWAP1 SHL PUSH1 0x80 MSTORE PUSH1 0x60 DUP3 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE PUSH1 0xFF AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8B1 PUSH2 0x8D PUSH1 0x0 CODECOPY DUP1 PUSH2 0x42D MSTORE DUP1 PUSH2 0x6B5 MSTORE POP DUP1 PUSH2 0x4BB MSTORE DUP1 PUSH2 0x743 MSTORE POP PUSH2 0x8B1 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 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x99 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x2A2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x85 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x37A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x26D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x413 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x26D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x69B SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x40D JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x4B9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433131353552656365697665723A2077726F6E6720746F6B656E00000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x66F JUMPI PUSH32 0x8667B06AA891A7720ADA21CA62207388E6C8BD0EBEE8A3D70ED6D3382E1E3753 DUP7 DUP7 DUP7 DUP7 DUP7 GAS PUSH1 0x40 MLOAD DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP9 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x58C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x574 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5CB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5B3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x607 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5EF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x634 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP10 POP POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 PUSH2 0x692 JUMP JUMPDEST POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x741 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433131353552656365697665723A2077726F6E6720746F6B656E00000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x66F JUMPI PUSH32 0xBAFAA6E1C57BB05A9B952E12B8FF1BCBFD2A0D9F6C8097C6FB28E241610CAC52 DUP7 DUP7 DUP7 DUP7 DUP7 GAS PUSH1 0x40 MLOAD DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x815 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7FD JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x842 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 PUSH2 0x692 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x28 0xF SWAP2 0x4F 0xE 0xDB 0xA9 POP REVERT OR MOD CALLER EXTCODECOPY 0xB4 CALLDATASIZE 0x24 0xE8 0xC5 EXP 0xAB PUSH4 0x2818FECC 0xE SWAP1 0xE9 0x2D CREATE 0x21 ADDMOD PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "263:1923:29:-:0;;;646:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;646:157:29;;;;;;;730:24;::::1;;;::::0;;::::1;;::::0;764:32:::1;::::0;;;-1:-1:-1;;;;;;764:32:29;::::1;::::0;263:1923;;;-1:-1:-1;;;;;263:1923:29;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {
                "4461": [
                  {
                    "length": 32,
                    "start": 1211
                  },
                  {
                    "length": 32,
                    "start": 1859
                  }
                ],
                "4463": [
                  {
                    "length": 32,
                    "start": 1069
                  },
                  {
                    "length": 32,
                    "start": 1717
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c8114610099578063f23a6e61146102a2575b600080fd5b6100856004803603602081101561005c57600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661037a565b604080519115158252519081900360200190f35b61026d600480360360a08110156100af57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82358116926020810135909116918101906060810160408201356401000000008111156100f057600080fd5b82018360208201111561010257600080fd5b8035906020019184602083028401116401000000008311171561012457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561017457600080fd5b82018360208201111561018657600080fd5b803590602001918460208302840111640100000000831117156101a857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156101f857600080fd5b82018360208201111561020a57600080fd5b8035906020019184600183028401116401000000008311171561022c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610413945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b61026d600480360360a08110156102b857600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561030557600080fd5b82018360208201111561031757600080fd5b8035906020019184600183028401116401000000008311171561033957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061069b945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061040d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b92915050565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146104b957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433131353552656365697665723a2077726f6e6720746f6b656e00000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000001561066f577f8667b06aa891a7720ada21ca62207388e6c8bd0ebee8a3d70ed6d3382e1e375386868686865a604051808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001858152602001848103845288818151815260200191508051906020019060200280838360005b8381101561058c578181015183820152602001610574565b50505050905001848103835287818151815260200191508051906020019060200280838360005b838110156105cb5781810151838201526020016105b3565b50505050905001848103825286818151815260200191508051906020019080838360005b838110156106075781810151838201526020016105ef565b50505050905090810190601f1680156106345780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a1507fbc197c8100000000000000000000000000000000000000000000000000000000610692565b507fffffffff000000000000000000000000000000000000000000000000000000005b95945050505050565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461074157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433131353552656365697665723a2077726f6e6720746f6b656e00000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000001561066f577fbafaa6e1c57bb05a9b952e12b8ff1bcbfd2a0d9f6c8097c6fb28e241610cac5286868686865a604051808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156108155781810151838201526020016107fd565b50505050905090810190601f1680156108425780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1507ff23a6e610000000000000000000000000000000000000000000000000000000061069256fea2646970667358221220280f914f0edba950fd1706333cb43624e8c50aab632818fecc0e90e92df0210864736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x99 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x2A2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x85 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x37A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x26D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x413 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x26D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x69B SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x40D JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x4B9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433131353552656365697665723A2077726F6E6720746F6B656E00000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x66F JUMPI PUSH32 0x8667B06AA891A7720ADA21CA62207388E6C8BD0EBEE8A3D70ED6D3382E1E3753 DUP7 DUP7 DUP7 DUP7 DUP7 GAS PUSH1 0x40 MLOAD DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP9 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x58C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x574 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5CB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5B3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x607 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5EF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x634 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP10 POP POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 PUSH2 0x692 JUMP JUMPDEST POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x741 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433131353552656365697665723A2077726F6E6720746F6B656E00000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x66F JUMPI PUSH32 0xBAFAA6E1C57BB05A9B952E12B8FF1BCBFD2A0D9F6C8097C6FB28E241610CAC52 DUP7 DUP7 DUP7 DUP7 DUP7 GAS PUSH1 0x40 MLOAD DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x815 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7FD JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x842 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 PUSH2 0x692 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x28 0xF SWAP2 0x4F 0xE 0xDB 0xA9 POP REVERT OR MOD CALLER EXTCODECOPY 0xB4 CALLDATASIZE 0x24 0xE8 0xC5 EXP 0xAB PUSH4 0x2818FECC 0xE SWAP1 0xE9 0x2D CREATE 0x21 ADDMOD PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "263:1923:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1102:213:16;;;;;;;;;;;;;;;;-1:-1:-1;1102:213:16;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1664:520:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1664:520:29;;;;;;;;-1:-1:-1;1664:520:29;;-1:-1:-1;;1664:520:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1664:520:29;;;;;;;;-1:-1:-1;1664:520:29;;-1:-1:-1;;1664:520:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1664:520:29;;-1:-1:-1;1664:520:29;;-1:-1:-1;;;;;1664:520:29:i;:::-;;;;;;;;;;;;;;;;;;;1054:488;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1054:488:29;;-1:-1:-1;1054:488:29;;-1:-1:-1;;;;;1054:488:29:i;1102:213:16:-;1187:4;1210:40;;;1225:25;1210:40;;:98;;-1:-1:-1;1254:54:16;;;1269:39;1254:54;1210:98;1203:105;1102:213;-1:-1:-1;;1102:213:16:o;1664:520:29:-;1873:6;1899:10;:31;1913:17;1899:31;;1891:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1977:11;1973:205;;;2009:59;2023:8;2033:4;2039:3;2044:6;2052:4;2058:9;2009:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2089:23:29;2082:30;;1973:205;-1:-1:-1;2150:17:29;1973:205;1664:520;;;;;;;:::o;1054:488::-;1238:6;1264:10;:31;1278:17;1264:31;;1256:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1342:11;1338:198;;;1374:58;1389:8;1399:4;1405:2;1409:5;1416:4;1422:9;1374:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1453:17:29;1446:24;"
            },
            "methodIdentifiers": {
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "contracts/token/ERC1155721/ERC1155721Inventory.sol": {
        "ERC1155721Inventory": {
          "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": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "fungible",
                  "type": "bool"
                }
              ],
              "name": "CollectionCreated",
              "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"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "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"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "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": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "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": "tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "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": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "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": "nftId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "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": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "batchTransferFrom(address,address,uint256[])": "f3993d11",
              "collectionOf(uint256)": "c7778baa",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isFungible(uint256)": "adebf6f2",
              "name()": "06fdde03",
              "ownerOf(uint256)": "6352211e",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd",
              "totalSupply(uint256)": "bd85b039",
              "transferFrom(address,address,uint256)": "23b872dd",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "contracts/token/ERC1155721/ERC1155721InventoryBurnable.sol": {
        "ERC1155721InventoryBurnable": {
          "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": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "fungible",
                  "type": "bool"
                }
              ],
              "name": "CollectionCreated",
              "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"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "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"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "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": "tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "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": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "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": "nftId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "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": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "batchBurnFrom(address,uint256[])": "f2472965",
              "batchBurnFrom(address,uint256[],uint256[])": "80534934",
              "batchTransferFrom(address,address,uint256[])": "f3993d11",
              "burnFrom(address,uint256,uint256)": "124d91e5",
              "collectionOf(uint256)": "c7778baa",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isFungible(uint256)": "adebf6f2",
              "name()": "06fdde03",
              "ownerOf(uint256)": "6352211e",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd",
              "totalSupply(uint256)": "bd85b039",
              "transferFrom(address,address,uint256)": "23b872dd",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721Inventory.sol": {
        "IERC1155721Inventory": {
          "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": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "fungible",
                  "type": "bool"
                }
              ],
              "name": "CollectionCreated",
              "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"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "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"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "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": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "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": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "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": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "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": "nftId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "batchTransferFrom(address,address,uint256[])": "f3993d11",
              "collectionOf(uint256)": "c7778baa",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isFungible(uint256)": "adebf6f2",
              "ownerOf(uint256)": "6352211e",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryBurnable.sol": {
        "IERC1155721InventoryBurnable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "batchBurnFrom(address,uint256[])": "f2472965",
              "batchBurnFrom(address,uint256[],uint256[])": "80534934",
              "burnFrom(address,uint256,uint256)": "124d91e5"
            }
          }
        }
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryDeliverable.sol": {
        "IERC1155721InventoryDeliverable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeDeliver",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "safeDeliver(address[],uint256[],uint256[],bytes)": "e8ab9ccc"
            }
          }
        }
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryMintable.sol": {
        "IERC1155721InventoryMintable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "batchMint(address,uint256[])": "4684d7e9",
              "mint(address,uint256)": "40c10f19",
              "safeBatchMint(address,uint256[],uint256[],bytes)": "0d6a5bbb",
              "safeMint(address,uint256,bytes)": "8832e6e3",
              "safeMint(address,uint256,uint256,bytes)": "5cfa9297"
            }
          }
        }
      },
      "contracts/token/ERC1155721/mocks/ERC1155721InventoryMock.sol": {
        "ERC1155721InventoryMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IForwarderRegistry",
                  "name": "forwarderRegistry",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "universalForwarder",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collectionMaskLength",
                  "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": false,
                  "internalType": "string",
                  "name": "baseMetadataURI",
                  "type": "string"
                }
              ],
              "name": "BaseMetadataURISet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "fungible",
                  "type": "bool"
                }
              ],
              "name": "CollectionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterRemoved",
              "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"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "addMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "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"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "baseMetadataURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                }
              ],
              "name": "createCollection",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                }
              ],
              "name": "creator",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "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": "tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isMinter",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "forwarder",
                  "type": "address"
                }
              ],
              "name": "isTrustedForwarder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "msgData",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "ret",
                  "type": "bytes"
                }
              ],
              "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": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC20s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "contracts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC721s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeDeliver",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "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": "nftId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "string",
                  "name": "baseMetadataURI_",
                  "type": "string"
                }
              ],
              "name": "setBaseMetadataURI",
              "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": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "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": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60e06040523480156200001157600080fd5b506040516200586338038062005863833981810160405260608110156200003757600080fd5b50805160208083015160409384015184518086018652601781527f45524331313535373231496e76656e746f72794d6f636b0000000000000000008185015285518087018752600381526224a72b60e91b94810194909452600080546001600160a01b031916339081178255965195969395929491928591829189918991889182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606091821b811660a05291901b1660805280158015906200010a575061010081105b6200015c576040805162461bcd60e51b815260206004820152601c60248201527f496e76656e746f72793a2077726f6e67206d61736b206c656e67746800000000604482015290519081900360640190fd5b60c052825162000174906006906020860190620001f5565b5081516200018a906007906020850190620001f5565b505050506200019f81620001a960201b60201c565b50505050620002a1565b6001600160a01b0381166000818152600b6020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200022d576000855562000278565b82601f106200024857805160ff191683800117855562000278565b8280016001018555821562000278579182015b82811115620002785782518255916020019190600101906200025b565b50620002869291506200028a565b5090565b5b808211156200028657600081556001016200028b565b60805160601c60a05160601c60c0516155176200034c600039806113325280611e90528061205e52806120d9528061224f528061255752806129c95280612a3f5280612fc4528061305852806132565280613487528061356d528061376c52806138895280613ccb528061401f52806144c65280614da75250806119d45280614ac352806152c6525080611a0f5280614a885280614b1b528061529c528061532752506155176000f3fe608060405234801561001057600080fd5b50600436106102d25760003560e01c80637e518ec811610186578063bd85b039116100e3578063d0011d9d11610097578063f242432a11610071578063f242432a14611122578063f2fde38b146111ed578063f3993d1114611213576102d2565b8063d0011d9d14610f71578063e8ab9ccc14610f8e578063e985e9c5146110f4576102d2565b8063c4c2bfdc116100c8578063c4c2bfdc14610f2f578063c7778baa14610f37578063c87b56dd14610f54576102d2565b8063bd85b03914610dfe578063c3666c3614610e1b576102d2565b8063986502751161013a578063aa271e1a1161011f578063aa271e1a14610cf5578063adebf6f214610d1b578063b88d4fde14610d38576102d2565b80639865027514610cbf578063a22cb46514610cc7576102d2565b80638da5cb5b1161016b5780638da5cb5b14610c8957806395d89b4114610c91578063983b2d5614610c99576102d2565b80637e518ec814610b945780638832e6e314610c04576102d2565b806342842e0e116102345780635b2bd79e116101e85780636352211e116101cd5780636352211e14610a3d57806370a0823114610a5a57806373c8a95814610a80576102d2565b80635b2bd79e146109a95780635cfa9297146109b1576102d2565b80634e1273f4116102195780634e1273f414610854578063510b515814610966578063572b6c0514610983576102d2565b806342842e0e1461079e5780634684d7e9146107d4576102d2565b80630d6a5bbb1161028b57806323b872dd1161027057806323b872dd146105755780632eb2c2d6146105ab57806340c10f1914610772576102d2565b80630d6a5bbb146104345780630e89341c14610558576102d2565b806306fdde03116102bc57806306fdde0314610350578063081812fc146103cd578063095ea7b314610406576102d2565b8062fdd58e146102d757806301ffc9a714610315575b600080fd5b610303600480360360408110156102ed57600080fd5b506001600160a01b0381351690602001356112cf565b60408051918252519081900360200190f35b61033c6004803603602081101561032b57600080fd5b50356001600160e01b0319166113bb565b604080519115158252519081900360200190f35b610358611401565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039257818101518382015260200161037a565b50505050905090810190601f1680156103bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ea600480360360208110156103e357600080fd5b5035611498565b604080516001600160a01b039092168252519081900360200190f35b6104326004803603604081101561041c57600080fd5b506001600160a01b038135169060200135611537565b005b6104326004803603608081101561044a57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561047557600080fd5b82018360208201111561048757600080fd5b803590602001918460208302840111640100000000831117156104a957600080fd5b9193909290916020810190356401000000008111156104c757600080fd5b8201836020820111156104d957600080fd5b803590602001918460208302840111640100000000831117156104fb57600080fd5b91939092909160208101903564010000000081111561051957600080fd5b82018360208201111561052b57600080fd5b8035906020019184600183028401116401000000008311171561054d57600080fd5b509092509050611733565b6103586004803603602081101561056e57600080fd5b50356117ee565b6104326004803603606081101561058b57600080fd5b506001600160a01b038135811691602081013590911690604001356117f9565b610432600480360360a08110156105c157600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156105f557600080fd5b82018360208201111561060757600080fd5b8035906020019184602083028401116401000000008311171561062957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561067957600080fd5b82018360208201111561068b57600080fd5b803590602001918460208302840111640100000000831117156106ad57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156106fd57600080fd5b82018360208201111561070f57600080fd5b8035906020019184600183028401116401000000008311171561073157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061181b945050505050565b6104326004803603604081101561078857600080fd5b506001600160a01b03813516906020013561182f565b610432600480360360608110156107b457600080fd5b506001600160a01b0381358116916020810135909116906040013561185a565b610432600480360360408110156107ea57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561081557600080fd5b82018360208201111561082757600080fd5b8035906020019184602083028401116401000000008311171561084957600080fd5b509092509050611877565b6109166004803603604081101561086a57600080fd5b81019060208101813564010000000081111561088557600080fd5b82018360208201111561089757600080fd5b803590602001918460208302840111640100000000831117156108b957600080fd5b9193909290916020810190356401000000008111156108d757600080fd5b8201836020820111156108e957600080fd5b8035906020019184602083028401116401000000008311171561090b57600080fd5b5090925090506118bf565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561095257818101518382015260200161093a565b505050509050019250505060405180910390f35b6103ea6004803603602081101561097c57600080fd5b50356119c5565b61033c6004803603602081101561099957600080fd5b50356001600160a01b03166119d0565b610358611a49565b610432600480360360808110156109c757600080fd5b6001600160a01b0382351691602081013591604082013591908101906080810160608201356401000000008111156109fe57600080fd5b820183602082011115610a1057600080fd5b80359060200191846001830284011164010000000083111715610a3257600080fd5b509092509050611ad7565b6103ea60048036036020811015610a5357600080fd5b5035611b24565b61030360048036036020811015610a7057600080fd5b50356001600160a01b0316611b2f565b61043260048036036060811015610a9657600080fd5b810190602081018135640100000000811115610ab157600080fd5b820183602082011115610ac357600080fd5b80359060200191846020830284011164010000000083111715610ae557600080fd5b919390929091602081019035640100000000811115610b0357600080fd5b820183602082011115610b1557600080fd5b80359060200191846020830284011164010000000083111715610b3757600080fd5b919390929091602081019035640100000000811115610b5557600080fd5b820183602082011115610b6757600080fd5b80359060200191846020830284011164010000000083111715610b8957600080fd5b509092509050611ba8565b61043260048036036020811015610baa57600080fd5b810190602081018135640100000000811115610bc557600080fd5b820183602082011115610bd757600080fd5b80359060200191846001830284011164010000000083111715610bf957600080fd5b509092509050611c9a565b61043260048036036060811015610c1a57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135640100000000811115610c4a57600080fd5b820183602082011115610c5c57600080fd5b80359060200191846001830284011164010000000083111715610c7e57600080fd5b509092509050611d16565b6103ea611d6b565b610358611d7a565b61043260048036036020811015610caf57600080fd5b50356001600160a01b0316611ddb565b610432611df2565b61043260048036036040811015610cdd57600080fd5b506001600160a01b0381351690602001351515611e50565b61033c60048036036020811015610d0b57600080fd5b50356001600160a01b0316611e5a565b61033c60048036036020811015610d3157600080fd5b5035611e6f565b61043260048036036080811015610d4e57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846001830284011164010000000083111715610dbd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611e7a945050505050565b61030360048036036020811015610e1457600080fd5b5035611e88565b61043260048036036060811015610e3157600080fd5b810190602081018135640100000000811115610e4c57600080fd5b820183602082011115610e5e57600080fd5b80359060200191846020830284011164010000000083111715610e8057600080fd5b919390929091602081019035640100000000811115610e9e57600080fd5b820183602082011115610eb057600080fd5b80359060200191846020830284011164010000000083111715610ed257600080fd5b919390929091602081019035640100000000811115610ef057600080fd5b820183602082011115610f0257600080fd5b80359060200191846020830284011164010000000083111715610f2457600080fd5b509092509050611eff565b610358612047565b61030360048036036020811015610f4d57600080fd5b5035612056565b61035860048036036020811015610f6a57600080fd5b50356120fd565b61043260048036036020811015610f8757600080fd5b5035612172565b61043260048036036080811015610fa457600080fd5b810190602081018135640100000000811115610fbf57600080fd5b820183602082011115610fd157600080fd5b80359060200191846020830284011164010000000083111715610ff357600080fd5b91939092909160208101903564010000000081111561101157600080fd5b82018360208201111561102357600080fd5b8035906020019184602083028401116401000000008311171561104557600080fd5b91939092909160208101903564010000000081111561106357600080fd5b82018360208201111561107557600080fd5b8035906020019184602083028401116401000000008311171561109757600080fd5b9193909290916020810190356401000000008111156110b557600080fd5b8201836020820111156110c757600080fd5b803590602001918460018302840111640100000000831117156110e957600080fd5b509092509050612186565b61033c6004803603604081101561110a57600080fd5b506001600160a01b03813581169160200135166121a1565b610432600480360360a081101561113857600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561117857600080fd5b82018360208201111561118a57600080fd5b803590602001918460018302840111640100000000831117156111ac57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506121b4945050505050565b6104326004803603602081101561120357600080fd5b50356001600160a01b031661239b565b6104326004803603606081101561122957600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561125d57600080fd5b82018360208201111561126f57600080fd5b8035906020019184602083028401116401000000008311171561129157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612401945050505050565b60006001600160a01b03831661132c576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b611356827f000000000000000000000000000000000000000000000000000000000000000061270a565b15611390576000828152600460205260409020546001600160a01b03848116911614611383576000611386565b60015b60ff1690506113b5565b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b031982167f510b51580000000000000000000000000000000000000000000000000000000014806113f957506113f98261274c565b90505b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561148d5780601f106114625761010080835404028352916020019161148d565b820191906000526020600020905b81548152906001019060200180831161147057829003601f168201915b505050505090505b90565b6000818152600460205260408120546001600160a01b038116611502576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b600160a01b81161561152d5750506000818152600960205260409020546001600160a01b03166113fc565b60009150506113fc565b60008181526004602052604090205480611598576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b806001600160a01b0384811690821614156115fa576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a2073656c662d617070726f76616c0000000000000000604482015290519081900360640190fd5b61160b816116066127f2565b6127fc565b61165c576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b6001600160a01b03841661169657600160a01b8216156116915760008381526004602052604090206001600160a01b03821690555b6116ec565b600160a01b82178083146116b65760008481526004602052604090208190555b506000838152600960205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b61174361173e6127f2565b612848565b6117e58787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a0181900481028201810190925288815292508891508790819084018382808284376000920191909152506128b592505050565b50505050505050565b60606113f982612c58565b611816838383604051806020016040528060008152506000612d2b565b505050565b6118288585858585612e99565b5050505050565b61183a61173e6127f2565b61185682826040518060200160405280600081525060006131f5565b5050565b611816838383604051806020016040528060008152506001612d2b565b61188261173e6127f2565b611816838383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133ba92505050565b6060838214611915576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60008467ffffffffffffffff8111801561192e57600080fd5b50604051908082528060200260200182016040528015611958578160200160208202803683370190505b50905060005b8086146119bb5761199c87878381811061197457fe5b905060200201356001600160a01b031686868481811061199057fe5b905060200201356112cf565b8282815181106119a857fe5b602090810291909101015260010161195e565b5095945050505050565b60006113f982613764565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806113f957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b600a805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611acf5780601f10611aa457610100808354040283529160200191611acf565b820191906000526020600020905b815481529060010190602001808311611ab257829003601f168201915b505050505081565b611ae261173e6127f2565b61182885858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506137fe92505050565b60006113f98261396a565b60006001600160a01b038216611b8c576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b506001600160a01b031660009081526008602052604090205490565b611bb8611bb36127f2565b6139d4565b848381148015611bc757508082145b611c18576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611c9057611c88888883818110611c3157fe5b905060200201356001600160a01b0316858584818110611c4d57fe5b90506020020135888885818110611c6057fe5b905060200201356001600160a01b03166001600160a01b0316613a989092919063ffffffff16565b600101611c1b565b5050505050505050565b611ca5611bb36127f2565b611cb1600a8383615418565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b611d2161173e6127f2565b611d65848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506131f5915050565b50505050565b6000546001600160a01b031690565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561148d5780601f106114625761010080835404028352916020019161148d565b611de6611bb36127f2565b611def81613b18565b50565b6000611dfc6127f2565b9050611e0781612848565b6001600160a01b0381166000818152600b6020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b6118568282613b64565b600b6020526000908152604090205460ff1681565b60006113f982613c45565b611d65848484846001612d2b565b6000611eb4827f000000000000000000000000000000000000000000000000000000000000000061270a565b15611eea576000828152600460205260409020546001600160a01b031615611edd576001611ee0565b60005b60ff1690506113fc565b506000818152600360205260409020546113fc565b611f0a611bb36127f2565b848381148015611f1957508082145b611f6a576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611c9057858582818110611f8057fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a85818110611fab57fe5b905060200201356001600160a01b0316878786818110611fc757fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561202457600080fd5b505af1158015612038573d6000803e3d6000fd5b50505050806001019050611f6d565b6060612051613c6b565b905090565b6000612082827f000000000000000000000000000000000000000000000000000000000000000061270a565b6120d3576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a206e6f7420616e204e46540000000000000000000000604482015290519081900360640190fd5b6113f9827f0000000000000000000000000000000000000000000000000000000000000000613caf565b6000818152600460205260409020546060906001600160a01b0316612169576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b6113f9826117ee565b61217d611bb36127f2565b611def81613cc5565b61219161173e6127f2565b611c908888888888888888613e27565b60006121ad838361419a565b9392505050565b60006121be6127f2565b90506001600160a01b03851661221b576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b600061222787836127fc565b905061223285613c45565b156122495761224487878787856141c8565b61231a565b612273857f000000000000000000000000000000000000000000000000000000000000000061270a565b156122cd576122878787878785600061433b565b84866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461231a565b6040805162461bcd60e51b815260206004820152601960248201527f496e76656e746f72793a206e6f74206120746f6b656e20696400000000000000604482015290519081900360640190fd5b856001600160a01b0316876001600160a01b0316836001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051808381526020018281526020019250505060405180910390a4612389866001600160a01b03166144f1565b156117e5576117e587878787876144f7565b6123a6611bb36127f2565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b03821661245c576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b60006124666127f2565b9050600061247485836127fc565b835190915060008167ffffffffffffffff8111801561249257600080fd5b506040519080825280602002602001820160405280156124bc578160200160208202803683370190505b50905060008060005b8481146125be5760008882815181106124da57fe5b6020026020010151905060018583815181106124f257fe5b60200260200101818152505061250e8b8b8360018b600161433b565b808a6001600160a01b03168c6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4600061257b827f0000000000000000000000000000000000000000000000000000000000000000613caf565b90508461258e57809450600193506125b4565b8481146125ad576125a18c8c8787614681565b809450600193506125b4565b8360010193505b50506001016124c5565b5081156125dc576125d189898484614681565b6125dc8989866146d5565b876001600160a01b0316896001600160a01b03166125f86127f2565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a87604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612668578181015183820152602001612650565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156126a757818101518382015260200161268f565b5050505090500194505050505060405180910390a46126ce886001600160a01b03166144f1565b80156126de57506126de88614720565b156126ff576126ff89898986604051806020016040528060008152506147e8565b505050505050505050565b60007f80000000000000000000000000000000000000000000000000000000000000008316158015906121ad575061274182614966565b909216151592915050565b60006001600160e01b031982167f80ac58cd0000000000000000000000000000000000000000000000000000000014806127af57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806127e357506001600160e01b031982167ff3993d1100000000000000000000000000000000000000000000000000000000145b806113f957506113f982614977565b6000612051614a78565b6000816001600160a01b0316836001600160a01b031614806121ad5750506001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6001600160a01b0381166000908152600b602052604090205460ff16611def576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416612910576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b825182518114612967576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b6000806000805b848114612b0657600088828151811061298357fe5b60200260200101519050600088838151811061299b57fe5b602002602001015190506129ae82613c45565b156129c3576129be8b8383614bd8565b612afc565b6129ed827f000000000000000000000000000000000000000000000000000000000000000061270a565b156122cd576129ff8b83836001614cca565b60405182906001600160a01b038d16906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46000612a63837f0000000000000000000000000000000000000000000000000000000000000000613caf565b905086612a765780965060019550612afa565b868114612af357856002600089815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008282540192505081905550856003600089815260200190815260200160002060008282540192505081905550809650858501945060019550612afa565b8560010195505b505b505060010161296e565b508215612b5b5760008381526002602090815260408083206001600160a01b038c1680855290835281842080548701905586845260038352818420805487019055835260089091529020805491830191820190555b6001600160a01b0388166000612b6f6127f2565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a8a604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612bdf578181015183820152602001612bc7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612c1e578181015183820152602001612c06565b5050505090500194505050505060405180910390a4612c45886001600160a01b03166144f1565b15611c9057611c906000898989896147e8565b6060600a612c6583614e1a565b6040516020018083805460018160011615610100020316600290048015612cc35780601f10612ca1576101008083540402835291820191612cc3565b820191906000526020600020905b815481529060010190602001808311612caf575b5050825160208401908083835b60208310612cef5780518252601f199092019160209182019101612cd0565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b6001600160a01b038416612d86576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b6000612d906127f2565b90506000612d9e87836127fc565b9050612db0878787600185600061433b565b84866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4856001600160a01b0316876001600160a01b0316836001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62886001604051808381526020018281526020019250505060405180910390a4612e61866001600160a01b03166144f1565b156117e557612e6f86614720565b15612e8757612e828787876001886144f7565b6117e5565b82156117e5576117e587878787614f29565b6001600160a01b038416612ef4576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b825182518114612f4b576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b6000612f556127f2565b90506000612f6388836127fc565b90506000806000805b8681146130c45760008a8281518110612f8157fe5b60200260200101519050612f9481613c45565b15612fbe57612fb98d8d838d8681518110612fab57fe5b60200260200101518a6141c8565b6130bb565b612fe8817f000000000000000000000000000000000000000000000000000000000000000061270a565b156122cd5761300f8d8d838d8681518110612fff57fe5b60200260200101518a600161433b565b808c6001600160a01b03168e6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4600061307c827f0000000000000000000000000000000000000000000000000000000000000000613caf565b90508561308f57809550600194506130b9565b8581146130b2576130a28e8e8888614681565b94506001939290920191846130b9565b8460010194505b505b50600101612f6c565b5082156130e4576130d78b8b8585614681565b81016130e48b8b836146d5565b896001600160a01b03168b6001600160a01b03166131006127f2565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015613170578181015183820152602001613158565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156131af578181015183820152602001613197565b5050505090500194505050505060405180910390a46131d68a6001600160a01b03166144f1565b156131e8576131e88b8b8b8b8b6147e8565b5050505050505050505050565b6001600160a01b038416613250576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b61327a837f000000000000000000000000000000000000000000000000000000000000000061270a565b6132cb576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a206e6f7420616e204e46540000000000000000000000604482015290519081900360640190fd5b6132d9848460016000614cca565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46001600160a01b03841660006133256127f2565b6001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62866001604051808381526020018281526020019250505060405180910390a4613380846001600160a01b03166144f1565b15611d655761338e84614720565b156133a7576133a2600085856001866144f7565b611d65565b8015611d6557611d656000858585614f29565b6001600160a01b038216613415576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b805160008167ffffffffffffffff8111801561343057600080fd5b5060405190808252806020026020018201604052801561345a578160200160208202803683370190505b50905060008060005b84811461360057600086828151811061347857fe5b602002602001015190506134b57f00000000000000000000000000000000000000000000000000000000000000008261270a90919063ffffffff16565b613506576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a206e6f7420616e204e46540000000000000000000000604482015290519081900360640190fd5b600185838151811061351457fe5b60200260200101818152505061352d8882600180614cca565b60405181906001600160a01b038a16906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46000613591827f0000000000000000000000000000000000000000000000000000000000000000613caf565b9050846135a457809450600193506135f6565b8481146135ef5760008581526002602090815260408083206001600160a01b038d168452825280832080548801905596825260039052949094208054909301909255600191836135f6565b8360010193505b5050600101613463565b5060008281526002602090815260408083206001600160a01b038a168085529083528184208054860190558584526003835281842080548601905580845260089092528220805487019055906136546127f2565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8887604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156136c45781810151838201526020016136ac565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156137035781810151838201526020016136eb565b5050505090500194505050505060405180910390a461372a866001600160a01b03166144f1565b801561373a575061373a86614720565b1561375c5761375c6000878786604051806020016040528060008152506147e8565b505050505050565b6000613790827f000000000000000000000000000000000000000000000000000000000000000061270a565b156137e2576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b506000908152600560205260409020546001600160a01b031690565b6001600160a01b038416613859576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b60006138636127f2565b905061386e84613c45565b156138835761387e858585614bd8565b6138f8565b6138ad847f000000000000000000000000000000000000000000000000000000000000000061270a565b156122cd576138bf8585856000614cca565b60405184906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45b604080518581526020810185905281516001600160a01b0380891693600093918616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4613957856001600160a01b03166144f1565b15611828576118286000868686866144f7565b6000818152600460205260408120546001600160a01b0381166113f9576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015613a0d57600080fd5b505afa158015613a21573d6000803e3d6000fd5b505050506040513d6020811015613a3757600080fd5b50516001600160a01b03828116911614611def576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526118169084906150ab565b6001600160a01b0381166000818152600b6020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6000613b6e6127f2565b9050806001600160a01b0316836001600160a01b03161415613bd7576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a2073656c662d617070726f76616c0000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260016020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b7f8000000000000000000000000000000000000000000000000000000000000000161590565b6060613c7561528e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b6000613cba82614966565b198316905092915050565b613cef817f000000000000000000000000000000000000000000000000000000000000000061270a565b15613d41576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b031615613dab576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206578697374696e6720636f6c6c656374696f6e0000604482015290519081900360640190fd5b613db36127f2565b6000828152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055613df581613c45565b1515817f4ebf8ad0df535ba5e487bc9cb27fe44120ca81c3a95d3eba79c0bd1df2ab2d5d60405160405180910390a350565b868581148015613e3657508084145b613e87576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b6000613e916127f2565b905060005b8281146131e85760008b8b83818110613eab57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415613f25576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b60008a8a84818110613f3357fe5b9050602002013590506000898985818110613f4a57fe5b905060200201359050613f5c82613c45565b1561401957613f6c838383614bd8565b604080518381526020810183905281516001600160a01b0380871693600093918a16927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4613fcb836001600160a01b03166144f1565b156140145761401460008484848c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506144f792505050565b61418c565b614043827f000000000000000000000000000000000000000000000000000000000000000061270a565b156122cd576140558383836000614cca565b60405182906001600160a01b038516906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4604080518381526001602082015281516001600160a01b0380871693600093918a16927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a46140ec836001600160a01b03166144f1565b15614014576140fa83614720565b15614149576141446000848460018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506144f792505050565b614014565b614014600084848b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250614f2992505050565b505050806001019050613e96565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b8061421a576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b8161426c576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b0389168452909152902054828110156142e4576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b846001600160a01b0316866001600160a01b03161461375c5760009384526002602090815260408086206001600160a01b039889168752909152808520918490039091559390941682529190208054909101905550565b82600114614390576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000848152600460205260409020546001600160a01b03878116908216146143ff576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a206e6f6e2d6f776e6564204e46540000000000000000604482015290519081900360640190fd5b8261449057600160a01b81161580159061443f57506000858152600960205260409020546001600160a01b03166144346127f2565b6001600160a01b0316145b614490576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b60008581526004602052604090206001600160a01b0387169055816117e5576144bb878760016146d5565b6117e587876144ea887f0000000000000000000000000000000000000000000000000000000000000000613caf565b6001614681565b3b151590565b7ff23a6e61000000000000000000000000000000000000000000000000000000006001600160a01b03851663f23a6e6161452f6127f2565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156145a9578181015183820152602001614591565b50505050905090810190601f1680156145d65780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1580156145f957600080fd5b505af115801561460d573d6000803e3d6000fd5b505050506040513d602081101561462357600080fd5b50516001600160e01b03191614611828576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b031614611d655760009182526002602090815260408084206001600160a01b039687168552909152808320805483900390559290931681522080549091019055565b816001600160a01b0316836001600160a01b031614611816576001600160a01b0380841660009081526008602052604080822080548590039055918416815220805482019055505050565b604080517f4e2312e0000000000000000000000000000000000000000000000000000000006024808301919091528251808303909101815260449091018252602081810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001781528251935160008082529485948594909392908183858b612710fa955080519450505050609e5a116147d557fe5b8280156147df5750815b95945050505050565b7fbc197c81000000000000000000000000000000000000000000000000000000006001600160a01b03851663bc197c816148206127f2565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015614899578181015183820152602001614881565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156148d85781810151838201526020016148c0565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156149145781810151838201526020016148fc565b50505050905090810190601f1680156149415780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b1580156145f957600080fd5b6001610100919091031b6000190190565b60006001600160e01b031982167f01ffc9a70000000000000000000000000000000000000000000000000000000014806149da57506001600160e01b031982167fd9b67a2600000000000000000000000000000000000000000000000000000000145b80614a0e57506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b80614a4257506001600160e01b031982167f09ce5c4600000000000000000000000000000000000000000000000000000000145b806113f95750506001600160e01b0319167fbd85b039000000000000000000000000000000000000000000000000000000001490565b60003381614a846153f1565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480614af757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15614b055791506114959050565b6001600160a01b0382163214801590614bc457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015614b9757600080fd5b505afa158015614bab573d6000803e3d6000fd5b505050506040513d6020811015614bc157600080fd5b50515b15614bd25791506114959050565b50905090565b80614c2a576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b600082815260036020526040902054818101818111614c90576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a20737570706c79206f766572666c6f77000000000000604482015290519081900360640190fd5b600093845260036020908152604080862092909255600281528185206001600160a01b039096168552949094525091902080549091019055565b81600114614d1f576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b60008381526004602052604090205415614d80576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206578697374696e672f6275726e74204e4654000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b038516905580611d65576000614dcb847f0000000000000000000000000000000000000000000000000000000000000000613caf565b600090815260036020908152604080832080546001908101909155600283528184206001600160a01b038a16855283528184208054820190556008909252909120805490910190555050505050565b606081614e5b575060408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201526113fc565b8160005b8115614e7357600101600a82049150614e5f565b60008167ffffffffffffffff81118015614e8c57600080fd5b506040519080825280601f01601f191660200182016040528015614eb7576020820181803683370190505b50859350905060001982015b8315614f2057600a840660300160f81b82828060019003935081518110614ee657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350614ec3565b50949350505050565b7f150b7a02000000000000000000000000000000000000000000000000000000006001600160a01b03841663150b7a02614f616127f2565b8786866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614fd4578181015183820152602001614fbc565b50505050905090810190601f1680156150015780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561502357600080fd5b505af1158015615037573d6000803e3d6000fd5b505050506040513d602081101561504d57600080fd5b50516001600160e01b03191614611d65576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b816150be6001600160a01b0382166144f1565b61510f576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b6020831061514c5780518252601f19909201916020918201910161512d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146151ae576040519150601f19603f3d011682016040523d82523d6000602084013e6151b3565b606091505b509150915081156152325780511561522d578080602001905160208110156151da57600080fd5b505161522d576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b611828565b8051615285576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168114806152fa57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b15615311576153076153fd565b92509250506153ed565b6001600160a01b03811632148015906153d757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d661535c6153f1565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156153aa57600080fd5b505afa1580156153be573d6000803e3d6000fd5b505050506040513d60208110156153d457600080fd5b50515b156153e4576153076153fd565b60003692509250505b9091565b60131936013560601c90565b36600061541060131983018284816154b9565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261544e5760008555615494565b82601f106154675782800160ff19823516178555615494565b82800160010185558215615494579182015b82811115615494578235825591602001919060010190615479565b506154a09291506154a4565b5090565b5b808211156154a057600081556001016154a5565b600080858511156154c8578182fd5b838611156154d4578182fd5b505082019391909203915056fea26469706673582212201ec673f522d365cb03ef00609e37097c7fef6c01c2230726dd996a70d48f939064736f6c63430007060033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x5863 CODESIZE SUB DUP1 PUSH3 0x5863 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD DUP1 DUP7 ADD DUP7 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH32 0x45524331313535373231496E76656E746F72794D6F636B000000000000000000 DUP2 DUP6 ADD MSTORE DUP6 MLOAD DUP1 DUP8 ADD DUP8 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x24A72B PUSH1 0xE9 SHL SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE SWAP7 MLOAD SWAP6 SWAP7 SWAP4 SWAP6 SWAP3 SWAP5 SWAP2 SWAP3 DUP6 SWAP2 DUP3 SWAP2 DUP10 SWAP2 DUP10 SWAP2 DUP9 SWAP2 DUP3 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0x80 MSTORE DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH3 0x10A JUMPI POP PUSH2 0x100 DUP2 LT JUMPDEST PUSH3 0x15C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67206D61736B206C656E67746800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xC0 MSTORE DUP3 MLOAD PUSH3 0x174 SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP7 ADD SWAP1 PUSH3 0x1F5 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x18A SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x1F5 JUMP JUMPDEST POP POP POP POP PUSH3 0x19F DUP2 PUSH3 0x1A9 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP POP PUSH3 0x2A1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x22D JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x278 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x248 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x278 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x278 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x278 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x25B JUMP JUMPDEST POP PUSH3 0x286 SWAP3 SWAP2 POP PUSH3 0x28A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x286 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x28B JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH2 0x5517 PUSH3 0x34C PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1332 MSTORE DUP1 PUSH2 0x1E90 MSTORE DUP1 PUSH2 0x205E MSTORE DUP1 PUSH2 0x20D9 MSTORE DUP1 PUSH2 0x224F MSTORE DUP1 PUSH2 0x2557 MSTORE DUP1 PUSH2 0x29C9 MSTORE DUP1 PUSH2 0x2A3F MSTORE DUP1 PUSH2 0x2FC4 MSTORE DUP1 PUSH2 0x3058 MSTORE DUP1 PUSH2 0x3256 MSTORE DUP1 PUSH2 0x3487 MSTORE DUP1 PUSH2 0x356D MSTORE DUP1 PUSH2 0x376C MSTORE DUP1 PUSH2 0x3889 MSTORE DUP1 PUSH2 0x3CCB MSTORE DUP1 PUSH2 0x401F MSTORE DUP1 PUSH2 0x44C6 MSTORE DUP1 PUSH2 0x4DA7 MSTORE POP DUP1 PUSH2 0x19D4 MSTORE DUP1 PUSH2 0x4AC3 MSTORE DUP1 PUSH2 0x52C6 MSTORE POP DUP1 PUSH2 0x1A0F MSTORE DUP1 PUSH2 0x4A88 MSTORE DUP1 PUSH2 0x4B1B MSTORE DUP1 PUSH2 0x529C MSTORE DUP1 PUSH2 0x5327 MSTORE POP PUSH2 0x5517 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 0x2D2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E518EC8 GT PUSH2 0x186 JUMPI DUP1 PUSH4 0xBD85B039 GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0xD0011D9D GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xF242432A GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x1122 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x11ED JUMPI DUP1 PUSH4 0xF3993D11 EQ PUSH2 0x1213 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0xD0011D9D EQ PUSH2 0xF71 JUMPI DUP1 PUSH4 0xE8AB9CCC EQ PUSH2 0xF8E JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x10F4 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0xC4C2BFDC GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0xF2F JUMPI DUP1 PUSH4 0xC7778BAA EQ PUSH2 0xF37 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0xF54 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0xBD85B039 EQ PUSH2 0xDFE JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xE1B JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x98650275 GT PUSH2 0x13A JUMPI DUP1 PUSH4 0xAA271E1A GT PUSH2 0x11F JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xCF5 JUMPI DUP1 PUSH4 0xADEBF6F2 EQ PUSH2 0xD1B JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0xD38 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x98650275 EQ PUSH2 0xCBF JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0xCC7 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x16B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xC89 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xC91 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0xC99 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0xB94 JUMPI DUP1 PUSH4 0x8832E6E3 EQ PUSH2 0xC04 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x42842E0E GT PUSH2 0x234 JUMPI DUP1 PUSH4 0x5B2BD79E GT PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x6352211E GT PUSH2 0x1CD JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0xA3D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xA5A JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0xA80 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x9A9 JUMPI DUP1 PUSH4 0x5CFA9297 EQ PUSH2 0x9B1 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x219 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x854 JUMPI DUP1 PUSH4 0x510B5158 EQ PUSH2 0x966 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x983 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x42842E0E EQ PUSH2 0x79E JUMPI DUP1 PUSH4 0x4684D7E9 EQ PUSH2 0x7D4 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0xD6A5BBB GT PUSH2 0x28B JUMPI DUP1 PUSH4 0x23B872DD GT PUSH2 0x270 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x575 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x5AB JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x772 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0xD6A5BBB EQ PUSH2 0x434 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x558 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 GT PUSH2 0x2BC JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x350 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x406 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x315 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x303 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x33C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x13BB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x358 PUSH2 0x1401 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x392 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x37A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3BF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1537 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x487 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x52B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1733 JUMP JUMPDEST PUSH2 0x358 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x17EE JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x17F9 JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x5C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x629 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x68B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x70F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x181B SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x182F JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x7B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x185A JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x815 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x849 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1877 JUMP JUMPDEST PUSH2 0x916 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x86A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x885 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x897 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x8B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x90B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x18BF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x952 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x93A JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x97C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x19C5 JUMP JUMPDEST PUSH2 0x33C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x999 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19D0 JUMP JUMPDEST PUSH2 0x358 PUSH2 0x1A49 JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x9C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1AD7 JUMP JUMPDEST PUSH2 0x3EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B24 JUMP JUMPDEST PUSH2 0x303 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B2F JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xAB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xAE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1BA8 JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1C9A JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xC7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1D16 JUMP JUMPDEST PUSH2 0x3EA PUSH2 0x1D6B JUMP JUMPDEST PUSH2 0x358 PUSH2 0x1D7A JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DDB JUMP JUMPDEST PUSH2 0x432 PUSH2 0x1DF2 JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1E50 JUMP JUMPDEST PUSH2 0x33C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E5A JUMP JUMPDEST PUSH2 0x33C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E6F JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xD4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xDBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1E7A SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x303 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E88 JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xE31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xE4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xE80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xE9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xEB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xED2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xEF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xF24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1EFF JUMP JUMPDEST PUSH2 0x358 PUSH2 0x2047 JUMP JUMPDEST PUSH2 0x303 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2056 JUMP JUMPDEST PUSH2 0x358 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x20FD JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2172 JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xFA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xFBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1011 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1023 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1045 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1075 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1097 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x10B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x10E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2186 JUMP JUMPDEST PUSH2 0x33C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x110A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x21A1 JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x118A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x11AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x21B4 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x239B JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x125D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x126F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x2401 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x132C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2061646472657373000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1356 DUP3 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x1390 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0x1383 JUMPI PUSH1 0x0 PUSH2 0x1386 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x13B5 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x510B515800000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x13F9 JUMPI POP PUSH2 0x13F9 DUP3 PUSH2 0x274C JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x148D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1462 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x148D 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 0x1470 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1502 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO PUSH2 0x152D JUMPI POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13FC JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x13FC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x1598 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP1 DUP3 AND EQ ISZERO PUSH2 0x15FA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2073656C662D617070726F76616C0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x160B DUP2 PUSH2 0x1606 PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x27FC JUMP JUMPDEST PUSH2 0x165C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1696 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0x1691 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SSTORE JUMPDEST PUSH2 0x16EC JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0x16B6 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE JUMPDEST DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1743 PUSH2 0x173E PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x2848 JUMP JUMPDEST PUSH2 0x17E5 DUP8 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP12 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP11 DUP3 MSTORE SWAP1 SWAP4 POP DUP11 SWAP3 POP DUP10 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F DUP11 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP9 DUP2 MSTORE SWAP3 POP DUP9 SWAP2 POP DUP8 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x28B5 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x13F9 DUP3 PUSH2 0x2C58 JUMP JUMPDEST PUSH2 0x1816 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x2D2B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1828 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2E99 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x183A PUSH2 0x173E PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x1856 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x31F5 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1816 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x2D2B JUMP JUMPDEST PUSH2 0x1882 PUSH2 0x173E PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x1816 DUP4 DUP4 DUP4 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x33BA SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP3 EQ PUSH2 0x1915 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x192E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1958 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP1 DUP7 EQ PUSH2 0x19BB JUMPI PUSH2 0x199C DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x1974 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x1990 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x12CF JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x19A8 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x195E JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F9 DUP3 PUSH2 0x3764 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x13F9 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1ACF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1AA4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1ACF 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 0x1AB2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0x1AE2 PUSH2 0x173E PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x1828 DUP6 DUP6 DUP6 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x37FE SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F9 DUP3 PUSH2 0x396A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1B8C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2061646472657373000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1BB8 PUSH2 0x1BB3 PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x39D4 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1BC7 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1C18 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1C90 JUMPI PUSH2 0x1C88 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x1C31 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1C4D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1C60 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3A98 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1C1B JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1CA5 PUSH2 0x1BB3 PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x1CB1 PUSH1 0xA DUP4 DUP4 PUSH2 0x5418 JUMP JUMPDEST POP PUSH32 0x4B1DC5C136A3CE9FDED8DB0CE3D3366C58764EC3A8E4C2B9E52E4DDFE5EBBF7 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG1 POP POP JUMP JUMPDEST PUSH2 0x1D21 PUSH2 0x173E PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x1D65 DUP5 DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH1 0x1 SWAP3 POP PUSH2 0x31F5 SWAP2 POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x148D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1462 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x148D JUMP JUMPDEST PUSH2 0x1DE6 PUSH2 0x1BB3 PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x1DEF DUP2 PUSH2 0x3B18 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DFC PUSH2 0x27F2 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E07 DUP2 PUSH2 0x2848 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x1856 DUP3 DUP3 PUSH2 0x3B64 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F9 DUP3 PUSH2 0x3C45 JUMP JUMPDEST PUSH2 0x1D65 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x2D2B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EB4 DUP3 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x1EEA JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1EDD JUMPI PUSH1 0x1 PUSH2 0x1EE0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x13FC JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x13FC JUMP JUMPDEST PUSH2 0x1F0A PUSH2 0x1BB3 PUSH2 0x27F2 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1F19 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1F6A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1C90 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x1F80 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x1FAB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x1FC7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2024 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2038 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x1F6D JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2051 PUSH2 0x3C6B JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2082 DUP3 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST PUSH2 0x20D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420616E204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13F9 DUP3 PUSH32 0x0 PUSH2 0x3CAF JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2169 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13F9 DUP3 PUSH2 0x17EE JUMP JUMPDEST PUSH2 0x217D PUSH2 0x1BB3 PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x1DEF DUP2 PUSH2 0x3CC5 JUMP JUMPDEST PUSH2 0x2191 PUSH2 0x173E PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x1C90 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x3E27 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AD DUP4 DUP4 PUSH2 0x419A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21BE PUSH2 0x27F2 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x221B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2227 DUP8 DUP4 PUSH2 0x27FC JUMP JUMPDEST SWAP1 POP PUSH2 0x2232 DUP6 PUSH2 0x3C45 JUMP JUMPDEST ISZERO PUSH2 0x2249 JUMPI PUSH2 0x2244 DUP8 DUP8 DUP8 DUP8 DUP6 PUSH2 0x41C8 JUMP JUMPDEST PUSH2 0x231A JUMP JUMPDEST PUSH2 0x2273 DUP6 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x22CD JUMPI PUSH2 0x2287 DUP8 DUP8 DUP8 DUP8 DUP6 PUSH1 0x0 PUSH2 0x433B JUMP JUMPDEST DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x231A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120746F6B656E20696400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2389 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST ISZERO PUSH2 0x17E5 JUMPI PUSH2 0x17E5 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x44F7 JUMP JUMPDEST PUSH2 0x23A6 PUSH2 0x1BB3 PUSH2 0x27F2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x245C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2466 PUSH2 0x27F2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2474 DUP6 DUP4 PUSH2 0x27FC JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2492 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x24BC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x25BE JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x24DA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x24F2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x250E DUP12 DUP12 DUP4 PUSH1 0x1 DUP12 PUSH1 0x1 PUSH2 0x433B JUMP JUMPDEST DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH2 0x257B DUP3 PUSH32 0x0 PUSH2 0x3CAF JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x258E JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x25B4 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x25AD JUMPI PUSH2 0x25A1 DUP13 DUP13 DUP8 DUP8 PUSH2 0x4681 JUMP JUMPDEST DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x25B4 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x24C5 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x25DC JUMPI PUSH2 0x25D1 DUP10 DUP10 DUP5 DUP5 PUSH2 0x4681 JUMP JUMPDEST PUSH2 0x25DC DUP10 DUP10 DUP7 PUSH2 0x46D5 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x25F8 PUSH2 0x27F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP11 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2668 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2650 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x26A7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x268F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x26CE DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x26DE JUMPI POP PUSH2 0x26DE DUP9 PUSH2 0x4720 JUMP JUMPDEST ISZERO PUSH2 0x26FF JUMPI PUSH2 0x26FF DUP10 DUP10 DUP10 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x47E8 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x21AD JUMPI POP PUSH2 0x2741 DUP3 PUSH2 0x4966 JUMP JUMPDEST SWAP1 SWAP3 AND ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x27AF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x27E3 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xF3993D1100000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x13F9 JUMPI POP PUSH2 0x13F9 DUP3 PUSH2 0x4977 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2051 PUSH2 0x4A78 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x21AD JUMPI POP POP 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1DEF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2910 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x2967 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0x2B06 JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2983 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x299B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x29AE DUP3 PUSH2 0x3C45 JUMP JUMPDEST ISZERO PUSH2 0x29C3 JUMPI PUSH2 0x29BE DUP12 DUP4 DUP4 PUSH2 0x4BD8 JUMP JUMPDEST PUSH2 0x2AFC JUMP JUMPDEST PUSH2 0x29ED DUP3 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x22CD JUMPI PUSH2 0x29FF DUP12 DUP4 DUP4 PUSH1 0x1 PUSH2 0x4CCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x2A63 DUP4 PUSH32 0x0 PUSH2 0x3CAF JUMP JUMPDEST SWAP1 POP DUP7 PUSH2 0x2A76 JUMPI DUP1 SWAP7 POP PUSH1 0x1 SWAP6 POP PUSH2 0x2AFA JUMP JUMPDEST DUP7 DUP2 EQ PUSH2 0x2AF3 JUMPI DUP6 PUSH1 0x2 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x3 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 SWAP7 POP DUP6 DUP6 ADD SWAP5 POP PUSH1 0x1 SWAP6 POP PUSH2 0x2AFA JUMP JUMPDEST DUP6 PUSH1 0x1 ADD SWAP6 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x296E JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x2B5B JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP7 DUP5 MSTORE PUSH1 0x3 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP2 DUP4 ADD SWAP2 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 PUSH2 0x2B6F PUSH2 0x27F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP11 DUP11 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2BDF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2BC7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2C1E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2C06 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2C45 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST ISZERO PUSH2 0x1C90 JUMPI PUSH2 0x1C90 PUSH1 0x0 DUP10 DUP10 DUP10 DUP10 PUSH2 0x47E8 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA PUSH2 0x2C65 DUP4 PUSH2 0x4E1A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2CC3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2CA1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x2CC3 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 0x2CAF JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2CEF JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2CD0 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2D86 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2D90 PUSH2 0x27F2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2D9E DUP8 DUP4 PUSH2 0x27FC JUMP JUMPDEST SWAP1 POP PUSH2 0x2DB0 DUP8 DUP8 DUP8 PUSH1 0x1 DUP6 PUSH1 0x0 PUSH2 0x433B JUMP JUMPDEST DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP9 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2E61 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST ISZERO PUSH2 0x17E5 JUMPI PUSH2 0x2E6F DUP7 PUSH2 0x4720 JUMP JUMPDEST ISZERO PUSH2 0x2E87 JUMPI PUSH2 0x2E82 DUP8 DUP8 DUP8 PUSH1 0x1 DUP9 PUSH2 0x44F7 JUMP JUMPDEST PUSH2 0x17E5 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x17E5 JUMPI PUSH2 0x17E5 DUP8 DUP8 DUP8 DUP8 PUSH2 0x4F29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2EF4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x2F4B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2F55 PUSH2 0x27F2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2F63 DUP9 DUP4 PUSH2 0x27FC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 EQ PUSH2 0x30C4 JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2F81 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x2F94 DUP2 PUSH2 0x3C45 JUMP JUMPDEST ISZERO PUSH2 0x2FBE JUMPI PUSH2 0x2FB9 DUP14 DUP14 DUP4 DUP14 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x2FAB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH2 0x41C8 JUMP JUMPDEST PUSH2 0x30BB JUMP JUMPDEST PUSH2 0x2FE8 DUP2 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x22CD JUMPI PUSH2 0x300F DUP14 DUP14 DUP4 DUP14 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x2FFF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH1 0x1 PUSH2 0x433B JUMP JUMPDEST DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH2 0x307C DUP3 PUSH32 0x0 PUSH2 0x3CAF JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x308F JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x30B9 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x30B2 JUMPI PUSH2 0x30A2 DUP15 DUP15 DUP9 DUP9 PUSH2 0x4681 JUMP JUMPDEST SWAP5 POP PUSH1 0x1 SWAP4 SWAP3 SWAP1 SWAP3 ADD SWAP2 DUP5 PUSH2 0x30B9 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2F6C JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x30E4 JUMPI PUSH2 0x30D7 DUP12 DUP12 DUP6 DUP6 PUSH2 0x4681 JUMP JUMPDEST DUP2 ADD PUSH2 0x30E4 DUP12 DUP12 DUP4 PUSH2 0x46D5 JUMP JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3100 PUSH2 0x27F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP13 DUP13 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3170 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3158 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x31AF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3197 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x31D6 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST ISZERO PUSH2 0x31E8 JUMPI PUSH2 0x31E8 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x47E8 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3250 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x327A DUP4 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST PUSH2 0x32CB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420616E204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x32D9 DUP5 DUP5 PUSH1 0x1 PUSH1 0x0 PUSH2 0x4CCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 PUSH2 0x3325 PUSH2 0x27F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP7 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3380 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST ISZERO PUSH2 0x1D65 JUMPI PUSH2 0x338E DUP5 PUSH2 0x4720 JUMP JUMPDEST ISZERO PUSH2 0x33A7 JUMPI PUSH2 0x33A2 PUSH1 0x0 DUP6 DUP6 PUSH1 0x1 DUP7 PUSH2 0x44F7 JUMP JUMPDEST PUSH2 0x1D65 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1D65 JUMPI PUSH2 0x1D65 PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0x4F29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3415 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x345A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x3600 JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3478 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x34B5 PUSH32 0x0 DUP3 PUSH2 0x270A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3506 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420616E204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3514 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x352D DUP9 DUP3 PUSH1 0x1 DUP1 PUSH2 0x4CCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x3591 DUP3 PUSH32 0x0 PUSH2 0x3CAF JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x35A4 JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x35F6 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x35EF JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 ADD SWAP1 SSTORE SWAP7 DUP3 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP5 SWAP1 SWAP5 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 ADD SWAP1 SWAP3 SSTORE PUSH1 0x1 SWAP2 DUP4 PUSH2 0x35F6 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x3463 JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE DUP6 DUP5 MSTORE PUSH1 0x3 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE DUP1 DUP5 MSTORE PUSH1 0x8 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP1 PUSH2 0x3654 PUSH2 0x27F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP9 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x36C4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x36AC JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3703 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x36EB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x372A DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x373A JUMPI POP PUSH2 0x373A DUP7 PUSH2 0x4720 JUMP JUMPDEST ISZERO PUSH2 0x375C JUMPI PUSH2 0x375C PUSH1 0x0 DUP8 DUP8 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x47E8 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3790 DUP3 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x37E2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3859 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3863 PUSH2 0x27F2 JUMP JUMPDEST SWAP1 POP PUSH2 0x386E DUP5 PUSH2 0x3C45 JUMP JUMPDEST ISZERO PUSH2 0x3883 JUMPI PUSH2 0x387E DUP6 DUP6 DUP6 PUSH2 0x4BD8 JUMP JUMPDEST PUSH2 0x38F8 JUMP JUMPDEST PUSH2 0x38AD DUP5 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x22CD JUMPI PUSH2 0x38BF DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x4CCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP4 PUSH1 0x0 SWAP4 SWAP2 DUP7 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x3957 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST ISZERO PUSH2 0x1828 JUMPI PUSH2 0x1828 PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 PUSH2 0x44F7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x13F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3A21 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1DEF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1816 SWAP1 DUP5 SWAP1 PUSH2 0x50AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B6E PUSH2 0x27F2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3BD7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2073656C662D617070726F76616C0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3C75 PUSH2 0x528E JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CBA DUP3 PUSH2 0x4966 JUMP JUMPDEST NOT DUP4 AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3CEF DUP2 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x3D41 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x3DAB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E6720636F6C6C656374696F6E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3DB3 PUSH2 0x27F2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x3DF5 DUP2 PUSH2 0x3C45 JUMP JUMPDEST ISZERO ISZERO DUP2 PUSH32 0x4EBF8AD0DF535BA5E487BC9CB27FE44120CA81C3A95D3EBA79C0BD1DF2AB2D5D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST DUP7 DUP6 DUP2 EQ DUP1 ISZERO PUSH2 0x3E36 JUMPI POP DUP1 DUP5 EQ JUMPDEST PUSH2 0x3E87 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3E91 PUSH2 0x27F2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 EQ PUSH2 0x31E8 JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x3EAB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3F25 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x3F33 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH1 0x0 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x3F4A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH2 0x3F5C DUP3 PUSH2 0x3C45 JUMP JUMPDEST ISZERO PUSH2 0x4019 JUMPI PUSH2 0x3F6C DUP4 DUP4 DUP4 PUSH2 0x4BD8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 PUSH1 0x0 SWAP4 SWAP2 DUP11 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x3FCB DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST ISZERO PUSH2 0x4014 JUMPI PUSH2 0x4014 PUSH1 0x0 DUP5 DUP5 DUP5 DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x44F7 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x418C JUMP JUMPDEST PUSH2 0x4043 DUP3 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x22CD JUMPI PUSH2 0x4055 DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x4CCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 PUSH1 0x0 SWAP4 SWAP2 DUP11 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x40EC DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST ISZERO PUSH2 0x4014 JUMPI PUSH2 0x40FA DUP4 PUSH2 0x4720 JUMP JUMPDEST ISZERO PUSH2 0x4149 JUMPI PUSH2 0x4144 PUSH1 0x0 DUP5 DUP5 PUSH1 0x1 DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x44F7 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x4014 JUMP JUMPDEST PUSH2 0x4014 PUSH1 0x0 DUP5 DUP5 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4F29 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3E96 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x421A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x426C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x42E4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420656E6F7567682062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x375C JUMPI PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP8 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP6 KECCAK256 SWAP2 DUP5 SWAP1 SUB SWAP1 SWAP2 SSTORE SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP JUMP JUMPDEST DUP3 PUSH1 0x1 EQ PUSH2 0x4390 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x43FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6F776E6564204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x4490 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x443F JUMPI POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4434 PUSH2 0x27F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x4490 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 SSTORE DUP2 PUSH2 0x17E5 JUMPI PUSH2 0x44BB DUP8 DUP8 PUSH1 0x1 PUSH2 0x46D5 JUMP JUMPDEST PUSH2 0x17E5 DUP8 DUP8 PUSH2 0x44EA DUP9 PUSH32 0x0 PUSH2 0x3CAF JUMP JUMPDEST PUSH1 0x1 PUSH2 0x4681 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xF23A6E61 PUSH2 0x452F PUSH2 0x27F2 JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x45A9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4591 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x45D6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x45F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x460D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4623 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1828 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220726566757365640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1D65 JUMPI PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE SWAP3 SWAP1 SWAP4 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1816 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE SWAP2 DUP5 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD SWAP4 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP5 DUP6 SWAP5 DUP6 SWAP5 SWAP1 SWAP4 SWAP3 SWAP1 DUP2 DUP4 DUP6 DUP12 PUSH2 0x2710 STATICCALL SWAP6 POP DUP1 MLOAD SWAP5 POP POP POP POP PUSH1 0x9E GAS GT PUSH2 0x47D5 JUMPI INVALID JUMPDEST DUP3 DUP1 ISZERO PUSH2 0x47DF JUMPI POP DUP2 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xBC197C81 PUSH2 0x4820 PUSH2 0x27F2 JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4899 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4881 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x48D8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48C0 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4914 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48FC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4941 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x45F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH2 0x100 SWAP2 SWAP1 SWAP2 SUB SHL PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x49DA JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x4A0E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x4A42 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9CE5C4600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x13F9 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xBD85B03900000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x4A84 PUSH2 0x53F1 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x4AF7 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x4B05 JUMPI SWAP2 POP PUSH2 0x1495 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x4BC4 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4BAB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x4BD2 JUMPI SWAP2 POP PUSH2 0x1495 SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x4C2A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x4C90 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20737570706C79206F766572666C6F77000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP2 MSTORE DUP2 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP6 MSTORE SWAP5 SWAP1 SWAP5 MSTORE POP SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x4D1F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x4D80 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E672F6275726E74204E4654000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 SSTORE DUP1 PUSH2 0x1D65 JUMPI PUSH1 0x0 PUSH2 0x4DCB DUP5 PUSH32 0x0 PUSH2 0x3CAF JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP6 MSTORE DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x8 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x4E5B JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x13FC JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x4E73 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x4E5F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4E8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x4EB7 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x4F20 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x4EE6 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x4EC3 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0x150B7A02 PUSH2 0x4F61 PUSH2 0x27F2 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4FD4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4FBC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x5001 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5023 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5037 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x504D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1D65 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220726566757365640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x50BE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x44F1 JUMP JUMPDEST PUSH2 0x510F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x514C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x512D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x51AE 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 0x51B3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x5232 JUMPI DUP1 MLOAD ISZERO PUSH2 0x522D JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x522D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1828 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x5285 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x52FA JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x5311 JUMPI PUSH2 0x5307 PUSH2 0x53FD JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x53ED JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x53D7 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x535C PUSH2 0x53F1 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x53AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x53BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x53E4 JUMPI PUSH2 0x5307 PUSH2 0x53FD JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x5410 PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x54B9 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x544E JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x5494 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5467 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x5494 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5494 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5494 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5479 JUMP JUMPDEST POP PUSH2 0x54A0 SWAP3 SWAP2 POP PUSH2 0x54A4 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x54A0 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x54A5 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x54C8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x54D4 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1E 0xC6 PUSH20 0xF522D365CB03EF00609E37097C7FEF6C01C22307 0x26 0xDD SWAP10 PUSH11 0x70D48F939064736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "1277:5126:36:-:0;;;1531:331;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1531:331:36;;;;;;;;;;;;1804:216:30;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1804:216:30;;;;;;;-1:-1:-1;960:15:2;;-1:-1:-1;;;;;;960:15:2;1844:10:36;960:15:2;;;;;990:40;;1531:331:36;;;;;;1804:216:30;;1531:331:36;;;;;;;;1844:10;;;;990:40:2;;-1:-1:-1;;990:40:2;-1:-1:-1;;;;;;;443:40:85;;;;;;;;493:38;;;;;;2448:25:13;;;;;:55;;;2500:3;2477:20;:26;2448:55;2440:96;;;;;-1:-1:-1;;;2440:96:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;2546:44;;1973:13:30;;::::1;::::0;:5:::1;::::0;:13:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;1996:17:30;;::::1;::::0;:7:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1804:216:::0;;;476:18:1::1;487:6;476:10;;;:18;;:::i;:::-;422:79:::0;1531:331:36;;;1277:5126;;1252:122:1;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;1277:5126:36:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1277:5126:36;;;-1:-1:-1;1277:5126:36;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:379:86",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:86",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "144:233:86",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "182:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "191:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "202:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "184:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "184:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "184:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "160:10:86"
                                  },
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "172:8:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "157:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "157:24:86"
                              },
                              "nodeType": "YulIf",
                              "src": "154:2:86"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "247:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "256:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "267:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "249:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "249:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "229:8:86"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "239:6:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "226:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "226:20:86"
                              },
                              "nodeType": "YulIf",
                              "src": "223:2:86"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "288:36:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "305:6:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "313:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "301:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "301:23:86"
                              },
                              "variableNames": [
                                {
                                  "name": "offsetOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "288:9:86"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "333:38:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "350:8:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "360:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "346:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "346:25:86"
                              },
                              "variableNames": [
                                {
                                  "name": "lengthOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:9:86"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "78:6:86",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "86:6:86",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "94:10:86",
                            "type": ""
                          },
                          {
                            "name": "endIndex",
                            "nodeType": "YulTypedName",
                            "src": "106:8:86",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "offsetOut",
                            "nodeType": "YulTypedName",
                            "src": "119:9:86",
                            "type": ""
                          },
                          {
                            "name": "lengthOut",
                            "nodeType": "YulTypedName",
                            "src": "130:9:86",
                            "type": ""
                          }
                        ],
                        "src": "14:363:86"
                      }
                    ]
                  },
                  "contents": "{\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(offsetOut, offsetOut) }\n        if gt(endIndex, length) { revert(offsetOut, offsetOut) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n}",
                  "id": 86,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "2354": [
                  {
                    "length": 32,
                    "start": 4914
                  },
                  {
                    "length": 32,
                    "start": 7824
                  },
                  {
                    "length": 32,
                    "start": 8286
                  },
                  {
                    "length": 32,
                    "start": 8409
                  },
                  {
                    "length": 32,
                    "start": 8783
                  },
                  {
                    "length": 32,
                    "start": 9559
                  },
                  {
                    "length": 32,
                    "start": 10697
                  },
                  {
                    "length": 32,
                    "start": 10815
                  },
                  {
                    "length": 32,
                    "start": 12228
                  },
                  {
                    "length": 32,
                    "start": 12376
                  },
                  {
                    "length": 32,
                    "start": 12886
                  },
                  {
                    "length": 32,
                    "start": 13447
                  },
                  {
                    "length": 32,
                    "start": 13677
                  },
                  {
                    "length": 32,
                    "start": 14188
                  },
                  {
                    "length": 32,
                    "start": 14473
                  },
                  {
                    "length": 32,
                    "start": 15563
                  },
                  {
                    "length": 32,
                    "start": 16415
                  },
                  {
                    "length": 32,
                    "start": 17606
                  },
                  {
                    "length": 32,
                    "start": 19879
                  }
                ],
                "15042": [
                  {
                    "length": 32,
                    "start": 6671
                  },
                  {
                    "length": 32,
                    "start": 19080
                  },
                  {
                    "length": 32,
                    "start": 19227
                  },
                  {
                    "length": 32,
                    "start": 21148
                  },
                  {
                    "length": 32,
                    "start": 21287
                  }
                ],
                "15044": [
                  {
                    "length": 32,
                    "start": 6612
                  },
                  {
                    "length": 32,
                    "start": 19139
                  },
                  {
                    "length": 32,
                    "start": 21190
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106102d25760003560e01c80637e518ec811610186578063bd85b039116100e3578063d0011d9d11610097578063f242432a11610071578063f242432a14611122578063f2fde38b146111ed578063f3993d1114611213576102d2565b8063d0011d9d14610f71578063e8ab9ccc14610f8e578063e985e9c5146110f4576102d2565b8063c4c2bfdc116100c8578063c4c2bfdc14610f2f578063c7778baa14610f37578063c87b56dd14610f54576102d2565b8063bd85b03914610dfe578063c3666c3614610e1b576102d2565b8063986502751161013a578063aa271e1a1161011f578063aa271e1a14610cf5578063adebf6f214610d1b578063b88d4fde14610d38576102d2565b80639865027514610cbf578063a22cb46514610cc7576102d2565b80638da5cb5b1161016b5780638da5cb5b14610c8957806395d89b4114610c91578063983b2d5614610c99576102d2565b80637e518ec814610b945780638832e6e314610c04576102d2565b806342842e0e116102345780635b2bd79e116101e85780636352211e116101cd5780636352211e14610a3d57806370a0823114610a5a57806373c8a95814610a80576102d2565b80635b2bd79e146109a95780635cfa9297146109b1576102d2565b80634e1273f4116102195780634e1273f414610854578063510b515814610966578063572b6c0514610983576102d2565b806342842e0e1461079e5780634684d7e9146107d4576102d2565b80630d6a5bbb1161028b57806323b872dd1161027057806323b872dd146105755780632eb2c2d6146105ab57806340c10f1914610772576102d2565b80630d6a5bbb146104345780630e89341c14610558576102d2565b806306fdde03116102bc57806306fdde0314610350578063081812fc146103cd578063095ea7b314610406576102d2565b8062fdd58e146102d757806301ffc9a714610315575b600080fd5b610303600480360360408110156102ed57600080fd5b506001600160a01b0381351690602001356112cf565b60408051918252519081900360200190f35b61033c6004803603602081101561032b57600080fd5b50356001600160e01b0319166113bb565b604080519115158252519081900360200190f35b610358611401565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039257818101518382015260200161037a565b50505050905090810190601f1680156103bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ea600480360360208110156103e357600080fd5b5035611498565b604080516001600160a01b039092168252519081900360200190f35b6104326004803603604081101561041c57600080fd5b506001600160a01b038135169060200135611537565b005b6104326004803603608081101561044a57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561047557600080fd5b82018360208201111561048757600080fd5b803590602001918460208302840111640100000000831117156104a957600080fd5b9193909290916020810190356401000000008111156104c757600080fd5b8201836020820111156104d957600080fd5b803590602001918460208302840111640100000000831117156104fb57600080fd5b91939092909160208101903564010000000081111561051957600080fd5b82018360208201111561052b57600080fd5b8035906020019184600183028401116401000000008311171561054d57600080fd5b509092509050611733565b6103586004803603602081101561056e57600080fd5b50356117ee565b6104326004803603606081101561058b57600080fd5b506001600160a01b038135811691602081013590911690604001356117f9565b610432600480360360a08110156105c157600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156105f557600080fd5b82018360208201111561060757600080fd5b8035906020019184602083028401116401000000008311171561062957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561067957600080fd5b82018360208201111561068b57600080fd5b803590602001918460208302840111640100000000831117156106ad57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156106fd57600080fd5b82018360208201111561070f57600080fd5b8035906020019184600183028401116401000000008311171561073157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061181b945050505050565b6104326004803603604081101561078857600080fd5b506001600160a01b03813516906020013561182f565b610432600480360360608110156107b457600080fd5b506001600160a01b0381358116916020810135909116906040013561185a565b610432600480360360408110156107ea57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561081557600080fd5b82018360208201111561082757600080fd5b8035906020019184602083028401116401000000008311171561084957600080fd5b509092509050611877565b6109166004803603604081101561086a57600080fd5b81019060208101813564010000000081111561088557600080fd5b82018360208201111561089757600080fd5b803590602001918460208302840111640100000000831117156108b957600080fd5b9193909290916020810190356401000000008111156108d757600080fd5b8201836020820111156108e957600080fd5b8035906020019184602083028401116401000000008311171561090b57600080fd5b5090925090506118bf565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561095257818101518382015260200161093a565b505050509050019250505060405180910390f35b6103ea6004803603602081101561097c57600080fd5b50356119c5565b61033c6004803603602081101561099957600080fd5b50356001600160a01b03166119d0565b610358611a49565b610432600480360360808110156109c757600080fd5b6001600160a01b0382351691602081013591604082013591908101906080810160608201356401000000008111156109fe57600080fd5b820183602082011115610a1057600080fd5b80359060200191846001830284011164010000000083111715610a3257600080fd5b509092509050611ad7565b6103ea60048036036020811015610a5357600080fd5b5035611b24565b61030360048036036020811015610a7057600080fd5b50356001600160a01b0316611b2f565b61043260048036036060811015610a9657600080fd5b810190602081018135640100000000811115610ab157600080fd5b820183602082011115610ac357600080fd5b80359060200191846020830284011164010000000083111715610ae557600080fd5b919390929091602081019035640100000000811115610b0357600080fd5b820183602082011115610b1557600080fd5b80359060200191846020830284011164010000000083111715610b3757600080fd5b919390929091602081019035640100000000811115610b5557600080fd5b820183602082011115610b6757600080fd5b80359060200191846020830284011164010000000083111715610b8957600080fd5b509092509050611ba8565b61043260048036036020811015610baa57600080fd5b810190602081018135640100000000811115610bc557600080fd5b820183602082011115610bd757600080fd5b80359060200191846001830284011164010000000083111715610bf957600080fd5b509092509050611c9a565b61043260048036036060811015610c1a57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135640100000000811115610c4a57600080fd5b820183602082011115610c5c57600080fd5b80359060200191846001830284011164010000000083111715610c7e57600080fd5b509092509050611d16565b6103ea611d6b565b610358611d7a565b61043260048036036020811015610caf57600080fd5b50356001600160a01b0316611ddb565b610432611df2565b61043260048036036040811015610cdd57600080fd5b506001600160a01b0381351690602001351515611e50565b61033c60048036036020811015610d0b57600080fd5b50356001600160a01b0316611e5a565b61033c60048036036020811015610d3157600080fd5b5035611e6f565b61043260048036036080811015610d4e57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846001830284011164010000000083111715610dbd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611e7a945050505050565b61030360048036036020811015610e1457600080fd5b5035611e88565b61043260048036036060811015610e3157600080fd5b810190602081018135640100000000811115610e4c57600080fd5b820183602082011115610e5e57600080fd5b80359060200191846020830284011164010000000083111715610e8057600080fd5b919390929091602081019035640100000000811115610e9e57600080fd5b820183602082011115610eb057600080fd5b80359060200191846020830284011164010000000083111715610ed257600080fd5b919390929091602081019035640100000000811115610ef057600080fd5b820183602082011115610f0257600080fd5b80359060200191846020830284011164010000000083111715610f2457600080fd5b509092509050611eff565b610358612047565b61030360048036036020811015610f4d57600080fd5b5035612056565b61035860048036036020811015610f6a57600080fd5b50356120fd565b61043260048036036020811015610f8757600080fd5b5035612172565b61043260048036036080811015610fa457600080fd5b810190602081018135640100000000811115610fbf57600080fd5b820183602082011115610fd157600080fd5b80359060200191846020830284011164010000000083111715610ff357600080fd5b91939092909160208101903564010000000081111561101157600080fd5b82018360208201111561102357600080fd5b8035906020019184602083028401116401000000008311171561104557600080fd5b91939092909160208101903564010000000081111561106357600080fd5b82018360208201111561107557600080fd5b8035906020019184602083028401116401000000008311171561109757600080fd5b9193909290916020810190356401000000008111156110b557600080fd5b8201836020820111156110c757600080fd5b803590602001918460018302840111640100000000831117156110e957600080fd5b509092509050612186565b61033c6004803603604081101561110a57600080fd5b506001600160a01b03813581169160200135166121a1565b610432600480360360a081101561113857600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561117857600080fd5b82018360208201111561118a57600080fd5b803590602001918460018302840111640100000000831117156111ac57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506121b4945050505050565b6104326004803603602081101561120357600080fd5b50356001600160a01b031661239b565b6104326004803603606081101561122957600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561125d57600080fd5b82018360208201111561126f57600080fd5b8035906020019184602083028401116401000000008311171561129157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612401945050505050565b60006001600160a01b03831661132c576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b611356827f000000000000000000000000000000000000000000000000000000000000000061270a565b15611390576000828152600460205260409020546001600160a01b03848116911614611383576000611386565b60015b60ff1690506113b5565b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b031982167f510b51580000000000000000000000000000000000000000000000000000000014806113f957506113f98261274c565b90505b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561148d5780601f106114625761010080835404028352916020019161148d565b820191906000526020600020905b81548152906001019060200180831161147057829003601f168201915b505050505090505b90565b6000818152600460205260408120546001600160a01b038116611502576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b600160a01b81161561152d5750506000818152600960205260409020546001600160a01b03166113fc565b60009150506113fc565b60008181526004602052604090205480611598576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b806001600160a01b0384811690821614156115fa576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a2073656c662d617070726f76616c0000000000000000604482015290519081900360640190fd5b61160b816116066127f2565b6127fc565b61165c576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b6001600160a01b03841661169657600160a01b8216156116915760008381526004602052604090206001600160a01b03821690555b6116ec565b600160a01b82178083146116b65760008481526004602052604090208190555b506000838152600960205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b61174361173e6127f2565b612848565b6117e58787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a0181900481028201810190925288815292508891508790819084018382808284376000920191909152506128b592505050565b50505050505050565b60606113f982612c58565b611816838383604051806020016040528060008152506000612d2b565b505050565b6118288585858585612e99565b5050505050565b61183a61173e6127f2565b61185682826040518060200160405280600081525060006131f5565b5050565b611816838383604051806020016040528060008152506001612d2b565b61188261173e6127f2565b611816838383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133ba92505050565b6060838214611915576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60008467ffffffffffffffff8111801561192e57600080fd5b50604051908082528060200260200182016040528015611958578160200160208202803683370190505b50905060005b8086146119bb5761199c87878381811061197457fe5b905060200201356001600160a01b031686868481811061199057fe5b905060200201356112cf565b8282815181106119a857fe5b602090810291909101015260010161195e565b5095945050505050565b60006113f982613764565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806113f957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b600a805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611acf5780601f10611aa457610100808354040283529160200191611acf565b820191906000526020600020905b815481529060010190602001808311611ab257829003601f168201915b505050505081565b611ae261173e6127f2565b61182885858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506137fe92505050565b60006113f98261396a565b60006001600160a01b038216611b8c576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b506001600160a01b031660009081526008602052604090205490565b611bb8611bb36127f2565b6139d4565b848381148015611bc757508082145b611c18576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611c9057611c88888883818110611c3157fe5b905060200201356001600160a01b0316858584818110611c4d57fe5b90506020020135888885818110611c6057fe5b905060200201356001600160a01b03166001600160a01b0316613a989092919063ffffffff16565b600101611c1b565b5050505050505050565b611ca5611bb36127f2565b611cb1600a8383615418565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b611d2161173e6127f2565b611d65848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506131f5915050565b50505050565b6000546001600160a01b031690565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561148d5780601f106114625761010080835404028352916020019161148d565b611de6611bb36127f2565b611def81613b18565b50565b6000611dfc6127f2565b9050611e0781612848565b6001600160a01b0381166000818152600b6020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b6118568282613b64565b600b6020526000908152604090205460ff1681565b60006113f982613c45565b611d65848484846001612d2b565b6000611eb4827f000000000000000000000000000000000000000000000000000000000000000061270a565b15611eea576000828152600460205260409020546001600160a01b031615611edd576001611ee0565b60005b60ff1690506113fc565b506000818152600360205260409020546113fc565b611f0a611bb36127f2565b848381148015611f1957508082145b611f6a576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611c9057858582818110611f8057fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a85818110611fab57fe5b905060200201356001600160a01b0316878786818110611fc757fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561202457600080fd5b505af1158015612038573d6000803e3d6000fd5b50505050806001019050611f6d565b6060612051613c6b565b905090565b6000612082827f000000000000000000000000000000000000000000000000000000000000000061270a565b6120d3576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a206e6f7420616e204e46540000000000000000000000604482015290519081900360640190fd5b6113f9827f0000000000000000000000000000000000000000000000000000000000000000613caf565b6000818152600460205260409020546060906001600160a01b0316612169576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b6113f9826117ee565b61217d611bb36127f2565b611def81613cc5565b61219161173e6127f2565b611c908888888888888888613e27565b60006121ad838361419a565b9392505050565b60006121be6127f2565b90506001600160a01b03851661221b576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b600061222787836127fc565b905061223285613c45565b156122495761224487878787856141c8565b61231a565b612273857f000000000000000000000000000000000000000000000000000000000000000061270a565b156122cd576122878787878785600061433b565b84866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461231a565b6040805162461bcd60e51b815260206004820152601960248201527f496e76656e746f72793a206e6f74206120746f6b656e20696400000000000000604482015290519081900360640190fd5b856001600160a01b0316876001600160a01b0316836001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051808381526020018281526020019250505060405180910390a4612389866001600160a01b03166144f1565b156117e5576117e587878787876144f7565b6123a6611bb36127f2565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b03821661245c576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b60006124666127f2565b9050600061247485836127fc565b835190915060008167ffffffffffffffff8111801561249257600080fd5b506040519080825280602002602001820160405280156124bc578160200160208202803683370190505b50905060008060005b8481146125be5760008882815181106124da57fe5b6020026020010151905060018583815181106124f257fe5b60200260200101818152505061250e8b8b8360018b600161433b565b808a6001600160a01b03168c6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4600061257b827f0000000000000000000000000000000000000000000000000000000000000000613caf565b90508461258e57809450600193506125b4565b8481146125ad576125a18c8c8787614681565b809450600193506125b4565b8360010193505b50506001016124c5565b5081156125dc576125d189898484614681565b6125dc8989866146d5565b876001600160a01b0316896001600160a01b03166125f86127f2565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a87604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612668578181015183820152602001612650565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156126a757818101518382015260200161268f565b5050505090500194505050505060405180910390a46126ce886001600160a01b03166144f1565b80156126de57506126de88614720565b156126ff576126ff89898986604051806020016040528060008152506147e8565b505050505050505050565b60007f80000000000000000000000000000000000000000000000000000000000000008316158015906121ad575061274182614966565b909216151592915050565b60006001600160e01b031982167f80ac58cd0000000000000000000000000000000000000000000000000000000014806127af57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806127e357506001600160e01b031982167ff3993d1100000000000000000000000000000000000000000000000000000000145b806113f957506113f982614977565b6000612051614a78565b6000816001600160a01b0316836001600160a01b031614806121ad5750506001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6001600160a01b0381166000908152600b602052604090205460ff16611def576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416612910576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b825182518114612967576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b6000806000805b848114612b0657600088828151811061298357fe5b60200260200101519050600088838151811061299b57fe5b602002602001015190506129ae82613c45565b156129c3576129be8b8383614bd8565b612afc565b6129ed827f000000000000000000000000000000000000000000000000000000000000000061270a565b156122cd576129ff8b83836001614cca565b60405182906001600160a01b038d16906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46000612a63837f0000000000000000000000000000000000000000000000000000000000000000613caf565b905086612a765780965060019550612afa565b868114612af357856002600089815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008282540192505081905550856003600089815260200190815260200160002060008282540192505081905550809650858501945060019550612afa565b8560010195505b505b505060010161296e565b508215612b5b5760008381526002602090815260408083206001600160a01b038c1680855290835281842080548701905586845260038352818420805487019055835260089091529020805491830191820190555b6001600160a01b0388166000612b6f6127f2565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a8a604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612bdf578181015183820152602001612bc7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612c1e578181015183820152602001612c06565b5050505090500194505050505060405180910390a4612c45886001600160a01b03166144f1565b15611c9057611c906000898989896147e8565b6060600a612c6583614e1a565b6040516020018083805460018160011615610100020316600290048015612cc35780601f10612ca1576101008083540402835291820191612cc3565b820191906000526020600020905b815481529060010190602001808311612caf575b5050825160208401908083835b60208310612cef5780518252601f199092019160209182019101612cd0565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b6001600160a01b038416612d86576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b6000612d906127f2565b90506000612d9e87836127fc565b9050612db0878787600185600061433b565b84866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4856001600160a01b0316876001600160a01b0316836001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62886001604051808381526020018281526020019250505060405180910390a4612e61866001600160a01b03166144f1565b156117e557612e6f86614720565b15612e8757612e828787876001886144f7565b6117e5565b82156117e5576117e587878787614f29565b6001600160a01b038416612ef4576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b825182518114612f4b576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b6000612f556127f2565b90506000612f6388836127fc565b90506000806000805b8681146130c45760008a8281518110612f8157fe5b60200260200101519050612f9481613c45565b15612fbe57612fb98d8d838d8681518110612fab57fe5b60200260200101518a6141c8565b6130bb565b612fe8817f000000000000000000000000000000000000000000000000000000000000000061270a565b156122cd5761300f8d8d838d8681518110612fff57fe5b60200260200101518a600161433b565b808c6001600160a01b03168e6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4600061307c827f0000000000000000000000000000000000000000000000000000000000000000613caf565b90508561308f57809550600194506130b9565b8581146130b2576130a28e8e8888614681565b94506001939290920191846130b9565b8460010194505b505b50600101612f6c565b5082156130e4576130d78b8b8585614681565b81016130e48b8b836146d5565b896001600160a01b03168b6001600160a01b03166131006127f2565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015613170578181015183820152602001613158565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156131af578181015183820152602001613197565b5050505090500194505050505060405180910390a46131d68a6001600160a01b03166144f1565b156131e8576131e88b8b8b8b8b6147e8565b5050505050505050505050565b6001600160a01b038416613250576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b61327a837f000000000000000000000000000000000000000000000000000000000000000061270a565b6132cb576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a206e6f7420616e204e46540000000000000000000000604482015290519081900360640190fd5b6132d9848460016000614cca565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46001600160a01b03841660006133256127f2565b6001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62866001604051808381526020018281526020019250505060405180910390a4613380846001600160a01b03166144f1565b15611d655761338e84614720565b156133a7576133a2600085856001866144f7565b611d65565b8015611d6557611d656000858585614f29565b6001600160a01b038216613415576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b805160008167ffffffffffffffff8111801561343057600080fd5b5060405190808252806020026020018201604052801561345a578160200160208202803683370190505b50905060008060005b84811461360057600086828151811061347857fe5b602002602001015190506134b57f00000000000000000000000000000000000000000000000000000000000000008261270a90919063ffffffff16565b613506576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a206e6f7420616e204e46540000000000000000000000604482015290519081900360640190fd5b600185838151811061351457fe5b60200260200101818152505061352d8882600180614cca565b60405181906001600160a01b038a16906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46000613591827f0000000000000000000000000000000000000000000000000000000000000000613caf565b9050846135a457809450600193506135f6565b8481146135ef5760008581526002602090815260408083206001600160a01b038d168452825280832080548801905596825260039052949094208054909301909255600191836135f6565b8360010193505b5050600101613463565b5060008281526002602090815260408083206001600160a01b038a168085529083528184208054860190558584526003835281842080548601905580845260089092528220805487019055906136546127f2565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8887604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156136c45781810151838201526020016136ac565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156137035781810151838201526020016136eb565b5050505090500194505050505060405180910390a461372a866001600160a01b03166144f1565b801561373a575061373a86614720565b1561375c5761375c6000878786604051806020016040528060008152506147e8565b505050505050565b6000613790827f000000000000000000000000000000000000000000000000000000000000000061270a565b156137e2576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b506000908152600560205260409020546001600160a01b031690565b6001600160a01b038416613859576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b60006138636127f2565b905061386e84613c45565b156138835761387e858585614bd8565b6138f8565b6138ad847f000000000000000000000000000000000000000000000000000000000000000061270a565b156122cd576138bf8585856000614cca565b60405184906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45b604080518581526020810185905281516001600160a01b0380891693600093918616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4613957856001600160a01b03166144f1565b15611828576118286000868686866144f7565b6000818152600460205260408120546001600160a01b0381166113f9576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015613a0d57600080fd5b505afa158015613a21573d6000803e3d6000fd5b505050506040513d6020811015613a3757600080fd5b50516001600160a01b03828116911614611def576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526118169084906150ab565b6001600160a01b0381166000818152600b6020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6000613b6e6127f2565b9050806001600160a01b0316836001600160a01b03161415613bd7576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a2073656c662d617070726f76616c0000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260016020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b7f8000000000000000000000000000000000000000000000000000000000000000161590565b6060613c7561528e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b6000613cba82614966565b198316905092915050565b613cef817f000000000000000000000000000000000000000000000000000000000000000061270a565b15613d41576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b031615613dab576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206578697374696e6720636f6c6c656374696f6e0000604482015290519081900360640190fd5b613db36127f2565b6000828152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055613df581613c45565b1515817f4ebf8ad0df535ba5e487bc9cb27fe44120ca81c3a95d3eba79c0bd1df2ab2d5d60405160405180910390a350565b868581148015613e3657508084145b613e87576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b6000613e916127f2565b905060005b8281146131e85760008b8b83818110613eab57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415613f25576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a206d696e7420746f207a65726f000000000000000000604482015290519081900360640190fd5b60008a8a84818110613f3357fe5b9050602002013590506000898985818110613f4a57fe5b905060200201359050613f5c82613c45565b1561401957613f6c838383614bd8565b604080518381526020810183905281516001600160a01b0380871693600093918a16927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4613fcb836001600160a01b03166144f1565b156140145761401460008484848c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506144f792505050565b61418c565b614043827f000000000000000000000000000000000000000000000000000000000000000061270a565b156122cd576140558383836000614cca565b60405182906001600160a01b038516906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4604080518381526001602082015281516001600160a01b0380871693600093918a16927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a46140ec836001600160a01b03166144f1565b15614014576140fa83614720565b15614149576141446000848460018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506144f792505050565b614014565b614014600084848b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250614f2992505050565b505050806001019050613e96565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b8061421a576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b8161426c576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b0389168452909152902054828110156142e4576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b846001600160a01b0316866001600160a01b03161461375c5760009384526002602090815260408086206001600160a01b039889168752909152808520918490039091559390941682529190208054909101905550565b82600114614390576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000848152600460205260409020546001600160a01b03878116908216146143ff576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a206e6f6e2d6f776e6564204e46540000000000000000604482015290519081900360640190fd5b8261449057600160a01b81161580159061443f57506000858152600960205260409020546001600160a01b03166144346127f2565b6001600160a01b0316145b614490576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b60008581526004602052604090206001600160a01b0387169055816117e5576144bb878760016146d5565b6117e587876144ea887f0000000000000000000000000000000000000000000000000000000000000000613caf565b6001614681565b3b151590565b7ff23a6e61000000000000000000000000000000000000000000000000000000006001600160a01b03851663f23a6e6161452f6127f2565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156145a9578181015183820152602001614591565b50505050905090810190601f1680156145d65780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1580156145f957600080fd5b505af115801561460d573d6000803e3d6000fd5b505050506040513d602081101561462357600080fd5b50516001600160e01b03191614611828576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b031614611d655760009182526002602090815260408084206001600160a01b039687168552909152808320805483900390559290931681522080549091019055565b816001600160a01b0316836001600160a01b031614611816576001600160a01b0380841660009081526008602052604080822080548590039055918416815220805482019055505050565b604080517f4e2312e0000000000000000000000000000000000000000000000000000000006024808301919091528251808303909101815260449091018252602081810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001781528251935160008082529485948594909392908183858b612710fa955080519450505050609e5a116147d557fe5b8280156147df5750815b95945050505050565b7fbc197c81000000000000000000000000000000000000000000000000000000006001600160a01b03851663bc197c816148206127f2565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015614899578181015183820152602001614881565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156148d85781810151838201526020016148c0565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156149145781810151838201526020016148fc565b50505050905090810190601f1680156149415780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b1580156145f957600080fd5b6001610100919091031b6000190190565b60006001600160e01b031982167f01ffc9a70000000000000000000000000000000000000000000000000000000014806149da57506001600160e01b031982167fd9b67a2600000000000000000000000000000000000000000000000000000000145b80614a0e57506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b80614a4257506001600160e01b031982167f09ce5c4600000000000000000000000000000000000000000000000000000000145b806113f95750506001600160e01b0319167fbd85b039000000000000000000000000000000000000000000000000000000001490565b60003381614a846153f1565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480614af757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15614b055791506114959050565b6001600160a01b0382163214801590614bc457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015614b9757600080fd5b505afa158015614bab573d6000803e3d6000fd5b505050506040513d6020811015614bc157600080fd5b50515b15614bd25791506114959050565b50905090565b80614c2a576040805162461bcd60e51b815260206004820152601560248201527f496e76656e746f72793a207a65726f2076616c75650000000000000000000000604482015290519081900360640190fd5b600082815260036020526040902054818101818111614c90576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a20737570706c79206f766572666c6f77000000000000604482015290519081900360640190fd5b600093845260036020908152604080862092909255600281528185206001600160a01b039096168552949094525091902080549091019055565b81600114614d1f576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b60008381526004602052604090205415614d80576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206578697374696e672f6275726e74204e4654000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b038516905580611d65576000614dcb847f0000000000000000000000000000000000000000000000000000000000000000613caf565b600090815260036020908152604080832080546001908101909155600283528184206001600160a01b038a16855283528184208054820190556008909252909120805490910190555050505050565b606081614e5b575060408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201526113fc565b8160005b8115614e7357600101600a82049150614e5f565b60008167ffffffffffffffff81118015614e8c57600080fd5b506040519080825280601f01601f191660200182016040528015614eb7576020820181803683370190505b50859350905060001982015b8315614f2057600a840660300160f81b82828060019003935081518110614ee657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350614ec3565b50949350505050565b7f150b7a02000000000000000000000000000000000000000000000000000000006001600160a01b03841663150b7a02614f616127f2565b8786866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614fd4578181015183820152602001614fbc565b50505050905090810190601f1680156150015780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561502357600080fd5b505af1158015615037573d6000803e3d6000fd5b505050506040513d602081101561504d57600080fd5b50516001600160e01b03191614611d65576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b816150be6001600160a01b0382166144f1565b61510f576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b6020831061514c5780518252601f19909201916020918201910161512d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146151ae576040519150601f19603f3d011682016040523d82523d6000602084013e6151b3565b606091505b509150915081156152325780511561522d578080602001905160208110156151da57600080fd5b505161522d576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b611828565b8051615285576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168114806152fa57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b15615311576153076153fd565b92509250506153ed565b6001600160a01b03811632148015906153d757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d661535c6153f1565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156153aa57600080fd5b505afa1580156153be573d6000803e3d6000fd5b505050506040513d60208110156153d457600080fd5b50515b156153e4576153076153fd565b60003692509250505b9091565b60131936013560601c90565b36600061541060131983018284816154b9565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261544e5760008555615494565b82601f106154675782800160ff19823516178555615494565b82800160010185558215615494579182015b82811115615494578235825591602001919060010190615479565b506154a09291506154a4565b5090565b5b808211156154a057600081556001016154a5565b600080858511156154c8578182fd5b838611156154d4578182fd5b505082019391909203915056fea26469706673582212201ec673f522d365cb03ef00609e37097c7fef6c01c2230726dd996a70d48f939064736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2D2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E518EC8 GT PUSH2 0x186 JUMPI DUP1 PUSH4 0xBD85B039 GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0xD0011D9D GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xF242432A GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x1122 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x11ED JUMPI DUP1 PUSH4 0xF3993D11 EQ PUSH2 0x1213 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0xD0011D9D EQ PUSH2 0xF71 JUMPI DUP1 PUSH4 0xE8AB9CCC EQ PUSH2 0xF8E JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x10F4 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0xC4C2BFDC GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0xF2F JUMPI DUP1 PUSH4 0xC7778BAA EQ PUSH2 0xF37 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0xF54 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0xBD85B039 EQ PUSH2 0xDFE JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xE1B JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x98650275 GT PUSH2 0x13A JUMPI DUP1 PUSH4 0xAA271E1A GT PUSH2 0x11F JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xCF5 JUMPI DUP1 PUSH4 0xADEBF6F2 EQ PUSH2 0xD1B JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0xD38 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x98650275 EQ PUSH2 0xCBF JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0xCC7 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x16B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xC89 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xC91 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0xC99 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0xB94 JUMPI DUP1 PUSH4 0x8832E6E3 EQ PUSH2 0xC04 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x42842E0E GT PUSH2 0x234 JUMPI DUP1 PUSH4 0x5B2BD79E GT PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x6352211E GT PUSH2 0x1CD JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0xA3D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xA5A JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0xA80 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x9A9 JUMPI DUP1 PUSH4 0x5CFA9297 EQ PUSH2 0x9B1 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x219 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x854 JUMPI DUP1 PUSH4 0x510B5158 EQ PUSH2 0x966 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x983 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x42842E0E EQ PUSH2 0x79E JUMPI DUP1 PUSH4 0x4684D7E9 EQ PUSH2 0x7D4 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0xD6A5BBB GT PUSH2 0x28B JUMPI DUP1 PUSH4 0x23B872DD GT PUSH2 0x270 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x575 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x5AB JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x772 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0xD6A5BBB EQ PUSH2 0x434 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x558 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 GT PUSH2 0x2BC JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x350 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x406 JUMPI PUSH2 0x2D2 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x315 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x303 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x33C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x13BB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x358 PUSH2 0x1401 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x392 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x37A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3BF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1537 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x487 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x52B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1733 JUMP JUMPDEST PUSH2 0x358 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x17EE JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x17F9 JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x5C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x629 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x68B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x70F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x181B SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x182F JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x7B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x185A JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x815 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x849 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1877 JUMP JUMPDEST PUSH2 0x916 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x86A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x885 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x897 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x8B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x90B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x18BF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x952 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x93A JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x97C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x19C5 JUMP JUMPDEST PUSH2 0x33C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x999 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19D0 JUMP JUMPDEST PUSH2 0x358 PUSH2 0x1A49 JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x9C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1AD7 JUMP JUMPDEST PUSH2 0x3EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B24 JUMP JUMPDEST PUSH2 0x303 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B2F JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xAB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xAE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1BA8 JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1C9A JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xC7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1D16 JUMP JUMPDEST PUSH2 0x3EA PUSH2 0x1D6B JUMP JUMPDEST PUSH2 0x358 PUSH2 0x1D7A JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DDB JUMP JUMPDEST PUSH2 0x432 PUSH2 0x1DF2 JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1E50 JUMP JUMPDEST PUSH2 0x33C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E5A JUMP JUMPDEST PUSH2 0x33C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E6F JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xD4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xDBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1E7A SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x303 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E88 JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xE31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xE4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xE80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xE9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xEB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xED2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xEF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xF24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1EFF JUMP JUMPDEST PUSH2 0x358 PUSH2 0x2047 JUMP JUMPDEST PUSH2 0x303 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2056 JUMP JUMPDEST PUSH2 0x358 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x20FD JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2172 JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xFA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xFBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1011 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1023 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1045 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1075 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1097 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x10B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x10E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2186 JUMP JUMPDEST PUSH2 0x33C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x110A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x21A1 JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x118A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x11AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x21B4 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x239B JUMP JUMPDEST PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x125D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x126F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x2401 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x132C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2061646472657373000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1356 DUP3 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x1390 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0x1383 JUMPI PUSH1 0x0 PUSH2 0x1386 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x13B5 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x510B515800000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x13F9 JUMPI POP PUSH2 0x13F9 DUP3 PUSH2 0x274C JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x148D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1462 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x148D 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 0x1470 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1502 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO PUSH2 0x152D JUMPI POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13FC JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x13FC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x1598 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP1 DUP3 AND EQ ISZERO PUSH2 0x15FA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2073656C662D617070726F76616C0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x160B DUP2 PUSH2 0x1606 PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x27FC JUMP JUMPDEST PUSH2 0x165C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1696 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0x1691 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SSTORE JUMPDEST PUSH2 0x16EC JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0x16B6 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE JUMPDEST DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1743 PUSH2 0x173E PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x2848 JUMP JUMPDEST PUSH2 0x17E5 DUP8 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP12 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP11 DUP3 MSTORE SWAP1 SWAP4 POP DUP11 SWAP3 POP DUP10 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F DUP11 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP9 DUP2 MSTORE SWAP3 POP DUP9 SWAP2 POP DUP8 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x28B5 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x13F9 DUP3 PUSH2 0x2C58 JUMP JUMPDEST PUSH2 0x1816 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x2D2B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1828 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2E99 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x183A PUSH2 0x173E PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x1856 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x31F5 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1816 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x2D2B JUMP JUMPDEST PUSH2 0x1882 PUSH2 0x173E PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x1816 DUP4 DUP4 DUP4 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x33BA SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP3 EQ PUSH2 0x1915 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x192E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1958 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP1 DUP7 EQ PUSH2 0x19BB JUMPI PUSH2 0x199C DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x1974 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x1990 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x12CF JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x19A8 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x195E JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F9 DUP3 PUSH2 0x3764 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x13F9 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1ACF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1AA4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1ACF 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 0x1AB2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0x1AE2 PUSH2 0x173E PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x1828 DUP6 DUP6 DUP6 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x37FE SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F9 DUP3 PUSH2 0x396A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1B8C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2061646472657373000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1BB8 PUSH2 0x1BB3 PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x39D4 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1BC7 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1C18 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1C90 JUMPI PUSH2 0x1C88 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x1C31 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1C4D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1C60 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3A98 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1C1B JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1CA5 PUSH2 0x1BB3 PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x1CB1 PUSH1 0xA DUP4 DUP4 PUSH2 0x5418 JUMP JUMPDEST POP PUSH32 0x4B1DC5C136A3CE9FDED8DB0CE3D3366C58764EC3A8E4C2B9E52E4DDFE5EBBF7 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG1 POP POP JUMP JUMPDEST PUSH2 0x1D21 PUSH2 0x173E PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x1D65 DUP5 DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH1 0x1 SWAP3 POP PUSH2 0x31F5 SWAP2 POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x148D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1462 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x148D JUMP JUMPDEST PUSH2 0x1DE6 PUSH2 0x1BB3 PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x1DEF DUP2 PUSH2 0x3B18 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DFC PUSH2 0x27F2 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E07 DUP2 PUSH2 0x2848 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x1856 DUP3 DUP3 PUSH2 0x3B64 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F9 DUP3 PUSH2 0x3C45 JUMP JUMPDEST PUSH2 0x1D65 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x2D2B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EB4 DUP3 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x1EEA JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1EDD JUMPI PUSH1 0x1 PUSH2 0x1EE0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x13FC JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x13FC JUMP JUMPDEST PUSH2 0x1F0A PUSH2 0x1BB3 PUSH2 0x27F2 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1F19 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1F6A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1C90 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x1F80 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x1FAB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x1FC7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2024 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2038 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x1F6D JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2051 PUSH2 0x3C6B JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2082 DUP3 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST PUSH2 0x20D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420616E204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13F9 DUP3 PUSH32 0x0 PUSH2 0x3CAF JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2169 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13F9 DUP3 PUSH2 0x17EE JUMP JUMPDEST PUSH2 0x217D PUSH2 0x1BB3 PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x1DEF DUP2 PUSH2 0x3CC5 JUMP JUMPDEST PUSH2 0x2191 PUSH2 0x173E PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x1C90 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x3E27 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AD DUP4 DUP4 PUSH2 0x419A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21BE PUSH2 0x27F2 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x221B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2227 DUP8 DUP4 PUSH2 0x27FC JUMP JUMPDEST SWAP1 POP PUSH2 0x2232 DUP6 PUSH2 0x3C45 JUMP JUMPDEST ISZERO PUSH2 0x2249 JUMPI PUSH2 0x2244 DUP8 DUP8 DUP8 DUP8 DUP6 PUSH2 0x41C8 JUMP JUMPDEST PUSH2 0x231A JUMP JUMPDEST PUSH2 0x2273 DUP6 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x22CD JUMPI PUSH2 0x2287 DUP8 DUP8 DUP8 DUP8 DUP6 PUSH1 0x0 PUSH2 0x433B JUMP JUMPDEST DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x231A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120746F6B656E20696400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2389 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST ISZERO PUSH2 0x17E5 JUMPI PUSH2 0x17E5 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x44F7 JUMP JUMPDEST PUSH2 0x23A6 PUSH2 0x1BB3 PUSH2 0x27F2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x245C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2466 PUSH2 0x27F2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2474 DUP6 DUP4 PUSH2 0x27FC JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2492 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x24BC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x25BE JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x24DA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x24F2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x250E DUP12 DUP12 DUP4 PUSH1 0x1 DUP12 PUSH1 0x1 PUSH2 0x433B JUMP JUMPDEST DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH2 0x257B DUP3 PUSH32 0x0 PUSH2 0x3CAF JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x258E JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x25B4 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x25AD JUMPI PUSH2 0x25A1 DUP13 DUP13 DUP8 DUP8 PUSH2 0x4681 JUMP JUMPDEST DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x25B4 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x24C5 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x25DC JUMPI PUSH2 0x25D1 DUP10 DUP10 DUP5 DUP5 PUSH2 0x4681 JUMP JUMPDEST PUSH2 0x25DC DUP10 DUP10 DUP7 PUSH2 0x46D5 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x25F8 PUSH2 0x27F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP11 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2668 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2650 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x26A7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x268F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x26CE DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x26DE JUMPI POP PUSH2 0x26DE DUP9 PUSH2 0x4720 JUMP JUMPDEST ISZERO PUSH2 0x26FF JUMPI PUSH2 0x26FF DUP10 DUP10 DUP10 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x47E8 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x21AD JUMPI POP PUSH2 0x2741 DUP3 PUSH2 0x4966 JUMP JUMPDEST SWAP1 SWAP3 AND ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x27AF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x27E3 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xF3993D1100000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x13F9 JUMPI POP PUSH2 0x13F9 DUP3 PUSH2 0x4977 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2051 PUSH2 0x4A78 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x21AD JUMPI POP POP 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1DEF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2910 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x2967 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0x2B06 JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2983 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x299B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x29AE DUP3 PUSH2 0x3C45 JUMP JUMPDEST ISZERO PUSH2 0x29C3 JUMPI PUSH2 0x29BE DUP12 DUP4 DUP4 PUSH2 0x4BD8 JUMP JUMPDEST PUSH2 0x2AFC JUMP JUMPDEST PUSH2 0x29ED DUP3 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x22CD JUMPI PUSH2 0x29FF DUP12 DUP4 DUP4 PUSH1 0x1 PUSH2 0x4CCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x2A63 DUP4 PUSH32 0x0 PUSH2 0x3CAF JUMP JUMPDEST SWAP1 POP DUP7 PUSH2 0x2A76 JUMPI DUP1 SWAP7 POP PUSH1 0x1 SWAP6 POP PUSH2 0x2AFA JUMP JUMPDEST DUP7 DUP2 EQ PUSH2 0x2AF3 JUMPI DUP6 PUSH1 0x2 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x3 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 SWAP7 POP DUP6 DUP6 ADD SWAP5 POP PUSH1 0x1 SWAP6 POP PUSH2 0x2AFA JUMP JUMPDEST DUP6 PUSH1 0x1 ADD SWAP6 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x296E JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x2B5B JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP7 DUP5 MSTORE PUSH1 0x3 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP2 DUP4 ADD SWAP2 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 PUSH2 0x2B6F PUSH2 0x27F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP11 DUP11 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2BDF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2BC7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2C1E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2C06 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2C45 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST ISZERO PUSH2 0x1C90 JUMPI PUSH2 0x1C90 PUSH1 0x0 DUP10 DUP10 DUP10 DUP10 PUSH2 0x47E8 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA PUSH2 0x2C65 DUP4 PUSH2 0x4E1A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2CC3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2CA1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x2CC3 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 0x2CAF JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2CEF JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2CD0 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2D86 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2D90 PUSH2 0x27F2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2D9E DUP8 DUP4 PUSH2 0x27FC JUMP JUMPDEST SWAP1 POP PUSH2 0x2DB0 DUP8 DUP8 DUP8 PUSH1 0x1 DUP6 PUSH1 0x0 PUSH2 0x433B JUMP JUMPDEST DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP9 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2E61 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST ISZERO PUSH2 0x17E5 JUMPI PUSH2 0x2E6F DUP7 PUSH2 0x4720 JUMP JUMPDEST ISZERO PUSH2 0x2E87 JUMPI PUSH2 0x2E82 DUP8 DUP8 DUP8 PUSH1 0x1 DUP9 PUSH2 0x44F7 JUMP JUMPDEST PUSH2 0x17E5 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x17E5 JUMPI PUSH2 0x17E5 DUP8 DUP8 DUP8 DUP8 PUSH2 0x4F29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2EF4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x2F4B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2F55 PUSH2 0x27F2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2F63 DUP9 DUP4 PUSH2 0x27FC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 EQ PUSH2 0x30C4 JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2F81 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x2F94 DUP2 PUSH2 0x3C45 JUMP JUMPDEST ISZERO PUSH2 0x2FBE JUMPI PUSH2 0x2FB9 DUP14 DUP14 DUP4 DUP14 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x2FAB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH2 0x41C8 JUMP JUMPDEST PUSH2 0x30BB JUMP JUMPDEST PUSH2 0x2FE8 DUP2 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x22CD JUMPI PUSH2 0x300F DUP14 DUP14 DUP4 DUP14 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x2FFF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH1 0x1 PUSH2 0x433B JUMP JUMPDEST DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH2 0x307C DUP3 PUSH32 0x0 PUSH2 0x3CAF JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x308F JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x30B9 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x30B2 JUMPI PUSH2 0x30A2 DUP15 DUP15 DUP9 DUP9 PUSH2 0x4681 JUMP JUMPDEST SWAP5 POP PUSH1 0x1 SWAP4 SWAP3 SWAP1 SWAP3 ADD SWAP2 DUP5 PUSH2 0x30B9 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2F6C JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x30E4 JUMPI PUSH2 0x30D7 DUP12 DUP12 DUP6 DUP6 PUSH2 0x4681 JUMP JUMPDEST DUP2 ADD PUSH2 0x30E4 DUP12 DUP12 DUP4 PUSH2 0x46D5 JUMP JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3100 PUSH2 0x27F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP13 DUP13 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3170 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3158 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x31AF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3197 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x31D6 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST ISZERO PUSH2 0x31E8 JUMPI PUSH2 0x31E8 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x47E8 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3250 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x327A DUP4 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST PUSH2 0x32CB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420616E204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x32D9 DUP5 DUP5 PUSH1 0x1 PUSH1 0x0 PUSH2 0x4CCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 PUSH2 0x3325 PUSH2 0x27F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP7 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3380 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST ISZERO PUSH2 0x1D65 JUMPI PUSH2 0x338E DUP5 PUSH2 0x4720 JUMP JUMPDEST ISZERO PUSH2 0x33A7 JUMPI PUSH2 0x33A2 PUSH1 0x0 DUP6 DUP6 PUSH1 0x1 DUP7 PUSH2 0x44F7 JUMP JUMPDEST PUSH2 0x1D65 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1D65 JUMPI PUSH2 0x1D65 PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0x4F29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3415 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x345A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x3600 JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3478 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x34B5 PUSH32 0x0 DUP3 PUSH2 0x270A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3506 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420616E204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3514 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x352D DUP9 DUP3 PUSH1 0x1 DUP1 PUSH2 0x4CCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x3591 DUP3 PUSH32 0x0 PUSH2 0x3CAF JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x35A4 JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x35F6 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x35EF JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 ADD SWAP1 SSTORE SWAP7 DUP3 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP5 SWAP1 SWAP5 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 ADD SWAP1 SWAP3 SSTORE PUSH1 0x1 SWAP2 DUP4 PUSH2 0x35F6 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x3463 JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE DUP6 DUP5 MSTORE PUSH1 0x3 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE DUP1 DUP5 MSTORE PUSH1 0x8 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP1 PUSH2 0x3654 PUSH2 0x27F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP9 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x36C4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x36AC JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3703 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x36EB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x372A DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x373A JUMPI POP PUSH2 0x373A DUP7 PUSH2 0x4720 JUMP JUMPDEST ISZERO PUSH2 0x375C JUMPI PUSH2 0x375C PUSH1 0x0 DUP8 DUP8 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x47E8 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3790 DUP3 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x37E2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3859 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3863 PUSH2 0x27F2 JUMP JUMPDEST SWAP1 POP PUSH2 0x386E DUP5 PUSH2 0x3C45 JUMP JUMPDEST ISZERO PUSH2 0x3883 JUMPI PUSH2 0x387E DUP6 DUP6 DUP6 PUSH2 0x4BD8 JUMP JUMPDEST PUSH2 0x38F8 JUMP JUMPDEST PUSH2 0x38AD DUP5 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x22CD JUMPI PUSH2 0x38BF DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x4CCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP4 PUSH1 0x0 SWAP4 SWAP2 DUP7 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x3957 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST ISZERO PUSH2 0x1828 JUMPI PUSH2 0x1828 PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 PUSH2 0x44F7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x13F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3A21 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1DEF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1816 SWAP1 DUP5 SWAP1 PUSH2 0x50AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B6E PUSH2 0x27F2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3BD7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2073656C662D617070726F76616C0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3C75 PUSH2 0x528E JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CBA DUP3 PUSH2 0x4966 JUMP JUMPDEST NOT DUP4 AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3CEF DUP2 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x3D41 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x3DAB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E6720636F6C6C656374696F6E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3DB3 PUSH2 0x27F2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x3DF5 DUP2 PUSH2 0x3C45 JUMP JUMPDEST ISZERO ISZERO DUP2 PUSH32 0x4EBF8AD0DF535BA5E487BC9CB27FE44120CA81C3A95D3EBA79C0BD1DF2AB2D5D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST DUP7 DUP6 DUP2 EQ DUP1 ISZERO PUSH2 0x3E36 JUMPI POP DUP1 DUP5 EQ JUMPDEST PUSH2 0x3E87 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3E91 PUSH2 0x27F2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 EQ PUSH2 0x31E8 JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x3EAB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3F25 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206D696E7420746F207A65726F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x3F33 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH1 0x0 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x3F4A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH2 0x3F5C DUP3 PUSH2 0x3C45 JUMP JUMPDEST ISZERO PUSH2 0x4019 JUMPI PUSH2 0x3F6C DUP4 DUP4 DUP4 PUSH2 0x4BD8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 PUSH1 0x0 SWAP4 SWAP2 DUP11 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x3FCB DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST ISZERO PUSH2 0x4014 JUMPI PUSH2 0x4014 PUSH1 0x0 DUP5 DUP5 DUP5 DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x44F7 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x418C JUMP JUMPDEST PUSH2 0x4043 DUP3 PUSH32 0x0 PUSH2 0x270A JUMP JUMPDEST ISZERO PUSH2 0x22CD JUMPI PUSH2 0x4055 DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x4CCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 PUSH1 0x0 SWAP4 SWAP2 DUP11 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x40EC DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44F1 JUMP JUMPDEST ISZERO PUSH2 0x4014 JUMPI PUSH2 0x40FA DUP4 PUSH2 0x4720 JUMP JUMPDEST ISZERO PUSH2 0x4149 JUMPI PUSH2 0x4144 PUSH1 0x0 DUP5 DUP5 PUSH1 0x1 DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x44F7 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x4014 JUMP JUMPDEST PUSH2 0x4014 PUSH1 0x0 DUP5 DUP5 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4F29 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3E96 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x421A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x426C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x42E4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420656E6F7567682062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x375C JUMPI PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP8 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP6 KECCAK256 SWAP2 DUP5 SWAP1 SUB SWAP1 SWAP2 SSTORE SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP JUMP JUMPDEST DUP3 PUSH1 0x1 EQ PUSH2 0x4390 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x43FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6F776E6564204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x4490 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x443F JUMPI POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4434 PUSH2 0x27F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x4490 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 SSTORE DUP2 PUSH2 0x17E5 JUMPI PUSH2 0x44BB DUP8 DUP8 PUSH1 0x1 PUSH2 0x46D5 JUMP JUMPDEST PUSH2 0x17E5 DUP8 DUP8 PUSH2 0x44EA DUP9 PUSH32 0x0 PUSH2 0x3CAF JUMP JUMPDEST PUSH1 0x1 PUSH2 0x4681 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xF23A6E61 PUSH2 0x452F PUSH2 0x27F2 JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x45A9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4591 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x45D6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x45F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x460D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4623 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1828 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220726566757365640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1D65 JUMPI PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE SWAP3 SWAP1 SWAP4 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1816 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE SWAP2 DUP5 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD SWAP4 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP5 DUP6 SWAP5 DUP6 SWAP5 SWAP1 SWAP4 SWAP3 SWAP1 DUP2 DUP4 DUP6 DUP12 PUSH2 0x2710 STATICCALL SWAP6 POP DUP1 MLOAD SWAP5 POP POP POP POP PUSH1 0x9E GAS GT PUSH2 0x47D5 JUMPI INVALID JUMPDEST DUP3 DUP1 ISZERO PUSH2 0x47DF JUMPI POP DUP2 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xBC197C81 PUSH2 0x4820 PUSH2 0x27F2 JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4899 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4881 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x48D8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48C0 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4914 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48FC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4941 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x45F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH2 0x100 SWAP2 SWAP1 SWAP2 SUB SHL PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x49DA JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x4A0E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x4A42 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9CE5C4600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x13F9 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xBD85B03900000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x4A84 PUSH2 0x53F1 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x4AF7 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x4B05 JUMPI SWAP2 POP PUSH2 0x1495 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x4BC4 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4BAB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x4BD2 JUMPI SWAP2 POP PUSH2 0x1495 SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x4C2A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2076616C75650000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x4C90 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20737570706C79206F766572666C6F77000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP2 MSTORE DUP2 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP6 MSTORE SWAP5 SWAP1 SWAP5 MSTORE POP SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x4D1F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x4D80 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E672F6275726E74204E4654000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 SSTORE DUP1 PUSH2 0x1D65 JUMPI PUSH1 0x0 PUSH2 0x4DCB DUP5 PUSH32 0x0 PUSH2 0x3CAF JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP6 MSTORE DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x8 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x4E5B JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x13FC JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x4E73 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x4E5F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4E8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x4EB7 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x4F20 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x4EE6 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x4EC3 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0x150B7A02 PUSH2 0x4F61 PUSH2 0x27F2 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4FD4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4FBC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x5001 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5023 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5037 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x504D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1D65 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220726566757365640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x50BE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x44F1 JUMP JUMPDEST PUSH2 0x510F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x514C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x512D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x51AE 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 0x51B3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x5232 JUMPI DUP1 MLOAD ISZERO PUSH2 0x522D JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x522D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1828 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x5285 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x52FA JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x5311 JUMPI PUSH2 0x5307 PUSH2 0x53FD JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x53ED JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x53D7 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x535C PUSH2 0x53F1 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x53AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x53BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x53E4 JUMPI PUSH2 0x5307 PUSH2 0x53FD JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x5410 PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x54B9 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x544E JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x5494 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5467 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x5494 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5494 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5494 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5479 JUMP JUMPDEST POP PUSH2 0x54A0 SWAP3 SWAP2 POP PUSH2 0x54A4 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x54A0 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x54A5 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x54C8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x54D4 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1E 0xC6 PUSH20 0xF522D365CB03EF00609E37097C7FEF6C01C22307 0x26 0xDD SWAP10 PUSH11 0x70D48F939064736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "1277:5126:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3377:341:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3377:341:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2025:212:36;;;;;;;;;;;;;;;;-1:-1:-1;2025:212:36;-1:-1:-1;;;;;;2025:212:36;;:::i;:::-;;;;;;;;;;;;;;;;;;2706:98:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4890:377;;;;;;;;;;;;;;;;-1:-1:-1;4890:377:30;;:::i;:::-;;;;-1:-1:-1;;;;;4890:377:30;;;;;;;;;;;;;;3861:995;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3861:995:30;;;;;;;;:::i;:::-;;4878:263:36;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4878:263:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4878:263:36;;-1:-1:-1;4878:263:36;-1:-1:-1;4878:263:36;:::i;2412:110::-;;;;;;;;;;;;;;;;-1:-1:-1;2412:110:36;;:::i;5314:268:30:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5314:268:30;;;;;;;;;;;;;;;;;:::i;9096:302::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9096:302:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9096:302:30;;;;;;;;-1:-1:-1;9096:302:30;;-1:-1:-1;;9096:302:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9096:302:30;;;;;;;;-1:-1:-1;9096:302:30;;-1:-1:-1;;9096:302:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9096:302:30;;-1:-1:-1;9096:302:30;;-1:-1:-1;;;;;9096:302:30:i;3708:149:36:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3708:149:36;;;;;;;;:::i;5629:271:30:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5629:271:30;;;;;;;;;;;;;;;;;:::i;3964:161:36:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3964:161:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3964:161:36;;-1:-1:-1;3964:161:36;-1:-1:-1;3964:161:36;:::i;3762:435:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3762:435:13;;-1:-1:-1;3762:435:13;-1:-1:-1;3762:435:13;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:126:36;;;;;;;;;;;;;;;;-1:-1:-1;2702:126:36;;:::i;544:193:85:-;;;;;;;;;;;;;;;;-1:-1:-1;544:193:85;-1:-1:-1;;;;;544:193:85;;:::i;552:29:11:-;;;:::i;4544:227:36:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4544:227:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4544:227:36;;-1:-1:-1;4544:227:36;-1:-1:-1;4544:227:36;:::i;10251:167:30:-;;;;;;;;;;;;;;;;-1:-1:-1;10251:167:30;;:::i;3621:206::-;;;;;;;;;;;;;;;;-1:-1:-1;3621:206:30;-1:-1:-1;;;;;3621:206:30;;:::i;1137:481:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1137:481:8;;-1:-1:-1;1137:481:8;-1:-1:-1;1137:481:8;:::i;588:214:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;588:214:11;;-1:-1:-1;588:214:11;-1:-1:-1;588:214:11;:::i;4232:205:36:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4232:205:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4232:205:36;;-1:-1:-1;4232:205:36;-1:-1:-1;4232:205:36;:::i;1114:94:2:-;;;:::i;2846:102:30:-;;;:::i;694:120:1:-;;;;;;;;;;;;;;;;-1:-1:-1;694:120:1;-1:-1:-1;;;;;694:120:1;;:::i;929:185::-;;;:::i;9574:188:30:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9574:188:30;;;;;;;;;;:::i;339:40:1:-;;;;;;;;;;;;;;;;-1:-1:-1;339:40:1;-1:-1:-1;;;;;339:40:1;;:::i;4905:122:13:-;;;;;;;;;;;;;;;;-1:-1:-1;4905:122:13;;:::i;5947:300:30:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5947:300:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5947:300:30;;-1:-1:-1;5947:300:30;;-1:-1:-1;;;;;5947:300:30:i;5788:282:13:-;;;;;;;;;;;;;;;;-1:-1:-1;5788:282:13;;:::i;2430:511:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2430:511:8;;-1:-1:-1;2430:511:8;-1:-1:-1;2430:511:8;:::i;6307:94:36:-;;;:::i;5071:254:13:-;;;;;;;;;;;;;;;;-1:-1:-1;5071:254:13;;:::i;2990:218:30:-;;;;;;;;;;;;;;;;-1:-1:-1;2990:218:30;;:::i;3326:146:36:-;;;;;;;;;;;;;;;;-1:-1:-1;3326:146:36;;:::i;5382:286::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5382:286:36;;-1:-1:-1;5382:286:36;-1:-1:-1;5382:286:36;:::i;9809:264:30:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9809:264:30;;;;;;;;;;:::i;8159:890::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8159:890:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8159:890:30;;-1:-1:-1;8159:890:30;;-1:-1:-1;;;;;8159:890:30:i;1448:197:2:-;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;6294:1689:30:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6294:1689:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6294:1689:30;;-1:-1:-1;6294:1689:30;;-1:-1:-1;;;;;6294:1689:30:i;3377:341:13:-;3461:7;-1:-1:-1;;;;;3488:19:13;;3480:55;;;;;-1:-1:-1;;;3480:55:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;3550:44;:2;3572:21;3550;:44::i;:::-;3546:128;;;3633:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;3617:38:13;;;;;;:46;;3662:1;3617:46;;;3658:1;3617:46;3610:53;;;;;;3546:128;-1:-1:-1;3691:13:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;3691:20:13;;;;;;;;;;3377:341;;;;;:::o;2025:212:36:-;2110:4;-1:-1:-1;;;;;;2133:57:36;;2148:42;2133:57;;:97;;;2194:36;2218:11;2194:23;:36::i;:::-;2126:104;;2025:212;;;;:::o;2706:98:30:-;2792:5;2785:12;;;;;;;;-1:-1:-1;;2785:12:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2760:13;;2785:12;;2792:5;;2785:12;;2792:5;2785:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2706:98;;:::o;4890:377::-;4966:7;5001:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5035:37:30;;5027:77;;;;;-1:-1:-1;;;5027:77:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5118:34:30;;:39;5114:147;;-1:-1:-1;;5180:22:30;;;;:13;:22;;;;;;-1:-1:-1;;;;;5180:22:30;5173:29;;5114:147;5248:1;5233:17;;;;;3861:995;3941:13;3957:16;;;:7;:16;;;;;;3991:10;3983:50;;;;;-1:-1:-1;;;3983:50:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;4082:5;-1:-1:-1;;;;;4107:18:30;;;;;;;;4099:55;;;;;-1:-1:-1;;;4099:55:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;4172:41;4186:12;4200;:10;:12::i;:::-;4172:13;:41::i;:::-;4164:84;;;;;-1:-1:-1;;;4164:84:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4262:16:30;;4258:542;;-1:-1:-1;;;4298:34:30;;:39;4294:178;;4417:16;;;;:7;:16;;;;;-1:-1:-1;;;;;4436:21:30;;4417:40;;4294:178;4258:542;;;-1:-1:-1;;;4533:34:30;;4585:29;;;4581:168;;4695:16;;;;:7;:16;;;;;:39;;;4581:168;-1:-1:-1;4762:22:30;;;;:13;:22;;;;;:27;;-1:-1:-1;;4762:27:30;-1:-1:-1;;;;;4762:27:30;;;;;4258:542;4841:7;4837:2;-1:-1:-1;;;;;4814:35:30;4823:12;-1:-1:-1;;;;;4814:35:30;;;;;;;;;;;3861:995;;;;:::o;4878:263:36:-;5059:28;5074:12;:10;:12::i;:::-;5059:14;:28::i;:::-;5097:37;5112:2;5116:3;;5097:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5097:37:36;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5121:6:36;;-1:-1:-1;5121:6:36;;;;5097:37;;;5121:6;;5097:37;5121:6;5097:37;;;;;;;;;-1:-1:-1;;5097:37:36;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5129:4:36;;-1:-1:-1;5129:4:36;;;;5097:37;;5129:4;;;;5097:37;;;;;;;;;-1:-1:-1;5097:14:36;;-1:-1:-1;;;5097:37:36:i;:::-;4878:263;;;;;;;:::o;2412:110::-;2475:13;2507:8;2512:2;2507:4;:8::i;5314:268:30:-;5441:134;5468:4;5486:2;5502:5;5441:134;;;;;;;;;;;;5560:5;5441:13;:134::i;:::-;5314:268;;;:::o;9096:302::-;9340:51;9363:4;9369:2;9373:3;9378:6;9386:4;9340:22;:51::i;:::-;9096:302;;;;;:::o;3708:149:36:-;3785:28;3800:12;:10;:12::i;3785:28::-;3823:27;3829:2;3833:5;3823:27;;;;;;;;;;;;3844:5;3823;:27::i;:::-;3708:149;;:::o;5629:271:30:-;5760:133;5787:4;5805:2;5821:5;5760:133;;;;;;;;;;;;5879:4;5760:13;:133::i;3964:161:36:-;4058:28;4073:12;:10;:12::i;4058:28::-;4096:22;4107:2;4111:6;;4096:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4096:10:36;;-1:-1:-1;;;4096:22:36:i;3762:435:13:-;3877:16;3913:27;;;3905:70;;;;;-1:-1:-1;;;3905:70:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;3986:25;4028:6;4014:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4014:28:13;;3986:56;;4058:9;4053:112;4073:18;;;4053:112;;4126:28;4136:6;;4143:1;4136:9;;;;;;;;;;;;;-1:-1:-1;;;;;4136:9:13;4147:3;;4151:1;4147:6;;;;;;;;;;;;;4126:9;:28::i;:::-;4112:8;4121:1;4112:11;;;;;;;;;;;;;;;;;:42;4093:3;;4053:112;;;-1:-1:-1;4182:8:13;3762:435;-1:-1:-1;;;;;3762:435:13:o;2702:126:36:-;2773:7;2799:22;2808:12;2799:8;:22::i;544:193:85:-;631:4;667:19;-1:-1:-1;;;;;654:32:85;:9;-1:-1:-1;;;;;654:32:85;;:76;;;;711:18;-1:-1:-1;;;;;690:40:85;:9;-1:-1:-1;;;;;690:40:85;;647:83;;544:193;;;:::o;552:29:11:-;;;;;;;;;;;;;;;-1:-1:-1;;552:29:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4544:227:36:-;4696:28;4711:12;:10;:12::i;4696:28::-;4734:30;4744:2;4748;4752:5;4759:4;;4734:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4734:9:36;;-1:-1:-1;;;4734:30:36:i;10251:167:30:-;10365:7;10391:20;10405:5;10391:13;:20::i;3621:206::-;3700:7;-1:-1:-1;;;;;3727:24:30;;3719:60;;;;;-1:-1:-1;;;3719:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3796:24:30;;;;;:12;:24;;;;;;;3621:206::o;1137:481:8:-;1301:31;1319:12;:10;:12::i;:::-;1301:17;:31::i;:::-;1359:8;1392:23;;;:51;;;;-1:-1:-1;1419:24:8;;;1392:51;1384:90;;;;;-1:-1:-1;;;1384:90:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;1489:9;1484:128;1509:6;1504:1;:11;1484:128;;1536:65;1577:8;;1586:1;1577:11;;;;;;;;;;;;;-1:-1:-1;;;;;1577:11:8;1590:7;;1598:1;1590:10;;;;;;;;;;;;;1550:6;;1557:1;1550:9;;;;;;;;;;;;;-1:-1:-1;;;;;1550:9:8;-1:-1:-1;;;;;1536:40:8;;;:65;;;;;:::i;:::-;1517:3;;1484:128;;;;1137:481;;;;;;;:::o;588:214:11:-;669:31;687:12;:10;:12::i;669:31::-;710:34;:15;728:16;;710:34;:::i;:::-;;759:36;778:16;;759:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;759:36:11;;;;;;;;-1:-1:-1;759:36:11;;-1:-1:-1;;;;759:36:11;588:214;;:::o;4232:205:36:-;4364:28;4379:12;:10;:12::i;4364:28::-;4402;4408:2;4412:5;4419:4;;4402:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4425:4:36;;-1:-1:-1;4402:5:36;;-1:-1:-1;;4402:28:36:i;:::-;4232:205;;;;:::o;1114:94:2:-;1169:7;1195:6;-1:-1:-1;;;;;1195:6:2;1114:94;:::o;2846:102:30:-;2934:7;2927:14;;;;;;;;-1:-1:-1;;2927:14:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2902:13;;2927:14;;2934:7;;2927:14;;2934:7;2927:14;;;;;;;;;;;;;;;;;;;;;;;;694:120:1;747:31;765:12;:10;:12::i;747:31::-;788:19;799:7;788:10;:19::i;:::-;694:120;:::o;929:185::-;972:15;990:12;:10;:12::i;:::-;972:30;;1012:23;1027:7;1012:14;:23::i;:::-;-1:-1:-1;;;;;1045:17:1;;1065:5;1045:17;;;:8;:17;;;;;;:25;;-1:-1:-1;;1045:25:1;;;1085:22;;;1065:5;1085:22;929:185;:::o;9574:188:30:-;9712:43;9736:8;9746;9712:23;:43::i;339:40:1:-;;;;;;;;;;;;;;;:::o;4905:122:13:-;4977:4;5000:20;:2;:18;:20::i;5947:300:30:-;6105:135;6132:4;6150:2;6166:5;6185:4;6226;6105:13;:135::i;5788:282:13:-;5861:7;5884:44;:2;5906:21;5884;:44::i;:::-;5880:184;;;5992:1;5967:11;;;:7;:11;;;;;;-1:-1:-1;;;;;5951:43:13;;:51;;6001:1;5951:51;;;5997:1;5951:51;5944:58;;;;;;5880:184;-1:-1:-1;6040:13:13;;;;:9;:13;;;;;;6033:20;;2430:511:8;2599:31;2617:12;:10;:12::i;2599:31::-;2657:8;2690:26;;;:55;;;;-1:-1:-1;2720:25:8;;;2690:55;2682:94;;;;;-1:-1:-1;;;2682:94:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:9;2786:149;2811:6;2806:1;:11;2786:149;;2857:9;;2867:1;2857:12;;;;;;;;;;;;;-1:-1:-1;;;;;2857:12:8;-1:-1:-1;;;;;2838:45:8;;2892:4;2899:8;;2908:1;2899:11;;;;;;;;;;;;;-1:-1:-1;;;;;2899:11:8;2912:8;;2921:1;2912:11;;;;;;;;;;;;;2838:86;;;;;;;;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:3;;;;;2786:149;;6307:94:36;6349:16;6384:10;:8;:10::i;:::-;6377:17;;6307:94;:::o;5071:254:13:-;5148:7;5175:47;:5;5200:21;5175:24;:47::i;:::-;5167:81;;;;;-1:-1:-1;;;5167:81:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;5265:53;:5;5296:21;5265:30;:53::i;2990:218:30:-;3140:1;3112:14;;;:7;:14;;;;;;3063:13;;-1:-1:-1;;;;;3096:46:30;3088:86;;;;;-1:-1:-1;;;3088:86:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;3191:10;3195:5;3191:3;:10::i;3326:146:36:-;3393:31;3411:12;:10;:12::i;3393:31::-;3434;3452:12;3434:17;:31::i;5382:286::-;5580:28;5595:12;:10;:12::i;5580:28::-;5618:43;5631:10;;5643:3;;5648:6;;5656:4;;5618:12;:43::i;9809:264:30:-;9995:4;10022:44;10045:10;10057:8;10022:22;:44::i;:::-;10015:51;9809:264;-1:-1:-1;;;9809:264:30:o;8159:890::-;8378:14;8395:12;:10;:12::i;:::-;8378:29;-1:-1:-1;;;;;;8425:16:30;;8417:56;;;;;-1:-1:-1;;;8417:56:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8483:15;8501:27;8515:4;8521:6;8501:13;:27::i;:::-;8483:45;;8543:20;:2;:18;:20::i;:::-;8539:341;;;8579:50;8597:4;8603:2;8607;8611:5;8618:10;8579:17;:50::i;:::-;8539:341;;;8650:44;:2;8672:21;8650;:44::i;:::-;8646:234;;;8710:52;8723:4;8729:2;8733;8737:5;8744:10;8756:5;8710:12;:52::i;:::-;8800:2;8796;-1:-1:-1;;;;;8781:22:30;8790:4;-1:-1:-1;;;;;8781:22:30;;;;;;;;;;;8646:234;;;8834:35;;;-1:-1:-1;;;8834:35:30;;;;;;;;;;;;;;;;;;;;;;;;;;;8646:234;8924:2;-1:-1:-1;;;;;8895:43:30;8918:4;-1:-1:-1;;;;;8895:43:30;8910:6;-1:-1:-1;;;;;8895:43:30;;8928:2;8932:5;8895:43;;;;;;;;;;;;;;;;;;;;;;;;8952:15;:2;-1:-1:-1;;;;;8952:13:30;;:15::i;:::-;8948:95;;;8983:49;9006:4;9012:2;9016;9020:5;9027:4;8983:22;:49::i;1448:197:2:-;1527:31;1545:12;:10;:12::i;1527:31::-;1568:6;:17;;-1:-1:-1;;1568:17:2;-1:-1:-1;;;;;1568:17:2;;;;;;;;;1600:38;;1568:17;;1621:6;;;1600:38;;1568:6;1600:38;1448:197;:::o;6294:1689:30:-;-1:-1:-1;;;;;6444:16:30;;6436:56;;;;;-1:-1:-1;;;6436:56:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;6502:14;6519:12;:10;:12::i;:::-;6502:29;;6541:15;6559:27;6573:4;6579:6;6559:13;:27::i;:::-;6614:13;;6541:45;;-1:-1:-1;6597:14:30;6614:13;6663:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6663:21:30;;6637:47;;6695:22;6727:25;6767:9;6762:812;6783:6;6778:1;:11;6762:812;;6810:13;6826:6;6833:1;6826:9;;;;;;;;;;;;;;6810:25;;6861:1;6849:6;6856:1;6849:9;;;;;;;;;;;;;:13;;;;;6876:50;6889:4;6895:2;6899:5;6906:1;6909:10;6921:4;6876:12;:50::i;:::-;6964:5;6960:2;-1:-1:-1;;;;;6945:25:30;6954:4;-1:-1:-1;;;;;6945:25:30;;;;;;;;;;;6984:24;7011:53;:5;7042:21;7011:30;:53::i;:::-;6984:80;-1:-1:-1;7082:19:30;7078:486;;7138:16;7121:33;;7192:1;7172:21;;7078:486;;;7256:14;7236:16;:34;7232:318;;7294:73;7323:4;7329:2;7333:14;7349:17;7294:28;:73::i;:::-;7406:16;7389:33;;7464:1;7444:21;;7232:318;;;7512:19;;;;;7232:318;-1:-1:-1;;6791:3:30;;6762:812;;;-1:-1:-1;7588:19:30;;7584:181;;7623:73;7652:4;7658:2;7662:14;7678:17;7623:28;:73::i;:::-;7710:44;7737:4;7743:2;7747:6;7710:26;:44::i;:::-;7814:2;-1:-1:-1;;;;;7780:53:30;7808:4;-1:-1:-1;;;;;7780:53:30;7794:12;:10;:12::i;:::-;-1:-1:-1;;;;;7780:53:30;;7818:6;7826;7780:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7847:15;:2;-1:-1:-1;;;;;7847:13:30;;:15::i;:::-;:46;;;;;7866:27;7890:2;7866:23;:27::i;:::-;7843:134;;;7909:57;7937:4;7943:2;7947:6;7955;7909:57;;;;;;;;;;;;:27;:57::i;:::-;6294:1689;;;;;;;;;:::o;875:200:15:-;968:4;747:8;991:12;;:17;;;;:77;;;1017:46;1042:20;1017:24;:46::i;:::-;1012:51;;;:56;;;875:200;-1:-1:-1;;875:200:15:o;2183:352:30:-;2268:4;-1:-1:-1;;;;;;2303:40:30;;2318:25;2303:40;;:104;;-1:-1:-1;;;;;;;2359:48:30;;2374:33;2359:48;2303:104;:173;;;-1:-1:-1;;;;;;;2423:53:30;;2438:38;2423:53;2303:173;:225;;;;2492:36;2516:11;2492:23;:36::i;5803:183:36:-;5908:15;5942:37;:35;:37::i;7572:158:13:-;7656:4;7688:6;-1:-1:-1;;;;;7680:14:13;:4;-1:-1:-1;;;;;7680:14:13;;7679:44;;;-1:-1:-1;;;;;;;7699:16:13;;;;;;;:10;:16;;;;;;;;:24;;;;;;;;;;;;;;;7572:158::o;1120:126:1:-;-1:-1:-1;;;;;1193:17:1;;;;;;:8;:17;;;;;;;;1185:54;;;;;-1:-1:-1;;;1185:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;17763:2096:30;-1:-1:-1;;;;;17938:16:30;;17930:52;;;;;-1:-1:-1;;;17930:52:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;18009:10;;18047:13;;18037:23;;18029:66;;;;;-1:-1:-1;;;18029:66:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;18106:22;18138:25;18173:17;18205:9;18200:1207;18221:6;18216:1;:11;18200:1207;;18248:10;18261:3;18265:1;18261:6;;;;;;;;;;;;;;18248:19;;18281:13;18297:6;18304:1;18297:9;;;;;;;;;;;;;;18281:25;;18324:20;:2;:18;:20::i;:::-;18320:1077;;;18364:28;18378:2;18382;18386:5;18364:13;:28::i;:::-;18320:1077;;;18417:44;:2;18439:21;18417;:44::i;:::-;18413:984;;;18481:29;18490:2;18494;18498:5;18505:4;18481:8;:29::i;:::-;18533:28;;18558:2;;-1:-1:-1;;;;;18533:28:30;;;18550:1;;18533:28;;18550:1;;18533:28;18579:24;18606:50;:2;18634:21;18606:27;:50::i;:::-;18579:77;-1:-1:-1;18678:19:30;18674:635;;18738:16;18721:33;;18796:1;18776:21;;18674:635;;;18868:14;18848:16;:34;18844:447;;18943:17;18910:9;:25;18920:14;18910:25;;;;;;;;;;;:29;18936:2;-1:-1:-1;;;;;18910:29:30;-1:-1:-1;;;;;18910:29:30;;;;;;;;;;;;;:50;;;;;;;;;;;19015:17;18986:9;:25;18996:14;18986:25;;;;;;;;;;;;:46;;;;;;;;;;;19075:16;19058:33;;19130:17;19117:30;;;;19193:1;19173:21;;18844:447;;;19249:19;;;;;18844:447;18413:984;;-1:-1:-1;;18229:3:30;;18200:1207;;;-1:-1:-1;19421:19:30;;19417:247;;19456:25;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;19456:29:30;;;;;;;;;;;:50;;;;;;19520:25;;;:9;:25;;;;;:46;;;;;;19624:16;;:12;:16;;;;;:29;;19580:30;;;19624:29;;;;;19417:247;-1:-1:-1;;;;;19679:56:30;;19715:1;19693:12;:10;:12::i;:::-;-1:-1:-1;;;;;19679:56:30;;19723:3;19728:6;19679:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19749:15;:2;-1:-1:-1;;;;;19749:13:30;;:15::i;:::-;19745:108;;;19780:62;19816:1;19820:2;19824:3;19829:6;19837:4;19780:27;:62::i;808:159:11:-;865:13;921:15;938:20;:2;:18;:20::i;:::-;904:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:11;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;890:70;;808:159;;;:::o;10847:737:30:-;-1:-1:-1;;;;;11014:16:30;;11006:56;;;;;-1:-1:-1;;;11006:56:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;11072:14;11089:12;:10;:12::i;:::-;11072:29;;11111:15;11129:27;11143:4;11149:6;11129:13;:27::i;:::-;11111:45;;11167:51;11180:4;11186:2;11190:5;11197:1;11200:10;11212:5;11167:12;:51::i;:::-;11253:5;11249:2;-1:-1:-1;;;;;11234:25:30;11243:4;-1:-1:-1;;;;;11234:25:30;;;;;;;;;;;11303:2;-1:-1:-1;;;;;11274:42:30;11297:4;-1:-1:-1;;;;;11274:42:30;11289:6;-1:-1:-1;;;;;11274:42:30;;11307:5;11314:1;11274:42;;;;;;;;;;;;;;;;;;;;;;;;11330:15;:2;-1:-1:-1;;;;;11330:13:30;;:15::i;:::-;11326:252;;;11365:27;11389:2;11365:23;:27::i;:::-;11361:207;;;11412:48;11435:4;11441:2;11445:5;11452:1;11455:4;11412:22;:48::i;:::-;11361:207;;;11485:4;11481:87;;;11509:44;11531:4;11537:2;11541:5;11548:4;11509:21;:44::i;11775:2143::-;-1:-1:-1;;;;;11972:16:30;;11964:56;;;;;-1:-1:-1;;;11964:56:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;12047:10;;12085:13;;12075:23;;12067:66;;;;;-1:-1:-1;;;12067:66:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;12143:14;12160:12;:10;:12::i;:::-;12143:29;;12182:15;12200:27;12214:4;12220:6;12200:13;:27::i;:::-;12182:45;;12238:22;12270:25;12305:17;12337:9;12332:1165;12353:6;12348:1;:11;12332:1165;;12380:10;12393:3;12397:1;12393:6;;;;;;;;;;;;;;12380:19;;12417:20;:2;:18;:20::i;:::-;12413:1074;;;12457:54;12475:4;12481:2;12485;12489:6;12496:1;12489:9;;;;;;;;;;;;;;12500:10;12457:17;:54::i;:::-;12413:1074;;;12536:44;:2;12558:21;12536;:44::i;:::-;12532:955;;;12600:55;12613:4;12619:2;12623;12627:6;12634:1;12627:9;;;;;;;;;;;;;;12638:10;12650:4;12600:12;:55::i;:::-;12697:2;12693;-1:-1:-1;;;;;12678:22:30;12687:4;-1:-1:-1;;;;;12678:22:30;;;;;;;;;;;12718:24;12745:50;:2;12773:21;12745:27;:50::i;:::-;12718:77;-1:-1:-1;12817:19:30;12813:586;;12877:16;12860:33;;12935:1;12915:21;;12813:586;;;13007:14;12987:16;:34;12983:398;;13049:73;13078:4;13084:2;13088:14;13104:17;13049:28;:73::i;:::-;13165:16;-1:-1:-1;13283:1:30;;13207:30;;;;;13165:16;12983:398;;;13339:19;;;;;12983:398;12532:955;;-1:-1:-1;12361:3:30;;12332:1165;;;-1:-1:-1;13511:19:30;;13507:228;;13546:73;13575:4;13581:2;13585:14;13601:17;13546:28;:73::i;:::-;13633:30;;13677:47;13704:4;13710:2;13633:30;13677:26;:47::i;:::-;13784:2;-1:-1:-1;;;;;13750:50:30;13778:4;-1:-1:-1;;;;;13750:50:30;13764:12;:10;:12::i;:::-;-1:-1:-1;;;;;13750:50:30;;13788:3;13793:6;13750:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13814:15;:2;-1:-1:-1;;;;;13814:13:30;;:15::i;:::-;13810:102;;;13845:56;13873:4;13879:2;13883:3;13888:6;13896:4;13845:27;:56::i;:::-;11775:2143;;;;;;;;;;;:::o;14190:708::-;-1:-1:-1;;;;;14327:16:30;;14319:52;;;;;-1:-1:-1;;;14319:52:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;14389:47;:5;14414:21;14389:24;:47::i;:::-;14381:81;;;;;-1:-1:-1;;;14381:81:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;14473:29;14482:2;14486:5;14493:1;14496:5;14473:8;:29::i;:::-;14518:31;;14543:5;;-1:-1:-1;;;;;14518:31:30;;;14535:1;;14518:31;;14535:1;;14518:31;-1:-1:-1;;;;;14564:54:30;;14601:1;14579:12;:10;:12::i;:::-;-1:-1:-1;;;;;14564:54:30;;14609:5;14616:1;14564:54;;;;;;;;;;;;;;;;;;;;;;;;14632:15;:2;-1:-1:-1;;;;;14632:13:30;;:15::i;:::-;14628:264;;;14667:27;14691:2;14667:23;:27::i;:::-;14663:219;;;14714:54;14745:1;14749:2;14753:5;14760:1;14763:4;14714:22;:54::i;:::-;14663:219;;;14793:4;14789:93;;;14817:50;14847:1;14851:2;14855:5;14862:4;14817:21;:50::i;15071:1623::-;-1:-1:-1;;;;;15155:16:30;;15147:52;;;;;-1:-1:-1;;;15147:52:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;15227:13;;15210:14;15227:13;15276:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15276:21:30;;15250:47;;15308:22;15340:25;15380:9;15375:936;15396:6;15391:1;:11;15375:936;;15423:13;15439:6;15446:1;15439:9;;;;;;;;;;;;;;15423:25;;15470:47;15495:21;15470:5;:24;;:47;;;;:::i;:::-;15462:81;;;;;-1:-1:-1;;;15462:81:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;15569:1;15557:6;15564:1;15557:9;;;;;;;;;;;;;:13;;;;;15584:28;15593:2;15597:5;15604:1;15607:4;15584:8;:28::i;:::-;15631:31;;15656:5;;-1:-1:-1;;;;;15631:31:30;;;15648:1;;15631:31;;15648:1;;15631:31;15676:24;15703:53;:5;15734:21;15703:30;:53::i;:::-;15676:80;-1:-1:-1;15774:19:30;15770:531;;15830:16;15813:33;;15884:1;15864:21;;15770:531;;;15948:14;15928:16;:34;15924:363;;15986:25;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;15986:29:30;;;;;;;;;:50;;;;;;16058:25;;;:9;:25;;;;;;:46;;;;;;;;-1:-1:-1;;16143:16:30;15924:363;;;16249:19;;;;;15924:363;-1:-1:-1;;15404:3:30;;15375:936;;;-1:-1:-1;16321:25:30;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;16321:29:30;;;;;;;;;;;:50;;;;;;16381:25;;;:9;:25;;;;;:46;;;;;;16437:16;;;:12;:16;;;;;:26;;;;;;16321:29;16493:12;:10;:12::i;:::-;-1:-1:-1;;;;;16479:59:30;;16523:6;16531;16479:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16552:15;:2;-1:-1:-1;;;;;16552:13:30;;:15::i;:::-;:46;;;;;16571:27;16595:2;16571:23;:27::i;:::-;16548:140;;;16614:63;16650:1;16654:2;16658:6;16666;16614:63;;;;;;;;;;;;:27;:63::i;:::-;15071:1623;;;;;;:::o;6918:232:13:-;6989:7;7017:54;:12;7049:21;7017:31;:54::i;:::-;7016:55;7008:95;;;;;-1:-1:-1;;;7008:95:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7120:23:13;;;;:9;:23;;;;;;-1:-1:-1;;;;;7120:23:13;;6918:232::o;16857:727:30:-;-1:-1:-1;;;;;17007:16:30;;16999:52;;;;;-1:-1:-1;;;16999:52:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;17061:14;17078:12;:10;:12::i;:::-;17061:29;;17104:20;:2;:18;:20::i;:::-;17100:303;;;17140:28;17154:2;17158;17162:5;17140:13;:28::i;:::-;17100:303;;;17189:44;:2;17211:21;17189;:44::i;:::-;17185:218;;;17249:30;17258:2;17262;17266:5;17273;17249:8;:30::i;:::-;17298:28;;17323:2;;-1:-1:-1;;;;;17298:28:30;;;17315:1;;17298:28;;17315:1;;17298:28;17185:218;17418:49;;;;;;;;;;;;;;-1:-1:-1;;;;;17418:49:30;;;;17449:1;;17418:49;;;;;;;;;;;;;;17481:15;:2;-1:-1:-1;;;;;17481:13:30;;:15::i;:::-;17477:101;;;17512:55;17543:1;17547:2;17551;17555:5;17562:4;17512:22;:55::i;5369:235:13:-;5439:7;5490:14;;;:7;:14;;;;;;-1:-1:-1;;;;;5524:19:13;;5516:59;;;;;-1:-1:-1;;;5516:59:13;;;;;;;;;;;;;;;;;;;;;;;;;;;1770:136:2;1860:4;-1:-1:-1;;;;;1860:10:2;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1860:12:2;-1:-1:-1;;;;;1849:23:2;;;;;;1841:58;;;;;-1:-1:-1;;;1841:58:2;;;;;;;;;;;;;;;;;;;;;;;;;;;416:223:6;573:58;;;-1:-1:-1;;;;;573:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;596:23;573:58;;;538:94;;566:5;;538:27;:94::i;1252:122:1:-;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;4232:301:13:-;4326:14;4343:12;:10;:12::i;:::-;4326:29;;4385:6;-1:-1:-1;;;;;4373:18:13;:8;-1:-1:-1;;;;;4373:18:13;;;4365:55;;;;;-1:-1:-1;;;4365:55:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4430:18:13;;;;;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;;:39;;-1:-1:-1;;4430:39:13;;;;;;;;;;4484:42;;;;;;;;;;;;;;;;;4232:301;;;:::o;762:107:15:-;747:8;845:12;:17;;762:107::o;5992:180:36:-;6095:16;6130:35;:33;:35::i;:::-;6123:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6123:42:36;;-1:-1:-1;;;;5992:180:36;:::o;1081:190:15:-;1183:7;1218:46;1243:20;1218:24;:46::i;:::-;1217:47;1209:5;:55;1202:62;;1081:190;;;;:::o;6518:394:13:-;6603:54;:12;6635:21;6603:31;:54::i;:::-;6602:55;6594:95;;;;;-1:-1:-1;;;6594:95:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;6742:1;6707:23;;;:9;:23;;;;;;-1:-1:-1;;;;;6707:23:13;:37;6699:80;;;;;-1:-1:-1;;;6699:80:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;6815:12;:10;:12::i;:::-;6789:23;;;;:9;:23;;;;;:38;;-1:-1:-1;;6789:38:13;-1:-1:-1;;;;;6789:38:13;;;;;;;;;;6874:30;6789:23;6874:28;:30::i;:::-;6842:63;;6860:12;6842:63;;;;;;;;;;6518:394;:::o;20029:1526:30:-;20228:10;20263:20;;;:47;;;;-1:-1:-1;20287:23:30;;;20263:47;20255:90;;;;;-1:-1:-1;;;20255:90:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;20356:14;20373:12;:10;:12::i;:::-;20356:29;;20400:9;20395:1154;20416:6;20411:1;:11;20395:1154;;20443:10;20456;;20467:1;20456:13;;;;;;;;;;;;;-1:-1:-1;;;;;20456:13:30;20443:26;;20505:1;-1:-1:-1;;;;;20491:16:30;:2;-1:-1:-1;;;;;20491:16:30;;;20483:52;;;;;-1:-1:-1;;;20483:52:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;20549:10;20562:3;;20566:1;20562:6;;;;;;;;;;;;;20549:19;;20582:13;20598:6;;20605:1;20598:9;;;;;;;;;;;;;20582:25;;20625:20;:2;:18;:20::i;:::-;20621:918;;;20665:28;20679:2;20683;20687:5;20665:13;:28::i;:::-;20716:49;;;;;;;;;;;;;;-1:-1:-1;;;;;20716:49:30;;;;20747:1;;20716:49;;;;;;;;;;;;;;20787:15;:2;-1:-1:-1;;;;;20787:13:30;;:15::i;:::-;20783:117;;;20826:55;20857:1;20861:2;20865;20869:5;20876:4;;20826:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20826:22:30;;-1:-1:-1;;;20826:55:30:i;:::-;20621:918;;;20924:44;:2;20946:21;20924;:44::i;:::-;20920:619;;;20988:30;20997:2;21001;21005:5;21012;20988:8;:30::i;:::-;21041:28;;21066:2;;-1:-1:-1;;;;;21041:28:30;;;21058:1;;21041:28;;21058:1;;21041:28;21092:45;;;;;;21135:1;21092:45;;;;;;-1:-1:-1;;;;;21092:45:30;;;;21123:1;;21092:45;;;;;;;;;;;;;;21159:15;:2;-1:-1:-1;;;;;21159:13:30;;:15::i;:::-;21155:296;;;21202:27;21226:2;21202:23;:27::i;:::-;21198:235;;;21257:51;21288:1;21292:2;21296;21300:1;21303:4;;21257:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21257:22:30;;-1:-1:-1;;;21257:51:30:i;:::-;21198:235;;;21363:47;21393:1;21397:2;21401;21405:4;;21363:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21363:21:30;;-1:-1:-1;;;21363:47:30:i;20920:619::-;20395:1154;;;20424:3;;;;;20395:1154;;4568:164:13;-1:-1:-1;;;;;4693:22:13;;;4670:4;4693:22;;;:10;:22;;;;;;;;:32;;;;;;;;;;;;;;;4568:164::o;22822:575:30:-;22992:10;22984:53;;;;;-1:-1:-1;;;22984:53:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;23055:10;23047:44;;;;;-1:-1:-1;;;23047:44:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;23101:15;23119:13;;;:9;:13;;;;;;;;-1:-1:-1;;;;;23119:19:30;;;;;;;;;;23156:16;;;;23148:58;;;;;-1:-1:-1;;;23148:58:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;23228:2;-1:-1:-1;;;;;23220:10:30;:4;-1:-1:-1;;;;;23220:10:30;;23216:175;;23246:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;23246:19:30;;;;;;;;;;;23268:15;;;;23246:37;;;23354:17;;;;;;;;;:26;;;;;;;-1:-1:-1;22822:575:30:o;23403:768::-;23598:5;23607:1;23598:10;23590:49;;;;;-1:-1:-1;;;23590:49:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;23649:13;23665:11;;;:7;:11;;;;;;-1:-1:-1;;;;;23694:31:30;;;;;;;23686:68;;;;;-1:-1:-1;;;23686:68:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;23769:10;23764:163;;-1:-1:-1;;;23804:34:30;;:39;;;;23803:78;;-1:-1:-1;23864:17:30;;;;:13;:17;;;;;;-1:-1:-1;;;;;23864:17:30;23848:12;:10;:12::i;:::-;-1:-1:-1;;;;;23848:33:30;;23803:78;23795:121;;;;;-1:-1:-1;;;23795:121:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;23936:11;;;;:7;:11;;;;;-1:-1:-1;;;;;23950:20:30;;23936:34;;23985:7;23980:185;;24008:39;24035:4;24041:2;24045:1;24008:26;:39::i;:::-;24061:93;24090:4;24096:2;24100:50;:2;24128:21;24100:27;:50::i;:::-;24152:1;24061:28;:93::i;913:377:9:-;1229:20;1275:8;;;913:377::o;8201:317:13:-;8462:17;-1:-1:-1;;;;;8378:43:13;;1559:10;8422:12;:10;:12::i;:::-;8436:4;8442:2;8446:5;8453:4;8378:80;;;;;;;;;;;;;-1:-1:-1;;;;;8378:80:13;;;;;;-1:-1:-1;;;;;8378:80:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8378:80:13;-1:-1:-1;;;;;;8378:101:13;;8370:141;;;;;-1:-1:-1;;;8370:141:13;;;;;;;;;;;;;;;;;;;;;;;;;;;24564:434:30;24743:2;-1:-1:-1;;;;;24735:10:30;:4;-1:-1:-1;;;;;24735:10:30;;24731:261;;24834:23;;;;:9;:23;;;;;;;;-1:-1:-1;;;;;24834:29:30;;;;;;;;;;;:39;;;;;;;24944:27;;;;;;;:37;;;;;;;24564:434::o;24177:381::-;24324:2;-1:-1:-1;;;;;24316:10:30;:4;-1:-1:-1;;;;;24316:10:30;;24312:240;;-1:-1:-1;;;;;24415:18:30;;;;;;;:12;:18;;;;;;:28;;;;;;;24515:16;;;;;;:26;;;;;;24177:381;;;:::o;25210:871::-;25374:90;;;25424:39;25374:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25397:25;25374:90;;;25568:21;;25616:11;;25285:4;25699:19;;;25285:4;;;;;25374:90;;;25616:11;;25568:21;25374:90;25760:9;25753:5;25742:63;25731:74;;25846:6;25840:13;25830:23;;;;;26036:3;26024:9;:15;26017:23;;;;26057:7;:17;;;;;26068:6;26057:17;26050:24;25210:871;-1:-1:-1;;;;;25210:871:30:o;9002:389:13:-;9308:23;-1:-1:-1;;;;;9217:48:13;;1721:10;9266:12;:10;:12::i;:::-;9280:4;9286:3;9291:6;9299:4;9217:87;;;;;;;;;;;;;-1:-1:-1;;;;;9217:87:13;;;;;;-1:-1:-1;;;;;9217:87:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1277:158:15;1427:1;1396:3;:26;;;;1390:33;-1:-1:-1;;1389:39:15;;1277:158::o;2760:444:13:-;2845:4;-1:-1:-1;;;;;;2880:40:13;;2895:25;2880:40;;:97;;-1:-1:-1;;;;;;;2936:41:13;;2951:26;2936:41;2880:97;:165;;;-1:-1:-1;;;;;;;2993:52:13;;3008:37;2993:52;2880:165;:240;;;-1:-1:-1;;;;;;;3061:59:13;;3076:44;3061:59;2880:240;:317;;;-1:-1:-1;;;;;;;;3136:61:13;3151:46;3136:61;;2760:444::o;743:904:85:-;796:15;851:10;796:15;896:27;:25;:27::i;:::-;871:52;;958:18;-1:-1:-1;;;;;937:40:85;:9;-1:-1:-1;;;;;937:40:85;;:76;;;;994:19;-1:-1:-1;;;;;981:32:85;:9;-1:-1:-1;;;;;981:32:85;;937:76;933:166;;;1082:6;-1:-1:-1;1075:13:85;;-1:-1:-1;1075:13:85;933:166;-1:-1:-1;;;;;1496:22:85;;1509:9;1496:22;;;;:78;;;1522:18;-1:-1:-1;;;;;1522:33:85;;1556:6;1564:9;1522:52;;;;;;;;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1522:52:85;1496:78;1492:122;;;1597:6;-1:-1:-1;1590:13:85;;-1:-1:-1;1590:13:85;1492:122;-1:-1:-1;1631:9:85;-1:-1:-1;743:904:85;:::o;21690:437:30:-;21809:10;21801:44;;;;;-1:-1:-1;;;21801:44:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;21855:14;21872:13;;;:9;:13;;;;;;21915:14;;;21947:18;;;21939:57;;;;;-1:-1:-1;;;21939:57:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;22006:13;;;;:9;:13;;;;;;;;:25;;;;22094:9;:13;;;;;-1:-1:-1;;;;;22094:17:30;;;;;;;;;-1:-1:-1;22094:17:30;;;:26;;;;;;;21690:437::o;22133:683::-;22269:5;22278:1;22269:10;22261:49;;;;;-1:-1:-1;;;22261:49:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;22328:11;;;;:7;:11;;;;;;:16;22320:58;;;;;-1:-1:-1;;;22320:58:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;22389:11;;;;:7;:11;;;;;-1:-1:-1;;;;;22403:20:30;;22389:34;;22439:7;22434:376;;22462:20;22485:50;:2;22513:21;22485:27;:50::i;:::-;22701:23;;;;:9;:23;;;;;;;;22699:25;;;;;;;;;22740:9;:23;;;;;-1:-1:-1;;;;;22740:27:30;;;;;;;;;22738:29;;;;;;22783:12;:16;;;;;;22781:18;;;;;;;-1:-1:-1;22133:683:30;;;;:::o;276:546:10:-;339:13;368:10;364:51;;-1:-1:-1;394:10:10;;;;;;;;;;;;;;;;;;;364:51;439:5;424:12;478:75;485:9;;478:75;;510:8;;540:2;532:10;;;;478:75;;;562:19;594:6;584:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;584:17:10;-1:-1:-1;654:5:10;;-1:-1:-1;562:39:10;-1:-1:-1;;;627:10:10;;669:116;676:9;;669:116;;745:2;738:4;:9;732:2;:16;719:31;;701:6;708:7;;;;;;;701:15;;;;;;;;;;;:49;;;;;;;;;;-1:-1:-1;772:2:10;764:10;;;;669:116;;;-1:-1:-1;808:6:10;276:546;-1:-1:-1;;;;276:546:10:o;26499:335:30:-;26741:33;-1:-1:-1;;;;;26668:36:30;;;26705:12;:10;:12::i;:::-;26719:4;26725:5;26732:4;26668:69;;;;;;;;;;;;;-1:-1:-1;;;;;26668:69:30;;;;;;-1:-1:-1;;;;;26668:69:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26668:69:30;-1:-1:-1;;;;;;26668:106:30;;26647:180;;;;;-1:-1:-1;;;26647:180:30;;;;;;;;;;;;;;;;;;;;;;;;;;;1147:870:6;1272:5;1296:19;-1:-1:-1;;;;;1296:17:6;;;:19::i;:::-;1288:58;;;;;-1:-1:-1;;;1288:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:12;1431:17;1452:6;-1:-1:-1;;;;;1452:11:6;1464:8;1452:21;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1452:21:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:57;;;;1487:7;1483:528;;;1514:11;;:16;1510:122;;1569:4;1558:24;;;;;;;;;;;;;;;-1:-1:-1;1558:24:6;1550:67;;;;;-1:-1:-1;;;1550:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:528;;;1720:11;;1716:95;;1756:40;;;-1:-1:-1;;;1756:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:95;1938:4;1932:11;1982:4;1975;1971:2;1967:13;1960:27;1653:670:85;1704:14;;1758:10;-1:-1:-1;;;;;1803:18:85;1782:40;;;;:76;;;1839:19;-1:-1:-1;;;;;1826:32:85;:9;-1:-1:-1;;;;;1826:32:85;;1782:76;1778:197;;;1927:37;:35;:37::i;:::-;1920:44;;;;;;;1778:197;-1:-1:-1;;;;;2122:22:85;;2135:9;2122:22;;;;:99;;;2148:18;-1:-1:-1;;;;;2148:33:85;;2182:27;:25;:27::i;:::-;2211:9;2148:73;;;;;;;;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2148:73:85;2122:99;2118:174;;;2244:37;:35;:37::i;2118:174::-;2308:8;;2301:15;;;;;1653:670;;;:::o;103:519:84:-;-1:-1:-1;;585:14:84;581:23;568:37;564:2;560:46;;536:80::o;628:149::-;706:14;;739:31;-1:-1:-1;;749:20:84;;706:14;;;739:31;:::i;:::-;732:38;;;;628:149;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:363:86;;;172:8;160:10;157:24;154:2;;;202:9;191;184:28;154:2;239:6;229:8;226:20;223:2;;;267:9;256;249:28;223:2;-1:-1:-1;;301:23:86;;;346:25;;;;;-1:-1:-1;144:233:86:o"
            },
            "methodIdentifiers": {
              "addMinter(address)": "983b2d56",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "baseMetadataURI()": "5b2bd79e",
              "batchMint(address,uint256[])": "4684d7e9",
              "batchTransferFrom(address,address,uint256[])": "f3993d11",
              "collectionOf(uint256)": "c7778baa",
              "createCollection(uint256)": "d0011d9d",
              "creator(uint256)": "510b5158",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isFungible(uint256)": "adebf6f2",
              "isMinter(address)": "aa271e1a",
              "isTrustedForwarder(address)": "572b6c05",
              "mint(address,uint256)": "40c10f19",
              "msgData()": "c4c2bfdc",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "recoverERC20s(address[],address[],uint256[])": "73c8a958",
              "recoverERC721s(address[],address[],uint256[])": "c3666c36",
              "renounceMinter()": "98650275",
              "safeBatchMint(address,uint256[],uint256[],bytes)": "0d6a5bbb",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeDeliver(address[],uint256[],uint256[],bytes)": "e8ab9ccc",
              "safeMint(address,uint256,bytes)": "8832e6e3",
              "safeMint(address,uint256,uint256,bytes)": "5cfa9297",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setBaseMetadataURI(string)": "7e518ec8",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd",
              "totalSupply(uint256)": "bd85b039",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "contracts/token/ERC1155721/mocks/ERC1155721ReceiverMock.sol": {
        "ERC1155721ReceiverMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "supports721",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "supports1155",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "gas",
                  "type": "uint256"
                }
              ],
              "name": "Received",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "gas",
                  "type": "uint256"
                }
              ],
              "name": "ReceivedBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "gas",
                  "type": "uint256"
                }
              ],
              "name": "ReceivedSingle",
              "type": "event"
            },
            {
              "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": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC721Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "61010060405234801561001157600080fd5b50604051610b51380380610b518339818101604052606081101561003457600080fd5b508051602082015160409092015190151560f881811b608052606083901b6001600160601b03191660a08190529315159081901b60c05260e09390935260ff908116926001600160a01b03909216911681610a996100b8600039806105d8528061080752508061064c528061087b52508061042e5250806104a25250610a996000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a714610051578063150b7a021461008c578063bc197c811461016f578063f23a6e6114610336575b600080fd5b6100786004803603602081101561006757600080fd5b50356001600160e01b031916610401565b604080519115158252519081900360200190f35b610152600480360360808110156100a257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156100dd57600080fd5b8201836020820111156100ef57600080fd5b8035906020019184600183028401116401000000008311171561011157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610421945050505050565b604080516001600160e01b03199092168252519081900360200190f35b610152600480360360a081101561018557600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156101b957600080fd5b8201836020820111156101cb57600080fd5b803590602001918460208302840111640100000000831117156101ed57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561023d57600080fd5b82018360208201111561024f57600080fd5b8035906020019184602083028401116401000000008311171561027157600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156102c157600080fd5b8201836020820111156102d357600080fd5b803590602001918460018302840111640100000000831117156102f557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506105cb945050505050565b610152600480360360a081101561034c57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561038c57600080fd5b82018360208201111561039e57600080fd5b803590602001918460018302840111640100000000831117156103c057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506107fa945050505050565b600061040c82610999565b8061041b575061041b826109fe565b92915050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104a0576040805162461bcd60e51b815260206004820152601b60248201527f45524337323152656365697665723a2077726f6e6720746f6b656e0000000000604482015290519081900360640190fd5b7f0000000000000000000000000000000000000000000000000000000000000000156105b8577f28fa6e16458f9c24aa59ddd4085264573006dbe30304837873c7deafc702b038858585855a60405180866001600160a01b03168152602001856001600160a01b0316815260200184815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561055357818101518382015260200161053b565b50505050905090810190601f1680156105805780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1507f150b7a02000000000000000000000000000000000000000000000000000000006105c3565b506001600160e01b03195b949350505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461064a576040805162461bcd60e51b815260206004820152601c60248201527f4552433131353552656365697665723a2077726f6e6720746f6b656e00000000604482015290519081900360640190fd5b7f0000000000000000000000000000000000000000000000000000000000000000156107e6577f8667b06aa891a7720ada21ca62207388e6c8bd0ebee8a3d70ed6d3382e1e375386868686865a60405180876001600160a01b03168152602001866001600160a01b03168152602001806020018060200180602001858152602001848103845288818151815260200191508051906020019060200280838360005b838110156107035781810151838201526020016106eb565b50505050905001848103835287818151815260200191508051906020019060200280838360005b8381101561074257818101518382015260200161072a565b50505050905001848103825286818151815260200191508051906020019080838360005b8381101561077e578181015183820152602001610766565b50505050905090810190601f1680156107ab5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a1507fbc197c81000000000000000000000000000000000000000000000000000000006107f1565b506001600160e01b03195b95945050505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610879576040805162461bcd60e51b815260206004820152601c60248201527f4552433131353552656365697665723a2077726f6e6720746f6b656e00000000604482015290519081900360640190fd5b7f0000000000000000000000000000000000000000000000000000000000000000156107e6577fbafaa6e1c57bb05a9b952e12b8ff1bcbfd2a0d9f6c8097c6fb28e241610cac5286868686865a60405180876001600160a01b03168152602001866001600160a01b0316815260200185815260200184815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561093357818101518382015260200161091b565b50505050905090810190601f1680156109605780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1507ff23a6e61000000000000000000000000000000000000000000000000000000006107f1565b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061041b5750506001600160e01b0319167f150b7a02000000000000000000000000000000000000000000000000000000001490565b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061041b5750506001600160e01b0319167f4e2312e000000000000000000000000000000000000000000000000000000000149056fea264697066735822122053958f85a2286a2cdd20bff8b1315d2f5efeed2a986fee0c2a3d31731c02af8264736f6c63430007060033",
              "opcodes": "PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB51 CODESIZE SUB DUP1 PUSH2 0xB51 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 ISZERO ISZERO PUSH1 0xF8 DUP2 DUP2 SHL PUSH1 0x80 MSTORE PUSH1 0x60 DUP4 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 DUP2 SWAP1 MSTORE SWAP4 ISZERO ISZERO SWAP1 DUP2 SWAP1 SHL PUSH1 0xC0 MSTORE PUSH1 0xE0 SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xFF SWAP1 DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 AND DUP2 PUSH2 0xA99 PUSH2 0xB8 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x5D8 MSTORE DUP1 PUSH2 0x807 MSTORE POP DUP1 PUSH2 0x64C MSTORE DUP1 PUSH2 0x87B MSTORE POP DUP1 PUSH2 0x42E MSTORE POP DUP1 PUSH2 0x4A2 MSTORE POP PUSH2 0xA99 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 0x1FFC9A7 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x336 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x401 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x152 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x421 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x152 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x5CB SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x152 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x38C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x7FA SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40C DUP3 PUSH2 0x999 JUMP JUMPDEST DUP1 PUSH2 0x41B JUMPI POP PUSH2 0x41B DUP3 PUSH2 0x9FE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x4A0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524337323152656365697665723A2077726F6E6720746F6B656E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x5B8 JUMPI PUSH32 0x28FA6E16458F9C24AA59DDD4085264573006DBE30304837873C7DEAFC702B038 DUP6 DUP6 DUP6 DUP6 GAS PUSH1 0x40 MLOAD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x553 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x53B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x580 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH2 0x5C3 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x64A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433131353552656365697665723A2077726F6E6720746F6B656E00000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x7E6 JUMPI PUSH32 0x8667B06AA891A7720ADA21CA62207388E6C8BD0EBEE8A3D70ED6D3382E1E3753 DUP7 DUP7 DUP7 DUP7 DUP7 GAS PUSH1 0x40 MLOAD DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP9 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x703 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6EB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x742 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x72A JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x77E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x766 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7AB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP10 POP POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 PUSH2 0x7F1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x879 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433131353552656365697665723A2077726F6E6720746F6B656E00000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x7E6 JUMPI PUSH32 0xBAFAA6E1C57BB05A9B952E12B8FF1BCBFD2A0D9F6C8097C6FB28E241610CAC52 DUP7 DUP7 DUP7 DUP7 DUP7 GAS PUSH1 0x40 MLOAD DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x933 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x91B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x960 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 PUSH2 0x7F1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x41B JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x41B JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 SWAP6 DUP16 DUP6 LOG2 0x28 PUSH11 0x2CDD20BFF8B1315D2F5EFE 0xED 0x2A SWAP9 PUSH16 0xEE0C2A3D31731C02AF8264736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "437:577:37:-:0;;;523:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;523:202:37;;;;;;;;;;;546:22:76;::::1;;;::::0;;::::1;;::::0;523:202:37;578:31:76;;;-1:-1:-1;;;;;;578:31:76;::::1;::::0;;;730:24:29;::::1;;::::0;;;::::1;;::::0;764:32:::1;::::0;;;;437:577:37;;;;;-1:-1:-1;;;;;437:577:37;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {
                "4461": [
                  {
                    "length": 32,
                    "start": 1612
                  },
                  {
                    "length": 32,
                    "start": 2171
                  }
                ],
                "4463": [
                  {
                    "length": 32,
                    "start": 1496
                  },
                  {
                    "length": 32,
                    "start": 2055
                  }
                ],
                "14468": [
                  {
                    "length": 32,
                    "start": 1186
                  }
                ],
                "14470": [
                  {
                    "length": 32,
                    "start": 1070
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a714610051578063150b7a021461008c578063bc197c811461016f578063f23a6e6114610336575b600080fd5b6100786004803603602081101561006757600080fd5b50356001600160e01b031916610401565b604080519115158252519081900360200190f35b610152600480360360808110156100a257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156100dd57600080fd5b8201836020820111156100ef57600080fd5b8035906020019184600183028401116401000000008311171561011157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610421945050505050565b604080516001600160e01b03199092168252519081900360200190f35b610152600480360360a081101561018557600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156101b957600080fd5b8201836020820111156101cb57600080fd5b803590602001918460208302840111640100000000831117156101ed57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561023d57600080fd5b82018360208201111561024f57600080fd5b8035906020019184602083028401116401000000008311171561027157600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156102c157600080fd5b8201836020820111156102d357600080fd5b803590602001918460018302840111640100000000831117156102f557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506105cb945050505050565b610152600480360360a081101561034c57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561038c57600080fd5b82018360208201111561039e57600080fd5b803590602001918460018302840111640100000000831117156103c057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506107fa945050505050565b600061040c82610999565b8061041b575061041b826109fe565b92915050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104a0576040805162461bcd60e51b815260206004820152601b60248201527f45524337323152656365697665723a2077726f6e6720746f6b656e0000000000604482015290519081900360640190fd5b7f0000000000000000000000000000000000000000000000000000000000000000156105b8577f28fa6e16458f9c24aa59ddd4085264573006dbe30304837873c7deafc702b038858585855a60405180866001600160a01b03168152602001856001600160a01b0316815260200184815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561055357818101518382015260200161053b565b50505050905090810190601f1680156105805780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1507f150b7a02000000000000000000000000000000000000000000000000000000006105c3565b506001600160e01b03195b949350505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461064a576040805162461bcd60e51b815260206004820152601c60248201527f4552433131353552656365697665723a2077726f6e6720746f6b656e00000000604482015290519081900360640190fd5b7f0000000000000000000000000000000000000000000000000000000000000000156107e6577f8667b06aa891a7720ada21ca62207388e6c8bd0ebee8a3d70ed6d3382e1e375386868686865a60405180876001600160a01b03168152602001866001600160a01b03168152602001806020018060200180602001858152602001848103845288818151815260200191508051906020019060200280838360005b838110156107035781810151838201526020016106eb565b50505050905001848103835287818151815260200191508051906020019060200280838360005b8381101561074257818101518382015260200161072a565b50505050905001848103825286818151815260200191508051906020019080838360005b8381101561077e578181015183820152602001610766565b50505050905090810190601f1680156107ab5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a1507fbc197c81000000000000000000000000000000000000000000000000000000006107f1565b506001600160e01b03195b95945050505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610879576040805162461bcd60e51b815260206004820152601c60248201527f4552433131353552656365697665723a2077726f6e6720746f6b656e00000000604482015290519081900360640190fd5b7f0000000000000000000000000000000000000000000000000000000000000000156107e6577fbafaa6e1c57bb05a9b952e12b8ff1bcbfd2a0d9f6c8097c6fb28e241610cac5286868686865a60405180876001600160a01b03168152602001866001600160a01b0316815260200185815260200184815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561093357818101518382015260200161091b565b50505050905090810190601f1680156109605780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1507ff23a6e61000000000000000000000000000000000000000000000000000000006107f1565b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061041b5750506001600160e01b0319167f150b7a02000000000000000000000000000000000000000000000000000000001490565b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061041b5750506001600160e01b0319167f4e2312e000000000000000000000000000000000000000000000000000000000149056fea264697066735822122053958f85a2286a2cdd20bff8b1315d2f5efeed2a986fee0c2a3d31731c02af8264736f6c63430007060033",
              "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 0x1FFC9A7 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x336 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x401 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x152 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x421 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x152 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x5CB SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x152 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x38C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x7FA SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40C DUP3 PUSH2 0x999 JUMP JUMPDEST DUP1 PUSH2 0x41B JUMPI POP PUSH2 0x41B DUP3 PUSH2 0x9FE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x4A0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524337323152656365697665723A2077726F6E6720746F6B656E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x5B8 JUMPI PUSH32 0x28FA6E16458F9C24AA59DDD4085264573006DBE30304837873C7DEAFC702B038 DUP6 DUP6 DUP6 DUP6 GAS PUSH1 0x40 MLOAD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x553 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x53B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x580 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH2 0x5C3 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x64A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433131353552656365697665723A2077726F6E6720746F6B656E00000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x7E6 JUMPI PUSH32 0x8667B06AA891A7720ADA21CA62207388E6C8BD0EBEE8A3D70ED6D3382E1E3753 DUP7 DUP7 DUP7 DUP7 DUP7 GAS PUSH1 0x40 MLOAD DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP9 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x703 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6EB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x742 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x72A JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x77E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x766 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7AB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP10 POP POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 PUSH2 0x7F1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x879 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433131353552656365697665723A2077726F6E6720746F6B656E00000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x7E6 JUMPI PUSH32 0xBAFAA6E1C57BB05A9B952E12B8FF1BCBFD2A0D9F6C8097C6FB28E241610CAC52 DUP7 DUP7 DUP7 DUP7 DUP7 GAS PUSH1 0x40 MLOAD DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x933 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x91B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x960 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 PUSH2 0x7F1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x41B JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x41B JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 SWAP6 DUP16 DUP6 LOG2 0x28 PUSH11 0x2CDD20BFF8B1315D2F5EFE 0xED 0x2A SWAP9 PUSH16 0xEE0C2A3D31731C02AF8264736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "437:577:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;759:253;;;;;;;;;;;;;;;;-1:-1:-1;759:253:37;-1:-1:-1;;;;;;759:253:37;;:::i;:::-;;;;;;;;;;;;;;;;;;860:456:76;;;;;;;;;;;;;;;;-1:-1:-1;;;;;860:456:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;860:456:76;;-1:-1:-1;860:456:76;;-1:-1:-1;;;;;860:456:76:i;:::-;;;;-1:-1:-1;;;;;;860:456:76;;;;;;;;;;;;;;1664:520:29;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1664:520:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1664:520:29;;;;;;;;-1:-1:-1;1664:520:29;;-1:-1:-1;;1664:520:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1664:520:29;;;;;;;;-1:-1:-1;1664:520:29;;-1:-1:-1;;1664:520:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1664:520:29;;-1:-1:-1;1664:520:29;;-1:-1:-1;;;;;1664:520:29:i;1054:488::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1054:488:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1054:488:29;;-1:-1:-1;1054:488:29;;-1:-1:-1;;;;;1054:488:29:i;759:253:37:-;882:4;905:45;938:11;905:32;:45::i;:::-;:100;;;;954:51;993:11;954:38;:51::i;:::-;898:107;759:253;-1:-1:-1;;759:253:37:o;860:456:76:-;1025:6;1051:10;-1:-1:-1;;;;;1065:16:76;1051:30;;1043:70;;;;;-1:-1:-1;;;1043:70:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;1127:10;1123:187;;;1158:50;1167:8;1177:4;1183:7;1192:4;1198:9;1158:50;;;;-1:-1:-1;;;;;1158:50:76;;;;;;-1:-1:-1;;;;;1158:50:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;513:33:64;1222:23:76;;1123:187;-1:-1:-1;;;;;;;1123:187:76;860:456;;;;;;:::o;1664:520:29:-;1873:6;1899:10;-1:-1:-1;;;;;1913:17:29;1899:31;;1891:72;;;;;-1:-1:-1;;;1891:72:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;1977:11;1973:205;;;2009:59;2023:8;2033:4;2039:3;2044:6;2052:4;2058:9;2009:59;;;;-1:-1:-1;;;;;2009:59:29;;;;;;-1:-1:-1;;;;;2009:59:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2089:23:29;2082:30;;1973:205;-1:-1:-1;;;;;;;1973:205:29;1664:520;;;;;;;:::o;1054:488::-;1238:6;1264:10;-1:-1:-1;;;;;1278:17:29;1264:31;;1256:72;;;;;-1:-1:-1;;;1256:72:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;1342:11;1338:198;;;1374:58;1389:8;1399:4;1405:2;1409:5;1416:4;1422:9;1374:58;;;;-1:-1:-1;;;;;1374:58:29;;;;;;-1:-1:-1;;;;;1374:58:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1453:17:29;1446:24;;770:207:64;855:4;-1:-1:-1;;;;;;878:40:64;;893:25;878:40;;:92;;-1:-1:-1;;;;;;;;922:48:64;937:33;922:48;;770:207::o;1102:213:16:-;1187:4;-1:-1:-1;;;;;;1210:40:16;;1225:25;1210:40;;:98;;-1:-1:-1;;;;;;;;1254:54:16;1269:39;1254:54;;1102:213::o"
            },
            "methodIdentifiers": {
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "onERC721Received(address,address,uint256,bytes)": "150b7a02",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "contracts/token/ERC20/ERC20.sol": {
        "ERC20": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name_",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol_",
                  "type": "string"
                },
                {
                  "internalType": "uint8",
                  "name": "decimals_",
                  "type": "uint8"
                }
              ],
              "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": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "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": "value",
                  "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": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "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": [],
              "name": "deploymentChainId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "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": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransfer",
              "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"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "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": [],
              "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": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60e06040523480156200001157600080fd5b506040516200215738038062002157833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b506040526020908101518551909350620001b99250600191860190620002a4565b508151620001cf906002906020850190620002a4565b507fff0000000000000000000000000000000000000000000000000000000000000060f882901b1660c0524660808190526200020c81856200021a565b60a052506200035092505050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620002dc576000855562000327565b82601f10620002f757805160ff191683800117855562000327565b8280016001018555821562000327579182015b82811115620003275782518255916020019190600101906200030a565b506200033592915062000339565b5090565b5b808211156200033557600081556001016200033a565b60805160a05160c05160f81c611dd26200038560003980610962525080610a4c52508061098952806115355250611dd26000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a9059cbb1161008c578063d505accf11610066578063d505accf146105e2578063dd62ed3e14610635578063eb7955491461066357610177565b8063a9059cbb1461051e578063b88d4fde1461054a578063cd0d0096146105da57610177565b806388d695b2116100bd57806388d695b21461042857806395d89b41146104ea578063a457c2d7146104f257610177565b806370a08231146103dc5780637ecebe001461040257610177565b8063313ce5671161012f578063395093511161011457806339509351146102d65780633c130d90146103025780634885b2541461030a57610177565b8063313ce567146102b05780633644e515146102ce57610177565b8063095ea7b311610160578063095ea7b31461023457806318160ddd1461026057806323b872dd1461027a57610177565b806301ffc9a71461017c57806306fdde03146101b7575b600080fd5b6101a36004803603602081101561019257600080fd5b50356001600160e01b0319166106e8565b604080519115158252519081900360200190f35b6101bf610889565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f95781810151838201526020016101e1565b50505050905090810190601f1680156102265780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a36004803603604081101561024a57600080fd5b506001600160a01b03813516906020013561091e565b61026861093b565b60408051918252519081900360200190f35b6101a36004803603606081101561029057600080fd5b506001600160a01b03813581169160208101359091169060400135610941565b6102b8610960565b6040805160ff9092168252519081900360200190f35b610268610984565b6101a3600480360360408110156102ec57600080fd5b506001600160a01b038135169060200135610a72565b6101bf610be0565b6101a36004803603606081101561032057600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561034b57600080fd5b82018360208201111561035d57600080fd5b8035906020019184602083028401116401000000008311171561037f57600080fd5b91939092909160208101903564010000000081111561039d57600080fd5b8201836020820111156103af57600080fd5b803590602001918460208302840111640100000000831117156103d157600080fd5b509092509050610c41565b610268600480360360208110156103f257600080fd5b50356001600160a01b0316610f75565b6102686004803603602081101561041857600080fd5b50356001600160a01b0316610f90565b6101a36004803603604081101561043e57600080fd5b81019060208101813564010000000081111561045957600080fd5b82018360208201111561046b57600080fd5b8035906020019184602083028401116401000000008311171561048d57600080fd5b9193909290916020810190356401000000008111156104ab57600080fd5b8201836020820111156104bd57600080fd5b803590602001918460208302840111640100000000831117156104df57600080fd5b509092509050610fa2565b6101bf6112b1565b6101a36004803603604081101561050857600080fd5b506001600160a01b03813516906020013561130f565b6101a36004803603604081101561053457600080fd5b506001600160a01b03813516906020013561137e565b6101a36004803603608081101561056057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561059b57600080fd5b8201836020820111156105ad57600080fd5b803590602001918460018302840111640100000000831117156105cf57600080fd5b509092509050611392565b610268611533565b610633600480360360e08110156105f857600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611557565b005b6102686004803603604081101561064b57600080fd5b506001600160a01b03813581169160200135166117d6565b6101a36004803603606081101561067957600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156106a957600080fd5b8201836020820111156106bb57600080fd5b803590602001918460018302840111640100000000831117156106dd57600080fd5b509092509050611801565b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061074b57506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b8061077f57506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b806107b357506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b806107e757506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b8061081b57506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b8061084f57506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b8061088357506001600160e01b031982167f9d8ff7da00000000000000000000000000000000000000000000000000000000145b92915050565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156109145780601f106108e957610100808354040283529160200191610914565b820191906000526020600020905b8154815290600101906020018083116108f757829003601f168201915b5050505050905090565b600061093261092b6119a0565b84846119a4565b50600192915050565b60065490565b600061095661094e6119a0565b858585611a61565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610a4a5760018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152610a4593859391929091830182828015610a3b5780601f10610a1057610100808354040283529160200191610a3b565b820191906000526020600020905b815481529060010190602001808311610a1e57829003601f168201915b5050505050611a96565b610a6c565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b60006001600160a01b038316610acf576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6000610ad96119a0565b6001600160a01b038082166000908152600560209081526040808320938916835292905220549091508315610b8a57808401818111610b5f576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600560209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109145780601f106108e957610100808354040283529160200191610914565b600083828114610c98576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600460205260408120549080805b848114610eaa5760008a8a83818110610cca57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415610d44576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b6000898984818110610d5257fe5b90506020020135905080600014610e5557848101858111610dba576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b031614610df9576001600160a01b0383166000908152600460205260409020805483019055610e53565b86821115610e4e576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101610cb5565b508115801590610eba5750808214155b15610f3457818303838110610f16576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260046020526040902090820190555b6000610f3e6119a0565b9050806001600160a01b03168b6001600160a01b031614610f6457610f648b8285611b20565b5060019a9950505050505050505050565b6001600160a01b031660009081526004602052604090205490565b60006020819052908152604090205481565b600083828114610ff9576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60006110036119a0565b6001600160a01b03811660009081526004602052604081205491925080805b8581146112175760008b8b8381811061103757fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b031614156110b1576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a848181106110bf57fe5b905060200201359050806000146111c257848101858111611127576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b031614611166576001600160a01b03831660009081526004602052604090208054830190556111c0565b868211156111bb576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101611022565b5081158015906112275750808214155b156112a157818303838110611283576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260046020526040902090820190555b5060019998505050505050505050565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156109145780601f106108e957610100808354040283529160200191610914565b60006001600160a01b03831661136c576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6109326113776119a0565b8484611b20565b600061093261138b6119a0565b8484611c2f565b60008061139d6119a0565b90506113ab81888888611a61565b6113bd866001600160a01b0316611d96565b15611526577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d60208110156114c857600080fd5b50516001600160e01b03191614611526576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0387166115b2576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b83421115611607576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526020818152604080832080546001810190915581517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a084019490945260c08084018990528451808503909101815260e09093019093528151919092012090611699610984565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561174d573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b0316146117bf576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b6117ca8a8a8a6119a4565b50505050505050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60008061180c6119a0565b9050611819818787611c2f565b61182b866001600160a01b0316611d96565b15611994577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561190c57600080fd5b505af1158015611920573d6000803e3d6000fd5b505050506040513d602081101561193657600080fd5b50516001600160e01b03191614611994576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b3390565b6001600160a01b0382166119ff576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b611a6c838383611c2f565b836001600160a01b0316836001600160a01b031614611a9057611a90838583611b20565b50505050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b038084166000908152600560209081526040808320938616835292905220546000198114801590611b5757508115155b15611bde57818103818110611bb3576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b6001600160a01b038216611c8a576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b8015611d46576001600160a01b038316600090815260046020526040902054818103818110611d00576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b031614611d43576001600160a01b038086166000908152600460205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b15159056fea2646970667358221220937bb6faf69f9a6800137cc36801303cc6e884b3ebbf9de61775ce07eadce7fa64736f6c63430007060033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2157 CODESIZE SUB DUP1 PUSH3 0x2157 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD MLOAD DUP6 MLOAD SWAP1 SWAP4 POP PUSH3 0x1B9 SWAP3 POP PUSH1 0x1 SWAP2 DUP7 ADD SWAP1 PUSH3 0x2A4 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x1CF SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x2A4 JUMP JUMPDEST POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF8 DUP3 SWAP1 SHL AND PUSH1 0xC0 MSTORE CHAINID PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH3 0x20C DUP2 DUP6 PUSH3 0x21A JUMP JUMPDEST PUSH1 0xA0 MSTORE POP PUSH3 0x350 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x2DC JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x327 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x2F7 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x327 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x327 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x327 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x30A JUMP JUMPDEST POP PUSH3 0x335 SWAP3 SWAP2 POP PUSH3 0x339 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x335 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x33A JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xF8 SHR PUSH2 0x1DD2 PUSH3 0x385 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x962 MSTORE POP DUP1 PUSH2 0xA4C MSTORE POP DUP1 PUSH2 0x989 MSTORE DUP1 PUSH2 0x1535 MSTORE POP PUSH2 0x1DD2 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 0x177 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5E2 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x635 JUMPI DUP1 PUSH4 0xEB795549 EQ PUSH2 0x663 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x51E JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x54A JUMPI DUP1 PUSH4 0xCD0D0096 EQ PUSH2 0x5DA JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x88D695B2 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x88D695B2 EQ PUSH2 0x428 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4EA JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x4F2 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x3DC JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x402 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x39509351 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2D6 JUMPI DUP1 PUSH4 0x3C130D90 EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0x4885B254 EQ PUSH2 0x30A JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2B0 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x2CE JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x27A JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1B7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x6E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1BF PUSH2 0x889 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x226 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x91E JUMP JUMPDEST PUSH2 0x268 PUSH2 0x93B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x941 JUMP JUMPDEST PUSH2 0x2B8 PUSH2 0x960 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x268 PUSH2 0x984 JUMP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA72 JUMP JUMPDEST PUSH2 0x1BF PUSH2 0xBE0 JUMP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x37F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x39D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xC41 JUMP JUMPDEST PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF75 JUMP JUMPDEST PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF90 JUMP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x43E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x48D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xFA2 JUMP JUMPDEST PUSH2 0x1BF PUSH2 0x12B1 JUMP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x508 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x130F JUMP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x137E JUMP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1392 JUMP JUMPDEST PUSH2 0x268 PUSH2 0x1533 JUMP JUMPDEST PUSH2 0x633 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1557 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x64B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x17D6 JUMP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1801 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x74B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x36372B0700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x77F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xA219A02500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x7B3 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x3C130D9000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x7E7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D07518600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x81B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xC05327E600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x84F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x53F41A9700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x883 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D8FF7DA00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x914 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8E9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x914 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 0x8F7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x932 PUSH2 0x92B PUSH2 0x19A0 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x19A4 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x956 PUSH2 0x94E PUSH2 0x19A0 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x1A61 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 DUP2 EQ PUSH2 0xA4A JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE PUSH2 0xA45 SWAP4 DUP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA3B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA10 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA3B 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 0xA1E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x1A96 JUMP JUMPDEST PUSH2 0xA6C JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xACF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAD9 PUSH2 0x19A0 JUMP JUMPDEST 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 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP4 ISZERO PUSH2 0xB8A JUMPI DUP1 DUP5 ADD DUP2 DUP2 GT PUSH2 0xB5F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20616C6C6F77616E6365206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x914 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8E9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x914 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0xC98 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP1 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0xEAA JUMPI PUSH1 0x0 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0xCCA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xD44 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0xD52 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0xE55 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0xDBA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xDF9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0xE53 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0xE4E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0xCB5 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xEBA JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0xF34 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0xF16 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0xF3E PUSH2 0x19A0 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xF64 JUMPI PUSH2 0xF64 DUP12 DUP3 DUP6 PUSH2 0x1B20 JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0xFF9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1003 PUSH2 0x19A0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP DUP1 DUP1 JUMPDEST DUP6 DUP2 EQ PUSH2 0x1217 JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x1037 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x10B1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x10BF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x11C2 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x1127 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1166 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x11C0 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x11BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x1022 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1227 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x12A1 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x1283 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x914 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8E9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x914 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x136C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x932 PUSH2 0x1377 PUSH2 0x19A0 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1B20 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x932 PUSH2 0x138B PUSH2 0x19A0 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1C2F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x139D PUSH2 0x19A0 JUMP JUMPDEST SWAP1 POP PUSH2 0x13AB DUP2 DUP9 DUP9 DUP9 PUSH2 0x1A61 JUMP JUMPDEST PUSH2 0x13BD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D96 JUMP JUMPDEST ISZERO PUSH2 0x1526 JUMPI PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x149E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1526 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x15B2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373206F776E657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x1607 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2065787069726564207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP2 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP6 ADD MSTORE DUP1 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP5 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0xC0 DUP1 DUP5 ADD DUP10 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 SWAP1 SWAP4 ADD SWAP1 SWAP4 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 SWAP1 PUSH2 0x1699 PUSH2 0x984 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x174D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x17BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E76616C6964207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17CA DUP11 DUP11 DUP11 PUSH2 0x19A4 JUMP JUMPDEST POP POP POP POP POP POP POP 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 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x180C PUSH2 0x19A0 JUMP JUMPDEST SWAP1 POP PUSH2 0x1819 DUP2 DUP8 DUP8 PUSH2 0x1C2F JUMP JUMPDEST PUSH2 0x182B DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D96 JUMP JUMPDEST ISZERO PUSH2 0x1994 JUMPI PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP5 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x190C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1920 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1994 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x19FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 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 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x1A6C DUP4 DUP4 DUP4 PUSH2 0x1C2F JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1A90 JUMPI PUSH2 0x1A90 DUP4 DUP6 DUP4 PUSH2 0x1B20 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x1B57 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1BDE JUMPI DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x1BB3 JUMPI PUSH1 0x40 DUP1 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 SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 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 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1C8A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x1D46 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x1D00 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1D43 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP7 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE JUMPDEST POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP4 PUSH28 0xB6FAF69F9A6800137CC36801303CC6E884B3EBBF9DE61775CE07EADC 0xE7 STATICCALL PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "941:17211:38:-:0;;;1934:394;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1934:394:38;;;;;;;;;;-1:-1:-1;1934:394:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1934:394:38;;;;;;;;;;-1:-1:-1;1934:394:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1934:394:38;;;;;;;2047:13;;1934:394;;-1:-1:-1;2047:13:38;;-1:-1:-1;2047:5:38;;:13;;;;:::i;:::-;-1:-1:-1;2070:17:38;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;2097:21:38;;;;;;;;2188:9;2216:27;;;;2273:48;2188:9;2314:5;2273:25;:48::i;:::-;2253:68;;-1:-1:-1;941:17211:38;;-1:-1:-1;;;941:17211:38;17687:463;17995:16;;;;;;;17846:283;;;17878:95;17846:283;;;;;;;;;;;18033:14;17846:283;;;;;;;;;;;18106:4;17846:283;;;;;;;;;;;;;;;;;;;;;;;;;17819:324;;;;;;17687:463::o;941:17211::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;941:17211:38;;;-1:-1:-1;941:17211:38;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {
                "8178": [
                  {
                    "length": 32,
                    "start": 2441
                  },
                  {
                    "length": 32,
                    "start": 5429
                  }
                ],
                "8180": [
                  {
                    "length": 32,
                    "start": 2636
                  }
                ],
                "8192": [
                  {
                    "length": 32,
                    "start": 2402
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a9059cbb1161008c578063d505accf11610066578063d505accf146105e2578063dd62ed3e14610635578063eb7955491461066357610177565b8063a9059cbb1461051e578063b88d4fde1461054a578063cd0d0096146105da57610177565b806388d695b2116100bd57806388d695b21461042857806395d89b41146104ea578063a457c2d7146104f257610177565b806370a08231146103dc5780637ecebe001461040257610177565b8063313ce5671161012f578063395093511161011457806339509351146102d65780633c130d90146103025780634885b2541461030a57610177565b8063313ce567146102b05780633644e515146102ce57610177565b8063095ea7b311610160578063095ea7b31461023457806318160ddd1461026057806323b872dd1461027a57610177565b806301ffc9a71461017c57806306fdde03146101b7575b600080fd5b6101a36004803603602081101561019257600080fd5b50356001600160e01b0319166106e8565b604080519115158252519081900360200190f35b6101bf610889565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f95781810151838201526020016101e1565b50505050905090810190601f1680156102265780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a36004803603604081101561024a57600080fd5b506001600160a01b03813516906020013561091e565b61026861093b565b60408051918252519081900360200190f35b6101a36004803603606081101561029057600080fd5b506001600160a01b03813581169160208101359091169060400135610941565b6102b8610960565b6040805160ff9092168252519081900360200190f35b610268610984565b6101a3600480360360408110156102ec57600080fd5b506001600160a01b038135169060200135610a72565b6101bf610be0565b6101a36004803603606081101561032057600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561034b57600080fd5b82018360208201111561035d57600080fd5b8035906020019184602083028401116401000000008311171561037f57600080fd5b91939092909160208101903564010000000081111561039d57600080fd5b8201836020820111156103af57600080fd5b803590602001918460208302840111640100000000831117156103d157600080fd5b509092509050610c41565b610268600480360360208110156103f257600080fd5b50356001600160a01b0316610f75565b6102686004803603602081101561041857600080fd5b50356001600160a01b0316610f90565b6101a36004803603604081101561043e57600080fd5b81019060208101813564010000000081111561045957600080fd5b82018360208201111561046b57600080fd5b8035906020019184602083028401116401000000008311171561048d57600080fd5b9193909290916020810190356401000000008111156104ab57600080fd5b8201836020820111156104bd57600080fd5b803590602001918460208302840111640100000000831117156104df57600080fd5b509092509050610fa2565b6101bf6112b1565b6101a36004803603604081101561050857600080fd5b506001600160a01b03813516906020013561130f565b6101a36004803603604081101561053457600080fd5b506001600160a01b03813516906020013561137e565b6101a36004803603608081101561056057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561059b57600080fd5b8201836020820111156105ad57600080fd5b803590602001918460018302840111640100000000831117156105cf57600080fd5b509092509050611392565b610268611533565b610633600480360360e08110156105f857600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611557565b005b6102686004803603604081101561064b57600080fd5b506001600160a01b03813581169160200135166117d6565b6101a36004803603606081101561067957600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156106a957600080fd5b8201836020820111156106bb57600080fd5b803590602001918460018302840111640100000000831117156106dd57600080fd5b509092509050611801565b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061074b57506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b8061077f57506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b806107b357506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b806107e757506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b8061081b57506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b8061084f57506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b8061088357506001600160e01b031982167f9d8ff7da00000000000000000000000000000000000000000000000000000000145b92915050565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156109145780601f106108e957610100808354040283529160200191610914565b820191906000526020600020905b8154815290600101906020018083116108f757829003601f168201915b5050505050905090565b600061093261092b6119a0565b84846119a4565b50600192915050565b60065490565b600061095661094e6119a0565b858585611a61565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610a4a5760018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152610a4593859391929091830182828015610a3b5780601f10610a1057610100808354040283529160200191610a3b565b820191906000526020600020905b815481529060010190602001808311610a1e57829003601f168201915b5050505050611a96565b610a6c565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b60006001600160a01b038316610acf576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6000610ad96119a0565b6001600160a01b038082166000908152600560209081526040808320938916835292905220549091508315610b8a57808401818111610b5f576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600560209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109145780601f106108e957610100808354040283529160200191610914565b600083828114610c98576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600460205260408120549080805b848114610eaa5760008a8a83818110610cca57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415610d44576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b6000898984818110610d5257fe5b90506020020135905080600014610e5557848101858111610dba576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b031614610df9576001600160a01b0383166000908152600460205260409020805483019055610e53565b86821115610e4e576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101610cb5565b508115801590610eba5750808214155b15610f3457818303838110610f16576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260046020526040902090820190555b6000610f3e6119a0565b9050806001600160a01b03168b6001600160a01b031614610f6457610f648b8285611b20565b5060019a9950505050505050505050565b6001600160a01b031660009081526004602052604090205490565b60006020819052908152604090205481565b600083828114610ff9576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60006110036119a0565b6001600160a01b03811660009081526004602052604081205491925080805b8581146112175760008b8b8381811061103757fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b031614156110b1576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a848181106110bf57fe5b905060200201359050806000146111c257848101858111611127576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b031614611166576001600160a01b03831660009081526004602052604090208054830190556111c0565b868211156111bb576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101611022565b5081158015906112275750808214155b156112a157818303838110611283576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260046020526040902090820190555b5060019998505050505050505050565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156109145780601f106108e957610100808354040283529160200191610914565b60006001600160a01b03831661136c576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6109326113776119a0565b8484611b20565b600061093261138b6119a0565b8484611c2f565b60008061139d6119a0565b90506113ab81888888611a61565b6113bd866001600160a01b0316611d96565b15611526577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d60208110156114c857600080fd5b50516001600160e01b03191614611526576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0387166115b2576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b83421115611607576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526020818152604080832080546001810190915581517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a084019490945260c08084018990528451808503909101815260e09093019093528151919092012090611699610984565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561174d573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b0316146117bf576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b6117ca8a8a8a6119a4565b50505050505050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60008061180c6119a0565b9050611819818787611c2f565b61182b866001600160a01b0316611d96565b15611994577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561190c57600080fd5b505af1158015611920573d6000803e3d6000fd5b505050506040513d602081101561193657600080fd5b50516001600160e01b03191614611994576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b3390565b6001600160a01b0382166119ff576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b611a6c838383611c2f565b836001600160a01b0316836001600160a01b031614611a9057611a90838583611b20565b50505050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b038084166000908152600560209081526040808320938616835292905220546000198114801590611b5757508115155b15611bde57818103818110611bb3576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b6001600160a01b038216611c8a576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b8015611d46576001600160a01b038316600090815260046020526040902054818103818110611d00576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b031614611d43576001600160a01b038086166000908152600460205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b15159056fea2646970667358221220937bb6faf69f9a6800137cc36801303cc6e884b3ebbf9de61775ce07eadce7fa64736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x177 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5E2 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x635 JUMPI DUP1 PUSH4 0xEB795549 EQ PUSH2 0x663 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x51E JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x54A JUMPI DUP1 PUSH4 0xCD0D0096 EQ PUSH2 0x5DA JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x88D695B2 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x88D695B2 EQ PUSH2 0x428 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4EA JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x4F2 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x3DC JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x402 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x39509351 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2D6 JUMPI DUP1 PUSH4 0x3C130D90 EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0x4885B254 EQ PUSH2 0x30A JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2B0 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x2CE JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x27A JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1B7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x6E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1BF PUSH2 0x889 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x226 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x91E JUMP JUMPDEST PUSH2 0x268 PUSH2 0x93B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x941 JUMP JUMPDEST PUSH2 0x2B8 PUSH2 0x960 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x268 PUSH2 0x984 JUMP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA72 JUMP JUMPDEST PUSH2 0x1BF PUSH2 0xBE0 JUMP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x37F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x39D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xC41 JUMP JUMPDEST PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF75 JUMP JUMPDEST PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF90 JUMP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x43E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x48D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xFA2 JUMP JUMPDEST PUSH2 0x1BF PUSH2 0x12B1 JUMP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x508 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x130F JUMP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x137E JUMP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1392 JUMP JUMPDEST PUSH2 0x268 PUSH2 0x1533 JUMP JUMPDEST PUSH2 0x633 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1557 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x64B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x17D6 JUMP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1801 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x74B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x36372B0700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x77F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xA219A02500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x7B3 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x3C130D9000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x7E7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D07518600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x81B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xC05327E600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x84F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x53F41A9700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x883 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D8FF7DA00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x914 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8E9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x914 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 0x8F7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x932 PUSH2 0x92B PUSH2 0x19A0 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x19A4 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x956 PUSH2 0x94E PUSH2 0x19A0 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x1A61 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 DUP2 EQ PUSH2 0xA4A JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE PUSH2 0xA45 SWAP4 DUP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA3B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA10 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA3B 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 0xA1E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x1A96 JUMP JUMPDEST PUSH2 0xA6C JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xACF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAD9 PUSH2 0x19A0 JUMP JUMPDEST 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 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP4 ISZERO PUSH2 0xB8A JUMPI DUP1 DUP5 ADD DUP2 DUP2 GT PUSH2 0xB5F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20616C6C6F77616E6365206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x914 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8E9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x914 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0xC98 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP1 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0xEAA JUMPI PUSH1 0x0 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0xCCA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xD44 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0xD52 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0xE55 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0xDBA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xDF9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0xE53 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0xE4E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0xCB5 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xEBA JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0xF34 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0xF16 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0xF3E PUSH2 0x19A0 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xF64 JUMPI PUSH2 0xF64 DUP12 DUP3 DUP6 PUSH2 0x1B20 JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0xFF9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1003 PUSH2 0x19A0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP DUP1 DUP1 JUMPDEST DUP6 DUP2 EQ PUSH2 0x1217 JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x1037 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x10B1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x10BF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x11C2 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x1127 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1166 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x11C0 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x11BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x1022 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1227 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x12A1 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x1283 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x914 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8E9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x914 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x136C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x932 PUSH2 0x1377 PUSH2 0x19A0 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1B20 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x932 PUSH2 0x138B PUSH2 0x19A0 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1C2F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x139D PUSH2 0x19A0 JUMP JUMPDEST SWAP1 POP PUSH2 0x13AB DUP2 DUP9 DUP9 DUP9 PUSH2 0x1A61 JUMP JUMPDEST PUSH2 0x13BD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D96 JUMP JUMPDEST ISZERO PUSH2 0x1526 JUMPI PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x149E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1526 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x15B2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373206F776E657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x1607 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2065787069726564207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP2 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP6 ADD MSTORE DUP1 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP5 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0xC0 DUP1 DUP5 ADD DUP10 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 SWAP1 SWAP4 ADD SWAP1 SWAP4 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 SWAP1 PUSH2 0x1699 PUSH2 0x984 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x174D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x17BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E76616C6964207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17CA DUP11 DUP11 DUP11 PUSH2 0x19A4 JUMP JUMPDEST POP POP POP POP POP POP POP 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 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x180C PUSH2 0x19A0 JUMP JUMPDEST SWAP1 POP PUSH2 0x1819 DUP2 DUP8 DUP8 PUSH2 0x1C2F JUMP JUMPDEST PUSH2 0x182B DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D96 JUMP JUMPDEST ISZERO PUSH2 0x1994 JUMPI PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP5 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x190C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1920 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1994 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x19FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 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 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x1A6C DUP4 DUP4 DUP4 PUSH2 0x1C2F JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1A90 JUMPI PUSH2 0x1A90 DUP4 DUP6 DUP4 PUSH2 0x1B20 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x1B57 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1BDE JUMPI DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x1BB3 JUMPI PUSH1 0x40 DUP1 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 SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 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 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1C8A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x1D46 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x1D00 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1D43 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP7 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE JUMPDEST POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP4 PUSH28 0xB6FAF69F9A6800137CC36801303CC6E884B3EBBF9DE61775CE07EADC 0xE7 STATICCALL PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "941:17211:38:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2491:610;;;;;;;;;;;;;;;;-1:-1:-1;2491:610:38;-1:-1:-1;;;;;;2491:610:38;;:::i;:::-;;;;;;;;;;;;;;;;;;4506:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3730:166;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3730:166:38;;;;;;;;:::i;3263:100::-;;;:::i;:::-;;;;;;;;;;;;;;;;4120:216;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4120:216:38;;;;;;;;;;;;;;;;;:::i;4776:92::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11199:354;;;:::i;5309:625::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5309:625:38;;;;;;;;:::i;5038:100::-;;;:::i;8089:1756::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8089:1756:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8089:1756:38;;-1:-1:-1;8089:1756:38;-1:-1:-1;8089:1756:38;:::i;3396:119::-;;;;;;;;;;;;;;;;-1:-1:-1;3396:119:38;-1:-1:-1;;;;;3396:119:38;;:::i;1587:50::-;;;;;;;;;;;;;;;;-1:-1:-1;1587:50:38;-1:-1:-1;;;;;1587:50:38;;:::i;6429:1613::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6429:1613:38;;-1:-1:-1;6429:1613:38;-1:-1:-1;6429:1613:38;:::i;4639:96::-;;;:::i;5976:277::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5976:277:38;;;;;;;;:::i;3929:158::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3929:158:38;;;;;;;;:::i;10505:473::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10505:473:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10505:473:38;;-1:-1:-1;10505:473:38;-1:-1:-1;10505:473:38;:::i;1402:42::-;;;:::i;11592:711::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11592:711:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3548:149;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3548:149:38;;;;;;;;;;:::i;10020:439::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10020:439:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10020:439:38;;-1:-1:-1;10020:439:38;-1:-1:-1;10020:439:38;:::i;2491:610::-;2576:4;-1:-1:-1;;;;;;2611:40:38;;2626:25;2611:40;;:95;;-1:-1:-1;;;;;;;2667:39:38;;2682:24;2667:39;2611:95;:158;;;-1:-1:-1;;;;;;;2722:47:38;;2737:32;2722:47;2611:158;:221;;;-1:-1:-1;;;;;;;2785:47:38;;2800:32;2785:47;2611:221;:285;;;-1:-1:-1;;;;;;;2848:48:38;;2863:33;2848:48;2611:285;:354;;;-1:-1:-1;;;;;;;2912:53:38;;2927:38;2912:53;2611:354;:422;;;-1:-1:-1;;;;;;;2981:52:38;;2996:37;2981:52;2611:422;:483;;;-1:-1:-1;;;;;;;3049:45:38;;3064:30;3049:45;2611:483;2592:502;2491:610;-1:-1:-1;;2491:610:38:o;4506:92::-;4586:5;4579:12;;;;;;;;-1:-1:-1;;4579:12:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4554:13;;4579:12;;4586:5;;4579:12;;4586:5;4579:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4506:92;:::o;3730:166::-;3814:4;3830:38;3839:12;:10;:12::i;:::-;3853:7;3862:5;3830:8;:38::i;:::-;-1:-1:-1;3885:4:38;3730:166;;;;:::o;3263:100::-;3344:12;;3263:100;:::o;4120:216::-;4248:4;4264:44;4278:12;:10;:12::i;:::-;4292:4;4298:2;4302:5;4264:13;:44::i;:::-;-1:-1:-1;4325:4:38;4120:216;;;;;:::o;4776:92::-;4852:9;4776:92;:::o;11199:354::-;11257:7;11335:9;11458:17;11447:28;;:99;;11539:5;11498:48;;;;;;;;;;;;;-1:-1:-1;;11498:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;11524:7;;11498:48;;11539:5;;11498:48;;11539:5;11498:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:25;:48::i;:::-;11447:99;;;11478:17;11447:99;11440:106;;;11199:354;:::o;5309:625::-;5408:4;-1:-1:-1;;;;;5432:21:38;;5424:61;;;;;-1:-1:-1;;;5424:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;5495:13;5511:12;:10;:12::i;:::-;-1:-1:-1;;;;;5554:18:38;;;5533;5554;;;:11;:18;;;;;;;;:27;;;;;;;;;;5495:28;;-1:-1:-1;5595:15:38;;5591:264;;5649:23;;;5694:25;;;5686:63;;;;;-1:-1:-1;;;5686:63:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5763:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:42;;;5793:12;-1:-1:-1;5591:264:38;5885:7;-1:-1:-1;;;;;5869:36:38;5878:5;-1:-1:-1;;;;;5869:36:38;;5894:10;5869:36;;;;;;;;;;;;;;;;;;-1:-1:-1;5923:4:38;;5309:625;-1:-1:-1;;;;5309:625:38:o;5038:100::-;5122:9;5115:16;;;;;;;;-1:-1:-1;;5115:16:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5090:13;;5115:16;;5122:9;;5115:16;;5122:9;5115:16;;;;;;;;;;;;;;;;;;;;;;;;8089:1756;8253:4;8286:10;8321:23;;;8313:62;;;;;-1:-1:-1;;;8313:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8404:15:38;;8386;8404;;;:9;:15;;;;;;;8386;;8498:791;8519:6;8514:1;:11;8498:791;;8546:10;8559;;8570:1;8559:13;;;;;;;;;;;;;-1:-1:-1;;;;;8559:13:38;8546:26;;8608:1;-1:-1:-1;;;;;8594:16:38;:2;-1:-1:-1;;;;;8594:16:38;;;8586:51;;;;;-1:-1:-1;;;8586:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8652:13;8668:6;;8675:1;8668:9;;;;;;;;;;;;;8652:25;;8696:5;8705:1;8696:10;8692:542;;8750:18;;;8794:26;;;8786:61;;;;;-1:-1:-1;;;8786:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8878:13;8865:26;;8921:2;-1:-1:-1;;;;;8913:10:38;:4;-1:-1:-1;;;;;8913:10:38;;8909:311;;-1:-1:-1;;;;;8947:13:38;;;;;;:9;:13;;;;;:22;;;;;;8909:311;;;9033:7;9024:5;:16;;9016:56;;;;;-1:-1:-1;;;9016:56:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;9094:31;;;;8909:311;8692:542;;9268:2;-1:-1:-1;;;;;9253:25:38;9262:4;-1:-1:-1;;;;;9253:25:38;;9272:5;9253:25;;;;;;;;;;;;;;;;;;-1:-1:-1;;8527:3:38;;8498:791;;;-1:-1:-1;9303:15:38;;;;;:55;;;9336:22;9322:10;:36;;9303:55;9299:380;;;9395:20;;;9437;;;9429:60;;;;;-1:-1:-1;;;9429:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9559:15:38;;;;;;:9;:15;;;;;9577:35;;;9559:53;;9299:380;9689:14;9706:12;:10;:12::i;:::-;9689:29;;9740:6;-1:-1:-1;;;;;9732:14:38;:4;-1:-1:-1;;;;;9732:14:38;;9728:89;;9762:44;9781:4;9787:6;9795:10;9762:18;:44::i;:::-;-1:-1:-1;9834:4:38;;8089:1756;-1:-1:-1;;;;;;;;;;8089:1756:38:o;3396:119::-;-1:-1:-1;;;;;3490:18:38;3464:7;3490:18;;;:9;:18;;;;;;;3396:119::o;1587:50::-;;;;;;;;;;;;;;:::o;6429:1613::-;6545:4;6578:10;6613:23;;;6605:62;;;;;-1:-1:-1;;;6605:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6677:14;6694:12;:10;:12::i;:::-;-1:-1:-1;;;;;6734:17:38;;6716:15;6734:17;;;:9;:17;;;;;;6677:29;;-1:-1:-1;6716:15:38;;6830:793;6851:6;6846:1;:11;6830:793;;6878:10;6891;;6902:1;6891:13;;;;;;;;;;;;;-1:-1:-1;;;;;6891:13:38;6878:26;;6940:1;-1:-1:-1;;;;;6926:16:38;:2;-1:-1:-1;;;;;6926:16:38;;;6918:51;;;;;-1:-1:-1;;;6918:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6984:13;7000:6;;7007:1;7000:9;;;;;;;;;;;;;6984:25;;7027:5;7036:1;7027:10;7023:544;;7081:18;;;7125:26;;;7117:61;;;;;-1:-1:-1;;;7117:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;7209:13;7196:26;;7254:2;-1:-1:-1;;;;;7244:12:38;:6;-1:-1:-1;;;;;7244:12:38;;7240:313;;-1:-1:-1;;;;;7280:13:38;;;;;;:9;:13;;;;;:22;;;;;;7240:313;;;7366:7;7357:5;:16;;7349:56;;;;;-1:-1:-1;;;7349:56:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;7427:31;;;;7240:313;7023:544;;7602:2;-1:-1:-1;;;;;7585:27:38;7594:6;-1:-1:-1;;;;;7585:27:38;;7606:5;7585:27;;;;;;;;;;;;;;;;;;-1:-1:-1;;6859:3:38;;6830:793;;;-1:-1:-1;7637:15:38;;;;;:55;;;7670:22;7656:10;:36;;7637:55;7633:382;;;7729:20;;;7771;;;7763:60;;;;;-1:-1:-1;;;7763:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7893:17:38;;;;;;:9;:17;;;;;7913:35;;;7893:55;;7633:382;-1:-1:-1;8031:4:38;;6429:1613;-1:-1:-1;;;;;;;;;6429:1613:38:o;4639:96::-;4721:7;4714:14;;;;;;;-1:-1:-1;;4714:14:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4689:13;;4714:14;;4721:7;;4714:14;;4721:7;4714:14;;;;;;;;;;;;;;;;;;;;;;;;5976:277;6080:4;-1:-1:-1;;;;;6104:21:38;;6096:61;;;;;-1:-1:-1;;;6096:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6167:58;6186:12;:10;:12::i;:::-;6200:7;6209:15;6167:18;:58::i;3929:158::-;4009:4;4025:34;4035:12;:10;:12::i;:::-;4049:2;4053:5;4025:9;:34::i;10505:473::-;10667:4;10683:14;10700:12;:10;:12::i;:::-;10683:29;;10722:39;10736:6;10744:4;10750:2;10754:6;10722:13;:39::i;:::-;10775:15;:2;-1:-1:-1;;;;;10775:13:38;;:15::i;:::-;10771:180;;;10880:32;10814:98;;;10829:2;-1:-1:-1;;;;;10814:34:38;;10849:6;10857:4;10863:6;10871:4;;10814:62;;;;;;;;;;;;;-1:-1:-1;;;;;10814:62:38;;;;;;-1:-1:-1;;;;;10814:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10814:62:38;-1:-1:-1;;;;;;10814:98:38;;10806:134;;;;;-1:-1:-1;;;10806:134:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10967:4:38;;10505:473;-1:-1:-1;;;;;;10505:473:38:o;1402:42::-;;;:::o;11592:711::-;-1:-1:-1;;;;;11810:19:38;;11802:57;;;;;-1:-1:-1;;;11802:57:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;11896:8;11877:15;:27;;11869:61;;;;;-1:-1:-1;;;11869:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12022:13:38;;;11940:18;12022:13;;;;;;;;;;;:15;;;;;;;;11971:77;;1329:66;11971:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11961:88;;;;;;;;12113:18;:16;:18::i;:::-;12133:10;12084:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12074:71;;;;;;12059:86;;12155:14;12172:24;12182:4;12188:1;12191;12194;12172:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12155:41;;12224:5;-1:-1:-1;;;;;12214:15:38;:6;-1:-1:-1;;;;;12214:15:38;;12206:49;;;;;-1:-1:-1;;;12206:49:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;12265:31;12274:5;12281:7;12290:5;12265:8;:31::i;:::-;11592:711;;;;;;;;;;:::o;3548:149::-;-1:-1:-1;;;;;3663:18:38;;;3637:7;3663:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3548:149::o;10020:439::-;10156:4;10172:14;10189:12;:10;:12::i;:::-;10172:29;;10211;10221:6;10229:2;10233:6;10211:9;:29::i;:::-;10254:15;:2;-1:-1:-1;;;;;10254:13:38;;:15::i;:::-;10250:182;;;10361:32;10293:100;;;10308:2;-1:-1:-1;;;;;10293:34:38;;10328:6;10336;10344;10352:4;;10293:64;;;;;;;;;;;;;-1:-1:-1;;;;;10293:64:38;;;;;;-1:-1:-1;;;;;10293:64:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10293:64:38;-1:-1:-1;;;;;;10293:100:38;;10285:136;;;;;-1:-1:-1;;;10285:136:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10448:4:38;;10020:439;-1:-1:-1;;;;;10020:439:38:o;355:104:5:-;442:10;355:104;:::o;12438:273:38:-;-1:-1:-1;;;;;12560:21:38;;12552:61;;;;;-1:-1:-1;;;12552:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12623:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:35;;;12673:31;;;;;;;;;;;;;;;;;12438:273;;;:::o;13965:263::-;14102:26;14112:4;14118:2;14122:5;14102:9;:26::i;:::-;14150:6;-1:-1:-1;;;;;14142:14:38;:4;-1:-1:-1;;;;;14142:14:38;;14138:84;;14172:39;14191:4;14197:6;14205:5;14172:18;:39::i;:::-;13965:263;;;;:::o;17687:463::-;17995:16;;;;;;;17846:283;;;17878:95;17846:283;;;;;;;;;;;18033:14;17846:283;;;;;;;;;;;18106:4;17846:283;;;;;;;;;;;;;;;;;;;;;;;;;17819:324;;;;;;17687:463::o;12717:682::-;-1:-1:-1;;;;;12872:18:38;;;12851;12872;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;12914:31:38;;;;;:55;;-1:-1:-1;12949:20:38;;;12914:55;12910:432;;;13127:28;;;13177:25;;;13169:67;;;;;-1:-1:-1;;;13169:67:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13250:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:42;;;13280:12;-1:-1:-1;12910:432:38;13372:7;-1:-1:-1;;;;;13356:36:38;13365:5;-1:-1:-1;;;;;13356:36:38;;13381:10;13356:36;;;;;;;;;;;;;;;;;;12717:682;;;;:::o;13405:554::-;-1:-1:-1;;;;;13530:16:38;;13522:51;;;;;-1:-1:-1;;;13522:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;13588:10;;13584:328;;-1:-1:-1;;;;;13632:15:38;;13614;13632;;;:9;:15;;;;;;13682;;;13719:20;;;13711:60;;;;;-1:-1:-1;;;13711:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;13797:2;-1:-1:-1;;;;;13789:10:38;:4;-1:-1:-1;;;;;13789:10:38;;13785:117;;-1:-1:-1;;;;;13819:15:38;;;;;;;:9;:15;;;;;;:28;;;13865:13;;;;;;:22;;;;;;13785:117;13584:328;;;13942:2;-1:-1:-1;;;;;13927:25:38;13936:4;-1:-1:-1;;;;;13927:25:38;;13946:5;13927:25;;;;;;;;;;;;;;;;;;13405:554;;;:::o;913:377:9:-;1229:20;1275:8;;;913:377::o"
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "batchTransfer(address[],uint256[])": "88d695b2",
              "batchTransferFrom(address,address[],uint256[])": "4885b254",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "deploymentChainId()": "cd0d0096",
              "increaseAllowance(address,uint256)": "39509351",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "safeTransfer(address,uint256,bytes)": "eb795549",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI()": "3c130d90",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/token/ERC20/ERC20Burnable.sol": {
        "ERC20Burnable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "internalType": "uint8",
                  "name": "decimals",
                  "type": "uint8"
                }
              ],
              "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": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "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": "value",
                  "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": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "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": [],
              "name": "deploymentChainId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "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": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransfer",
              "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"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "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": [],
              "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": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60e06040523480156200001157600080fd5b506040516200264838038062002648833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b50604052602090810151855190935085925084918491620001c09160019190860190620002ae565b508151620001d6906002906020850190620002ae565b507fff0000000000000000000000000000000000000000000000000000000000000060f882901b1660c05246608081905262000213818562000224565b60a052506200035a95505050505050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620002e6576000855562000331565b82601f106200030157805160ff191683800117855562000331565b8280016001018555821562000331579182015b828111156200033157825182559160200191906001019062000314565b506200033f92915062000343565b5090565b5b808211156200033f576000815560010162000344565b60805160a05160c05160f81c6122b96200038f600039806109ab525080610a955250806109d252806115a552506122b96000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806370a08231116100e3578063a9059cbb1161008c578063d505accf11610066578063d505accf1461070e578063dd62ed3e14610761578063eb7955491461078f57610198565b8063a9059cbb1461064a578063b88d4fde14610676578063cd0d00961461070657610198565b806388d695b2116100bd57806388d695b21461055457806395d89b4114610616578063a457c2d71461061e57610198565b806370a08231146104dc57806379cc6790146105025780637ecebe001461052e57610198565b8063313ce567116101455780633c130d901161011f5780633c130d90146103e557806342966c68146103ed5780634885b2541461040a57610198565b8063313ce567146103935780633644e515146103b157806339509351146103b957610198565b806318160ddd1161017657806318160ddd146102815780631b9a75291461029b57806323b872dd1461035d57610198565b806301ffc9a71461019d57806306fdde03146101d8578063095ea7b314610255575b600080fd5b6101c4600480360360208110156101b357600080fd5b50356001600160e01b031916610814565b604080519115158252519081900360200190f35b6101e0610858565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561021a578181015183820152602001610202565b50505050905090810190601f1680156102475780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101c46004803603604081101561026b57600080fd5b506001600160a01b0381351690602001356108ed565b61028961090a565b60408051918252519081900360200190f35b6101c4600480360360408110156102b157600080fd5b8101906020810181356401000000008111156102cc57600080fd5b8201836020820111156102de57600080fd5b8035906020019184602083028401116401000000008311171561030057600080fd5b91939092909160208101903564010000000081111561031e57600080fd5b82018360208201111561033057600080fd5b8035906020019184602083028401116401000000008311171561035257600080fd5b509092509050610910565b6101c46004803603606081101561037357600080fd5b506001600160a01b0381358116916020810135909116906040013561098a565b61039b6109a9565b6040805160ff9092168252519081900360200190f35b6102896109cd565b6101c4600480360360408110156103cf57600080fd5b506001600160a01b038135169060200135610abb565b6101e0610c29565b6101c46004803603602081101561040357600080fd5b5035610c8a565b6101c46004803603606081101561042057600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561044b57600080fd5b82018360208201111561045d57600080fd5b8035906020019184602083028401116401000000008311171561047f57600080fd5b91939092909160208101903564010000000081111561049d57600080fd5b8201836020820111156104af57600080fd5b803590602001918460208302840111640100000000831117156104d157600080fd5b509092509050610ca5565b610289600480360360208110156104f257600080fd5b50356001600160a01b0316610fd9565b6101c46004803603604081101561051857600080fd5b506001600160a01b038135169060200135610ff4565b6102896004803603602081101561054457600080fd5b50356001600160a01b0316611000565b6101c46004803603604081101561056a57600080fd5b81019060208101813564010000000081111561058557600080fd5b82018360208201111561059757600080fd5b803590602001918460208302840111640100000000831117156105b957600080fd5b9193909290916020810190356401000000008111156105d757600080fd5b8201836020820111156105e957600080fd5b8035906020019184602083028401116401000000008311171561060b57600080fd5b509092509050611012565b6101e0611321565b6101c46004803603604081101561063457600080fd5b506001600160a01b03813516906020013561137f565b6101c46004803603604081101561066057600080fd5b506001600160a01b0381351690602001356113ee565b6101c46004803603608081101561068c57600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156106c757600080fd5b8201836020820111156106d957600080fd5b803590602001918460018302840111640100000000831117156106fb57600080fd5b509092509050611402565b6102896115a3565b61075f600480360360e081101561072457600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356115c7565b005b6102896004803603604081101561077757600080fd5b506001600160a01b0381358116916020013516611846565b6101c4600480360360608110156107a557600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156107d557600080fd5b8201836020820111156107e757600080fd5b8035906020019184600183028401116401000000008311171561080957600080fd5b509092509050611871565b60006001600160e01b031982167f20c07ed1000000000000000000000000000000000000000000000000000000001480610852575061085282611a10565b92915050565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156108e35780601f106108b8576101008083540402835291602001916108e3565b820191906000526020600020905b8154815290600101906020018083116108c657829003601f168201915b5050505050905090565b60006109016108fa611bad565b8484611bb1565b50600192915050565b60065490565b600061097f85858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808902828101820190935288825290935088925087918291850190849080828437600092019190915250611c6e92505050565b506001949350505050565b600061099f610997611bad565b858585611e2a565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610a935760018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152610a8e93859391929091830182828015610a845780601f10610a5957610100808354040283529160200191610a84565b820191906000526020600020905b815481529060010190602001808311610a6757829003601f168201915b5050505050611e5f565b610ab5565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b60006001600160a01b038316610b18576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6000610b22611bad565b6001600160a01b038082166000908152600560209081526040808320938916835292905220549091508315610bd357808401818111610ba8576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600560209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108e35780601f106108b8576101008083540402835291602001916108e3565b6000610c9d610c97611bad565b83611ee9565b506001919050565b600083828114610cfc576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600460205260408120549080805b848114610f0e5760008a8a83818110610d2e57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415610da8576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b6000898984818110610db657fe5b90506020020135905080600014610eb957848101858111610e1e576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b031614610e5d576001600160a01b0383166000908152600460205260409020805483019055610eb7565b86821115610eb2576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101610d19565b508115801590610f1e5750808214155b15610f9857818303838110610f7a576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260046020526040902090820190555b6000610fa2611bad565b9050806001600160a01b03168b6001600160a01b031614610fc857610fc88b8285611fc8565b5060019a9950505050505050505050565b6001600160a01b031660009081526004602052604090205490565b600061090183836120d7565b60006020819052908152604090205481565b600083828114611069576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000611073611bad565b6001600160a01b03811660009081526004602052604081205491925080805b8581146112875760008b8b838181106110a757fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415611121576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a8481811061112f57fe5b9050602002013590508060001461123257848101858111611197576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b0316146111d6576001600160a01b0383166000908152600460205260409020805483019055611230565b8682111561122b576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101611092565b5081158015906112975750808214155b15611311578183038381106112f3576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260046020526040902090820190555b5060019998505050505050505050565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156108e35780601f106108b8576101008083540402835291602001916108e3565b60006001600160a01b0383166113dc576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6109016113e7611bad565b8484611fc8565b60006109016113fb611bad565b8484612116565b60008061140d611bad565b905061141b81888888611e2a565b61142d866001600160a01b031661227d565b15611596577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561150e57600080fd5b505af1158015611522573d6000803e3d6000fd5b505050506040513d602081101561153857600080fd5b50516001600160e01b03191614611596576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b038716611622576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b83421115611677576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526020818152604080832080546001810190915581517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a084019490945260c08084018990528451808503909101815260e090930190935281519190920120906117096109cd565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156117bd573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b03161461182f576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b61183a8a8a8a611bb1565b50505050505050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60008061187c611bad565b9050611889818787612116565b61189b866001600160a01b031661227d565b15611a04577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561197c57600080fd5b505af1158015611990573d6000803e3d6000fd5b505050506040513d60208110156119a657600080fd5b50516001600160e01b03191614611a04576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b60006001600160e01b031982167f01ffc9a7000000000000000000000000000000000000000000000000000000001480611a7357506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b80611aa757506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b80611adb57506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b80611b0f57506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b80611b4357506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b80611b7757506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b806108525750506001600160e01b0319167f9d8ff7da000000000000000000000000000000000000000000000000000000001490565b3390565b6001600160a01b038216611c0c576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b815181518114611cc5576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000611ccf611bad565b90506000805b838114611e12576000868281518110611cea57fe5b602002602001015190506000868381518110611d0257fe5b6020026020010151905080600014611da3576001600160a01b038216600090815260046020526040902054818103818110611d84576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205550928301925b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3846001600160a01b0316826001600160a01b031614611e0857611e08828683611fc8565b5050600101611cd5565b508015611e23576006805482900390555b5050505050565b611e35838383612116565b836001600160a01b0316836001600160a01b031614611e5957611e59838583611fc8565b50505050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b8015611f83576001600160a01b038216600090815260046020526040902054818103818110611f5f576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902055506006805482900390555b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b038084166000908152600560209081526040808320938616835292905220546000198114801590611fff57508115155b156120865781810381811061205b576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b6120e18282611ee9565b60006120eb611bad565b9050806001600160a01b0316836001600160a01b03161461211157612111838284611fc8565b505050565b6001600160a01b038216612171576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b801561222d576001600160a01b0383166000908152600460205260409020548181038181106121e7576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03161461222a576001600160a01b038086166000908152600460205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b15159056fea2646970667358221220609492e3475dcb588508b2ff8b5a7f26eba7b84066e13d51616e71dcf1a67db264736f6c63430007060033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2648 CODESIZE SUB DUP1 PUSH3 0x2648 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD MLOAD DUP6 MLOAD SWAP1 SWAP4 POP DUP6 SWAP3 POP DUP5 SWAP2 DUP5 SWAP2 PUSH3 0x1C0 SWAP2 PUSH1 0x1 SWAP2 SWAP1 DUP7 ADD SWAP1 PUSH3 0x2AE JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x1D6 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x2AE JUMP JUMPDEST POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF8 DUP3 SWAP1 SHL AND PUSH1 0xC0 MSTORE CHAINID PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH3 0x213 DUP2 DUP6 PUSH3 0x224 JUMP JUMPDEST PUSH1 0xA0 MSTORE POP PUSH3 0x35A SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x2E6 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x331 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x301 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x331 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x331 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x331 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x314 JUMP JUMPDEST POP PUSH3 0x33F SWAP3 SWAP2 POP PUSH3 0x343 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x33F JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x344 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xF8 SHR PUSH2 0x22B9 PUSH3 0x38F PUSH1 0x0 CODECOPY DUP1 PUSH2 0x9AB MSTORE POP DUP1 PUSH2 0xA95 MSTORE POP DUP1 PUSH2 0x9D2 MSTORE DUP1 PUSH2 0x15A5 MSTORE POP PUSH2 0x22B9 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 0x198 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x70E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x761 JUMPI DUP1 PUSH4 0xEB795549 EQ PUSH2 0x78F JUMPI PUSH2 0x198 JUMP JUMPDEST DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x64A JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x676 JUMPI DUP1 PUSH4 0xCD0D0096 EQ PUSH2 0x706 JUMPI PUSH2 0x198 JUMP JUMPDEST DUP1 PUSH4 0x88D695B2 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x88D695B2 EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x616 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x61E JUMPI PUSH2 0x198 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4DC JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x502 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x52E JUMPI PUSH2 0x198 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x145 JUMPI DUP1 PUSH4 0x3C130D90 GT PUSH2 0x11F JUMPI DUP1 PUSH4 0x3C130D90 EQ PUSH2 0x3E5 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0x4885B254 EQ PUSH2 0x40A JUMPI PUSH2 0x198 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x393 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3B9 JUMPI PUSH2 0x198 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x176 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x1B9A7529 EQ PUSH2 0x29B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x35D JUMPI PUSH2 0x198 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x19D JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x255 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x814 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1E0 PUSH2 0x858 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x21A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x202 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x247 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x26B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8ED JUMP JUMPDEST PUSH2 0x289 PUSH2 0x90A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x31E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x910 JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x98A JUMP JUMPDEST PUSH2 0x39B PUSH2 0x9A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x289 PUSH2 0x9CD JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xABB JUMP JUMPDEST PUSH2 0x1E0 PUSH2 0xC29 JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC8A JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x49D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xCA5 JUMP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFD9 JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x518 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFF4 JUMP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x544 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1000 JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x56A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x597 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1012 JUMP JUMPDEST PUSH2 0x1E0 PUSH2 0x1321 JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x634 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x137F JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x660 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x13EE JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x68C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1402 JUMP JUMPDEST PUSH2 0x289 PUSH2 0x15A3 JUMP JUMPDEST PUSH2 0x75F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x724 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x15C7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x777 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1846 JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x7A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x7D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x809 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1871 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x20C07ED100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x852 JUMPI POP PUSH2 0x852 DUP3 PUSH2 0x1A10 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x8E3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8B8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8E3 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 0x8C6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x901 PUSH2 0x8FA PUSH2 0x1BAD JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1BB1 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97F DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE SWAP1 SWAP4 POP DUP9 SWAP3 POP DUP8 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1C6E SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x99F PUSH2 0x997 PUSH2 0x1BAD JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x1E2A JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 DUP2 EQ PUSH2 0xA93 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE PUSH2 0xA8E SWAP4 DUP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA84 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA59 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA84 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 0xA67 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x1E5F JUMP JUMPDEST PUSH2 0xAB5 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xB18 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB22 PUSH2 0x1BAD JUMP JUMPDEST 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 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP4 ISZERO PUSH2 0xBD3 JUMPI DUP1 DUP5 ADD DUP2 DUP2 GT PUSH2 0xBA8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20616C6C6F77616E6365206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x8E3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8B8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC9D PUSH2 0xC97 PUSH2 0x1BAD JUMP JUMPDEST DUP4 PUSH2 0x1EE9 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0xCFC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP1 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0xF0E JUMPI PUSH1 0x0 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0xD2E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0xDB6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0xEB9 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0xE1E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xE5D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0xEB7 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0xEB2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0xD19 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xF1E JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0xF98 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0xF7A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0xFA2 PUSH2 0x1BAD JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xFC8 JUMPI PUSH2 0xFC8 DUP12 DUP3 DUP6 PUSH2 0x1FC8 JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x901 DUP4 DUP4 PUSH2 0x20D7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x1069 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1073 PUSH2 0x1BAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP DUP1 DUP1 JUMPDEST DUP6 DUP2 EQ PUSH2 0x1287 JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x10A7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1121 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x112F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x1232 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x1197 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x11D6 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x1230 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x122B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x1092 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1297 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x1311 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x12F3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x8E3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8B8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x13DC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x901 PUSH2 0x13E7 PUSH2 0x1BAD JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1FC8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x901 PUSH2 0x13FB PUSH2 0x1BAD JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2116 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x140D PUSH2 0x1BAD JUMP JUMPDEST SWAP1 POP PUSH2 0x141B DUP2 DUP9 DUP9 DUP9 PUSH2 0x1E2A JUMP JUMPDEST PUSH2 0x142D DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x227D JUMP JUMPDEST ISZERO PUSH2 0x1596 JUMPI PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x150E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1522 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1596 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x1622 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373206F776E657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x1677 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2065787069726564207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP2 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP6 ADD MSTORE DUP1 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP5 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0xC0 DUP1 DUP5 ADD DUP10 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 SWAP1 SWAP4 ADD SWAP1 SWAP4 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 SWAP1 PUSH2 0x1709 PUSH2 0x9CD JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x182F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E76616C6964207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x183A DUP11 DUP11 DUP11 PUSH2 0x1BB1 JUMP JUMPDEST POP POP POP POP POP POP POP 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 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x187C PUSH2 0x1BAD JUMP JUMPDEST SWAP1 POP PUSH2 0x1889 DUP2 DUP8 DUP8 PUSH2 0x2116 JUMP JUMPDEST PUSH2 0x189B DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x227D JUMP JUMPDEST ISZERO PUSH2 0x1A04 JUMPI PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP5 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x197C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1990 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1A04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x1A73 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x36372B0700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1AA7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xA219A02500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1ADB JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x3C130D9000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1B0F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D07518600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1B43 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xC05327E600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1B77 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x53F41A9700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x852 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0x9D8FF7DA00000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1C0C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 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 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x1CC5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1CCF PUSH2 0x1BAD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 EQ PUSH2 0x1E12 JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1CEA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1D02 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x1DA3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x1D84 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP SWAP3 DUP4 ADD SWAP3 JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1E08 JUMPI PUSH2 0x1E08 DUP3 DUP7 DUP4 PUSH2 0x1FC8 JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1CD5 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x1E23 JUMPI PUSH1 0x6 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1E35 DUP4 DUP4 DUP4 PUSH2 0x2116 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1E59 JUMPI PUSH2 0x1E59 DUP4 DUP6 DUP4 PUSH2 0x1FC8 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1F83 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x1F5F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP PUSH1 0x6 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x1FFF JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2086 JUMPI DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x205B JUMPI PUSH1 0x40 DUP1 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 SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 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 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0x20E1 DUP3 DUP3 PUSH2 0x1EE9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20EB PUSH2 0x1BAD JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2111 JUMPI PUSH2 0x2111 DUP4 DUP3 DUP5 PUSH2 0x1FC8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2171 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x222D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x21E7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x222A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP7 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE JUMPDEST POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0x94 SWAP3 0xE3 SELFBALANCE 0x5D 0xCB PC DUP6 ADDMOD 0xB2 SELFDESTRUCT DUP12 GAS PUSH32 0x26EBA7B84066E13D51616E71DCF1A67DB264736F6C6343000706003300000000 ",
              "sourceMap": "327:1275:39:-:0;;;381:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;381:132:39;;;;;;;;;;-1:-1:-1;381:132:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;381:132:39;;;;;;;;;;-1:-1:-1;381:132:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;381:132:39;;;;;;;2047:13:38;;381:132:39;;-1:-1:-1;487:4:39;;-1:-1:-1;493:6:39;;381:132;;2047:13:38;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;2070:17:38;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;2097:21:38;;;;;;;;2188:9;2216:27;;;;2273:48;2188:9;2314:5;2273:25;:48::i;:::-;2253:68;;-1:-1:-1;327:1275:39;;-1:-1:-1;;;;;;327:1275:39;17687:463:38;17995:16;;;;;;;17846:283;;;17878:95;17846:283;;;;;;;;;;;18033:14;17846:283;;;;;;;;;;;18106:4;17846:283;;;;;;;;;;;;;;;;;;;;;;;;;17819:324;;;;;;17687:463::o;327:1275:39:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;327:1275:39;;;-1:-1:-1;327:1275:39;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {
                "8178": [
                  {
                    "length": 32,
                    "start": 2514
                  },
                  {
                    "length": 32,
                    "start": 5541
                  }
                ],
                "8180": [
                  {
                    "length": 32,
                    "start": 2709
                  }
                ],
                "8192": [
                  {
                    "length": 32,
                    "start": 2475
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101985760003560e01c806370a08231116100e3578063a9059cbb1161008c578063d505accf11610066578063d505accf1461070e578063dd62ed3e14610761578063eb7955491461078f57610198565b8063a9059cbb1461064a578063b88d4fde14610676578063cd0d00961461070657610198565b806388d695b2116100bd57806388d695b21461055457806395d89b4114610616578063a457c2d71461061e57610198565b806370a08231146104dc57806379cc6790146105025780637ecebe001461052e57610198565b8063313ce567116101455780633c130d901161011f5780633c130d90146103e557806342966c68146103ed5780634885b2541461040a57610198565b8063313ce567146103935780633644e515146103b157806339509351146103b957610198565b806318160ddd1161017657806318160ddd146102815780631b9a75291461029b57806323b872dd1461035d57610198565b806301ffc9a71461019d57806306fdde03146101d8578063095ea7b314610255575b600080fd5b6101c4600480360360208110156101b357600080fd5b50356001600160e01b031916610814565b604080519115158252519081900360200190f35b6101e0610858565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561021a578181015183820152602001610202565b50505050905090810190601f1680156102475780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101c46004803603604081101561026b57600080fd5b506001600160a01b0381351690602001356108ed565b61028961090a565b60408051918252519081900360200190f35b6101c4600480360360408110156102b157600080fd5b8101906020810181356401000000008111156102cc57600080fd5b8201836020820111156102de57600080fd5b8035906020019184602083028401116401000000008311171561030057600080fd5b91939092909160208101903564010000000081111561031e57600080fd5b82018360208201111561033057600080fd5b8035906020019184602083028401116401000000008311171561035257600080fd5b509092509050610910565b6101c46004803603606081101561037357600080fd5b506001600160a01b0381358116916020810135909116906040013561098a565b61039b6109a9565b6040805160ff9092168252519081900360200190f35b6102896109cd565b6101c4600480360360408110156103cf57600080fd5b506001600160a01b038135169060200135610abb565b6101e0610c29565b6101c46004803603602081101561040357600080fd5b5035610c8a565b6101c46004803603606081101561042057600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561044b57600080fd5b82018360208201111561045d57600080fd5b8035906020019184602083028401116401000000008311171561047f57600080fd5b91939092909160208101903564010000000081111561049d57600080fd5b8201836020820111156104af57600080fd5b803590602001918460208302840111640100000000831117156104d157600080fd5b509092509050610ca5565b610289600480360360208110156104f257600080fd5b50356001600160a01b0316610fd9565b6101c46004803603604081101561051857600080fd5b506001600160a01b038135169060200135610ff4565b6102896004803603602081101561054457600080fd5b50356001600160a01b0316611000565b6101c46004803603604081101561056a57600080fd5b81019060208101813564010000000081111561058557600080fd5b82018360208201111561059757600080fd5b803590602001918460208302840111640100000000831117156105b957600080fd5b9193909290916020810190356401000000008111156105d757600080fd5b8201836020820111156105e957600080fd5b8035906020019184602083028401116401000000008311171561060b57600080fd5b509092509050611012565b6101e0611321565b6101c46004803603604081101561063457600080fd5b506001600160a01b03813516906020013561137f565b6101c46004803603604081101561066057600080fd5b506001600160a01b0381351690602001356113ee565b6101c46004803603608081101561068c57600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156106c757600080fd5b8201836020820111156106d957600080fd5b803590602001918460018302840111640100000000831117156106fb57600080fd5b509092509050611402565b6102896115a3565b61075f600480360360e081101561072457600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356115c7565b005b6102896004803603604081101561077757600080fd5b506001600160a01b0381358116916020013516611846565b6101c4600480360360608110156107a557600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156107d557600080fd5b8201836020820111156107e757600080fd5b8035906020019184600183028401116401000000008311171561080957600080fd5b509092509050611871565b60006001600160e01b031982167f20c07ed1000000000000000000000000000000000000000000000000000000001480610852575061085282611a10565b92915050565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156108e35780601f106108b8576101008083540402835291602001916108e3565b820191906000526020600020905b8154815290600101906020018083116108c657829003601f168201915b5050505050905090565b60006109016108fa611bad565b8484611bb1565b50600192915050565b60065490565b600061097f85858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808902828101820190935288825290935088925087918291850190849080828437600092019190915250611c6e92505050565b506001949350505050565b600061099f610997611bad565b858585611e2a565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610a935760018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152610a8e93859391929091830182828015610a845780601f10610a5957610100808354040283529160200191610a84565b820191906000526020600020905b815481529060010190602001808311610a6757829003601f168201915b5050505050611e5f565b610ab5565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b60006001600160a01b038316610b18576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6000610b22611bad565b6001600160a01b038082166000908152600560209081526040808320938916835292905220549091508315610bd357808401818111610ba8576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600560209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108e35780601f106108b8576101008083540402835291602001916108e3565b6000610c9d610c97611bad565b83611ee9565b506001919050565b600083828114610cfc576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600460205260408120549080805b848114610f0e5760008a8a83818110610d2e57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415610da8576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b6000898984818110610db657fe5b90506020020135905080600014610eb957848101858111610e1e576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b031614610e5d576001600160a01b0383166000908152600460205260409020805483019055610eb7565b86821115610eb2576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101610d19565b508115801590610f1e5750808214155b15610f9857818303838110610f7a576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260046020526040902090820190555b6000610fa2611bad565b9050806001600160a01b03168b6001600160a01b031614610fc857610fc88b8285611fc8565b5060019a9950505050505050505050565b6001600160a01b031660009081526004602052604090205490565b600061090183836120d7565b60006020819052908152604090205481565b600083828114611069576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000611073611bad565b6001600160a01b03811660009081526004602052604081205491925080805b8581146112875760008b8b838181106110a757fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415611121576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a8481811061112f57fe5b9050602002013590508060001461123257848101858111611197576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b0316146111d6576001600160a01b0383166000908152600460205260409020805483019055611230565b8682111561122b576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101611092565b5081158015906112975750808214155b15611311578183038381106112f3576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260046020526040902090820190555b5060019998505050505050505050565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156108e35780601f106108b8576101008083540402835291602001916108e3565b60006001600160a01b0383166113dc576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6109016113e7611bad565b8484611fc8565b60006109016113fb611bad565b8484612116565b60008061140d611bad565b905061141b81888888611e2a565b61142d866001600160a01b031661227d565b15611596577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561150e57600080fd5b505af1158015611522573d6000803e3d6000fd5b505050506040513d602081101561153857600080fd5b50516001600160e01b03191614611596576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b038716611622576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b83421115611677576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526020818152604080832080546001810190915581517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a084019490945260c08084018990528451808503909101815260e090930190935281519190920120906117096109cd565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156117bd573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b03161461182f576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b61183a8a8a8a611bb1565b50505050505050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60008061187c611bad565b9050611889818787612116565b61189b866001600160a01b031661227d565b15611a04577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561197c57600080fd5b505af1158015611990573d6000803e3d6000fd5b505050506040513d60208110156119a657600080fd5b50516001600160e01b03191614611a04576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b60006001600160e01b031982167f01ffc9a7000000000000000000000000000000000000000000000000000000001480611a7357506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b80611aa757506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b80611adb57506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b80611b0f57506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b80611b4357506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b80611b7757506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b806108525750506001600160e01b0319167f9d8ff7da000000000000000000000000000000000000000000000000000000001490565b3390565b6001600160a01b038216611c0c576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b815181518114611cc5576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000611ccf611bad565b90506000805b838114611e12576000868281518110611cea57fe5b602002602001015190506000868381518110611d0257fe5b6020026020010151905080600014611da3576001600160a01b038216600090815260046020526040902054818103818110611d84576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205550928301925b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3846001600160a01b0316826001600160a01b031614611e0857611e08828683611fc8565b5050600101611cd5565b508015611e23576006805482900390555b5050505050565b611e35838383612116565b836001600160a01b0316836001600160a01b031614611e5957611e59838583611fc8565b50505050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b8015611f83576001600160a01b038216600090815260046020526040902054818103818110611f5f576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902055506006805482900390555b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b038084166000908152600560209081526040808320938616835292905220546000198114801590611fff57508115155b156120865781810381811061205b576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b6120e18282611ee9565b60006120eb611bad565b9050806001600160a01b0316836001600160a01b03161461211157612111838284611fc8565b505050565b6001600160a01b038216612171576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b801561222d576001600160a01b0383166000908152600460205260409020548181038181106121e7576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03161461222a576001600160a01b038086166000908152600460205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b15159056fea2646970667358221220609492e3475dcb588508b2ff8b5a7f26eba7b84066e13d51616e71dcf1a67db264736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x198 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x70E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x761 JUMPI DUP1 PUSH4 0xEB795549 EQ PUSH2 0x78F JUMPI PUSH2 0x198 JUMP JUMPDEST DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x64A JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x676 JUMPI DUP1 PUSH4 0xCD0D0096 EQ PUSH2 0x706 JUMPI PUSH2 0x198 JUMP JUMPDEST DUP1 PUSH4 0x88D695B2 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x88D695B2 EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x616 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x61E JUMPI PUSH2 0x198 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4DC JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x502 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x52E JUMPI PUSH2 0x198 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x145 JUMPI DUP1 PUSH4 0x3C130D90 GT PUSH2 0x11F JUMPI DUP1 PUSH4 0x3C130D90 EQ PUSH2 0x3E5 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0x4885B254 EQ PUSH2 0x40A JUMPI PUSH2 0x198 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x393 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3B9 JUMPI PUSH2 0x198 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x176 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x1B9A7529 EQ PUSH2 0x29B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x35D JUMPI PUSH2 0x198 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x19D JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x255 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x814 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1E0 PUSH2 0x858 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x21A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x202 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x247 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x26B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8ED JUMP JUMPDEST PUSH2 0x289 PUSH2 0x90A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x31E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x910 JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x98A JUMP JUMPDEST PUSH2 0x39B PUSH2 0x9A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x289 PUSH2 0x9CD JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xABB JUMP JUMPDEST PUSH2 0x1E0 PUSH2 0xC29 JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC8A JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x49D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xCA5 JUMP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFD9 JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x518 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFF4 JUMP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x544 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1000 JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x56A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x597 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1012 JUMP JUMPDEST PUSH2 0x1E0 PUSH2 0x1321 JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x634 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x137F JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x660 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x13EE JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x68C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1402 JUMP JUMPDEST PUSH2 0x289 PUSH2 0x15A3 JUMP JUMPDEST PUSH2 0x75F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x724 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x15C7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x777 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1846 JUMP JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x7A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x7D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x809 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1871 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x20C07ED100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x852 JUMPI POP PUSH2 0x852 DUP3 PUSH2 0x1A10 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x8E3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8B8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8E3 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 0x8C6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x901 PUSH2 0x8FA PUSH2 0x1BAD JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1BB1 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97F DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE SWAP1 SWAP4 POP DUP9 SWAP3 POP DUP8 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1C6E SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x99F PUSH2 0x997 PUSH2 0x1BAD JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x1E2A JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 DUP2 EQ PUSH2 0xA93 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE PUSH2 0xA8E SWAP4 DUP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA84 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA59 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA84 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 0xA67 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x1E5F JUMP JUMPDEST PUSH2 0xAB5 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xB18 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB22 PUSH2 0x1BAD JUMP JUMPDEST 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 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP4 ISZERO PUSH2 0xBD3 JUMPI DUP1 DUP5 ADD DUP2 DUP2 GT PUSH2 0xBA8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20616C6C6F77616E6365206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x8E3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8B8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC9D PUSH2 0xC97 PUSH2 0x1BAD JUMP JUMPDEST DUP4 PUSH2 0x1EE9 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0xCFC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP1 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0xF0E JUMPI PUSH1 0x0 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0xD2E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0xDB6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0xEB9 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0xE1E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xE5D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0xEB7 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0xEB2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0xD19 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xF1E JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0xF98 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0xF7A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0xFA2 PUSH2 0x1BAD JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xFC8 JUMPI PUSH2 0xFC8 DUP12 DUP3 DUP6 PUSH2 0x1FC8 JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x901 DUP4 DUP4 PUSH2 0x20D7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x1069 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1073 PUSH2 0x1BAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP DUP1 DUP1 JUMPDEST DUP6 DUP2 EQ PUSH2 0x1287 JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x10A7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1121 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x112F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x1232 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x1197 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x11D6 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x1230 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x122B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x1092 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1297 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x1311 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x12F3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x8E3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8B8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x13DC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x901 PUSH2 0x13E7 PUSH2 0x1BAD JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1FC8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x901 PUSH2 0x13FB PUSH2 0x1BAD JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2116 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x140D PUSH2 0x1BAD JUMP JUMPDEST SWAP1 POP PUSH2 0x141B DUP2 DUP9 DUP9 DUP9 PUSH2 0x1E2A JUMP JUMPDEST PUSH2 0x142D DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x227D JUMP JUMPDEST ISZERO PUSH2 0x1596 JUMPI PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x150E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1522 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1596 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x1622 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373206F776E657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x1677 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2065787069726564207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP2 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP6 ADD MSTORE DUP1 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP5 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0xC0 DUP1 DUP5 ADD DUP10 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 SWAP1 SWAP4 ADD SWAP1 SWAP4 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 SWAP1 PUSH2 0x1709 PUSH2 0x9CD JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x182F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E76616C6964207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x183A DUP11 DUP11 DUP11 PUSH2 0x1BB1 JUMP JUMPDEST POP POP POP POP POP POP POP 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 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x187C PUSH2 0x1BAD JUMP JUMPDEST SWAP1 POP PUSH2 0x1889 DUP2 DUP8 DUP8 PUSH2 0x2116 JUMP JUMPDEST PUSH2 0x189B DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x227D JUMP JUMPDEST ISZERO PUSH2 0x1A04 JUMPI PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP5 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x197C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1990 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1A04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x1A73 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x36372B0700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1AA7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xA219A02500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1ADB JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x3C130D9000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1B0F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D07518600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1B43 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xC05327E600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1B77 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x53F41A9700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x852 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0x9D8FF7DA00000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1C0C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 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 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x1CC5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1CCF PUSH2 0x1BAD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 EQ PUSH2 0x1E12 JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1CEA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1D02 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x1DA3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x1D84 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP SWAP3 DUP4 ADD SWAP3 JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1E08 JUMPI PUSH2 0x1E08 DUP3 DUP7 DUP4 PUSH2 0x1FC8 JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1CD5 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x1E23 JUMPI PUSH1 0x6 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1E35 DUP4 DUP4 DUP4 PUSH2 0x2116 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1E59 JUMPI PUSH2 0x1E59 DUP4 DUP6 DUP4 PUSH2 0x1FC8 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1F83 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x1F5F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP PUSH1 0x6 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x1FFF JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2086 JUMPI DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x205B JUMPI PUSH1 0x40 DUP1 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 SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 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 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0x20E1 DUP3 DUP3 PUSH2 0x1EE9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20EB PUSH2 0x1BAD JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2111 JUMPI PUSH2 0x2111 DUP4 DUP3 DUP5 PUSH2 0x1FC8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2171 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x222D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x21E7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x222A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP7 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE JUMPDEST POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0x94 SWAP3 0xE3 SELFBALANCE 0x5D 0xCB PC DUP6 ADDMOD 0xB2 SELFDESTRUCT DUP12 GAS PUSH32 0x26EBA7B84066E13D51616E71DCF1A67DB264736F6C6343000706003300000000 ",
              "sourceMap": "327:1275:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;676:202;;;;;;;;;;;;;;;;-1:-1:-1;676:202:39;-1:-1:-1;;;;;;676:202:39;;:::i;:::-;;;;;;;;;;;;;;;;;;4506:92:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3730:166;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3730:166:38;;;;;;;;:::i;3263:100::-;;;:::i;:::-;;;;;;;;;;;;;;;;1414:186:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1414:186:39;;-1:-1:-1;1414:186:39;-1:-1:-1;1414:186:39;:::i;4120:216:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4120:216:38;;;;;;;;;;;;;;;;;:::i;4776:92::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11199:354;;;:::i;5309:625::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5309:625:38;;;;;;;;:::i;5038:100::-;;;:::i;1048:136:39:-;;;;;;;;;;;;;;;;-1:-1:-1;1048:136:39;;:::i;8089:1756:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8089:1756:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8089:1756:38;;-1:-1:-1;8089:1756:38;-1:-1:-1;8089:1756:38;:::i;3396:119::-;;;;;;;;;;;;;;;;-1:-1:-1;3396:119:38;-1:-1:-1;;;;;3396:119:38;;:::i;1225:148:39:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1225:148:39;;;;;;;;:::i;1587:50:38:-;;;;;;;;;;;;;;;;-1:-1:-1;1587:50:38;-1:-1:-1;;;;;1587:50:38;;:::i;6429:1613::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6429:1613:38;;-1:-1:-1;6429:1613:38;-1:-1:-1;6429:1613:38;:::i;4639:96::-;;;:::i;5976:277::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5976:277:38;;;;;;;;:::i;3929:158::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3929:158:38;;;;;;;;:::i;10505:473::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10505:473:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10505:473:38;;-1:-1:-1;10505:473:38;-1:-1:-1;10505:473:38;:::i;1402:42::-;;;:::i;11592:711::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11592:711:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3548:149;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3548:149:38;;;;;;;;;;:::i;10020:439::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10020:439:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10020:439:38;;-1:-1:-1;10020:439:38;-1:-1:-1;10020:439:38;:::i;676:202:39:-;761:4;-1:-1:-1;;;;;;784:47:39;;799:32;784:47;;:87;;;835:36;859:11;835:23;:36::i;:::-;777:94;676:202;-1:-1:-1;;676:202:39:o;4506:92:38:-;4586:5;4579:12;;;;;;;;-1:-1:-1;;4579:12:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4554:13;;4579:12;;4586:5;;4579:12;;4586:5;4579:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4506:92;:::o;3730:166::-;3814:4;3830:38;3839:12;:10;:12::i;:::-;3853:7;3862:5;3830:8;:38::i;:::-;-1:-1:-1;3885:4:38;3730:166;;;;:::o;3263:100::-;3344:12;;3263:100;:::o;1414:186:39:-;1526:4;1542:30;1557:6;;1542:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1542:30:39;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1565:6:39;;-1:-1:-1;1565:6:39;;;;1542:30;;;1565:6;;1542:30;1565:6;1542:30;;;;;;;;;-1:-1:-1;1542:14:39;;-1:-1:-1;;;1542:30:39:i;:::-;-1:-1:-1;1589:4:39;1414:186;;;;;;:::o;4120:216:38:-;4248:4;4264:44;4278:12;:10;:12::i;:::-;4292:4;4298:2;4302:5;4264:13;:44::i;:::-;-1:-1:-1;4325:4:38;4120:216;;;;;:::o;4776:92::-;4852:9;4776:92;:::o;11199:354::-;11257:7;11335:9;11458:17;11447:28;;:99;;11539:5;11498:48;;;;;;;;;;;;;-1:-1:-1;;11498:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;11524:7;;11498:48;;11539:5;;11498:48;;11539:5;11498:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:25;:48::i;:::-;11447:99;;;11478:17;11447:99;11440:106;;;11199:354;:::o;5309:625::-;5408:4;-1:-1:-1;;;;;5432:21:38;;5424:61;;;;;-1:-1:-1;;;5424:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;5495:13;5511:12;:10;:12::i;:::-;-1:-1:-1;;;;;5554:18:38;;;5533;5554;;;:11;:18;;;;;;;;:27;;;;;;;;;;5495:28;;-1:-1:-1;5595:15:38;;5591:264;;5649:23;;;5694:25;;;5686:63;;;;;-1:-1:-1;;;5686:63:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5763:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:42;;;5793:12;-1:-1:-1;5591:264:38;5885:7;-1:-1:-1;;;;;5869:36:38;5878:5;-1:-1:-1;;;;;5869:36:38;;5894:10;5869:36;;;;;;;;;;;;;;;;;;-1:-1:-1;5923:4:38;;5309:625;-1:-1:-1;;;;5309:625:38:o;5038:100::-;5122:9;5115:16;;;;;;;;-1:-1:-1;;5115:16:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5090:13;;5115:16;;5122:9;;5115:16;;5122:9;5115:16;;;;;;;;;;;;;;;;;;;;;;;;1048:136:39;1113:4;1129:27;1135:12;:10;:12::i;:::-;1149:6;1129:5;:27::i;:::-;-1:-1:-1;1173:4:39;1048:136;;;:::o;8089:1756:38:-;8253:4;8286:10;8321:23;;;8313:62;;;;;-1:-1:-1;;;8313:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8404:15:38;;8386;8404;;;:9;:15;;;;;;;8386;;8498:791;8519:6;8514:1;:11;8498:791;;8546:10;8559;;8570:1;8559:13;;;;;;;;;;;;;-1:-1:-1;;;;;8559:13:38;8546:26;;8608:1;-1:-1:-1;;;;;8594:16:38;:2;-1:-1:-1;;;;;8594:16:38;;;8586:51;;;;;-1:-1:-1;;;8586:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8652:13;8668:6;;8675:1;8668:9;;;;;;;;;;;;;8652:25;;8696:5;8705:1;8696:10;8692:542;;8750:18;;;8794:26;;;8786:61;;;;;-1:-1:-1;;;8786:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8878:13;8865:26;;8921:2;-1:-1:-1;;;;;8913:10:38;:4;-1:-1:-1;;;;;8913:10:38;;8909:311;;-1:-1:-1;;;;;8947:13:38;;;;;;:9;:13;;;;;:22;;;;;;8909:311;;;9033:7;9024:5;:16;;9016:56;;;;;-1:-1:-1;;;9016:56:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;9094:31;;;;8909:311;8692:542;;9268:2;-1:-1:-1;;;;;9253:25:38;9262:4;-1:-1:-1;;;;;9253:25:38;;9272:5;9253:25;;;;;;;;;;;;;;;;;;-1:-1:-1;;8527:3:38;;8498:791;;;-1:-1:-1;9303:15:38;;;;;:55;;;9336:22;9322:10;:36;;9303:55;9299:380;;;9395:20;;;9437;;;9429:60;;;;;-1:-1:-1;;;9429:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9559:15:38;;;;;;:9;:15;;;;;9577:35;;;9559:53;;9299:380;9689:14;9706:12;:10;:12::i;:::-;9689:29;;9740:6;-1:-1:-1;;;;;9732:14:38;:4;-1:-1:-1;;;;;9732:14:38;;9728:89;;9762:44;9781:4;9787:6;9795:10;9762:18;:44::i;:::-;-1:-1:-1;9834:4:38;;8089:1756;-1:-1:-1;;;;;;;;;;8089:1756:38:o;3396:119::-;-1:-1:-1;;;;;3490:18:38;3464:7;3490:18;;;:9;:18;;;;;;;3396:119::o;1225:148:39:-;1307:4;1323:22;1333:4;1339:5;1323:9;:22::i;1587:50:38:-;;;;;;;;;;;;;;:::o;6429:1613::-;6545:4;6578:10;6613:23;;;6605:62;;;;;-1:-1:-1;;;6605:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6677:14;6694:12;:10;:12::i;:::-;-1:-1:-1;;;;;6734:17:38;;6716:15;6734:17;;;:9;:17;;;;;;6677:29;;-1:-1:-1;6716:15:38;;6830:793;6851:6;6846:1;:11;6830:793;;6878:10;6891;;6902:1;6891:13;;;;;;;;;;;;;-1:-1:-1;;;;;6891:13:38;6878:26;;6940:1;-1:-1:-1;;;;;6926:16:38;:2;-1:-1:-1;;;;;6926:16:38;;;6918:51;;;;;-1:-1:-1;;;6918:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6984:13;7000:6;;7007:1;7000:9;;;;;;;;;;;;;6984:25;;7027:5;7036:1;7027:10;7023:544;;7081:18;;;7125:26;;;7117:61;;;;;-1:-1:-1;;;7117:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;7209:13;7196:26;;7254:2;-1:-1:-1;;;;;7244:12:38;:6;-1:-1:-1;;;;;7244:12:38;;7240:313;;-1:-1:-1;;;;;7280:13:38;;;;;;:9;:13;;;;;:22;;;;;;7240:313;;;7366:7;7357:5;:16;;7349:56;;;;;-1:-1:-1;;;7349:56:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;7427:31;;;;7240:313;7023:544;;7602:2;-1:-1:-1;;;;;7585:27:38;7594:6;-1:-1:-1;;;;;7585:27:38;;7606:5;7585:27;;;;;;;;;;;;;;;;;;-1:-1:-1;;6859:3:38;;6830:793;;;-1:-1:-1;7637:15:38;;;;;:55;;;7670:22;7656:10;:36;;7637:55;7633:382;;;7729:20;;;7771;;;7763:60;;;;;-1:-1:-1;;;7763:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7893:17:38;;;;;;:9;:17;;;;;7913:35;;;7893:55;;7633:382;-1:-1:-1;8031:4:38;;6429:1613;-1:-1:-1;;;;;;;;;6429:1613:38:o;4639:96::-;4721:7;4714:14;;;;;;;-1:-1:-1;;4714:14:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4689:13;;4714:14;;4721:7;;4714:14;;4721:7;4714:14;;;;;;;;;;;;;;;;;;;;;;;;5976:277;6080:4;-1:-1:-1;;;;;6104:21:38;;6096:61;;;;;-1:-1:-1;;;6096:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6167:58;6186:12;:10;:12::i;:::-;6200:7;6209:15;6167:18;:58::i;3929:158::-;4009:4;4025:34;4035:12;:10;:12::i;:::-;4049:2;4053:5;4025:9;:34::i;10505:473::-;10667:4;10683:14;10700:12;:10;:12::i;:::-;10683:29;;10722:39;10736:6;10744:4;10750:2;10754:6;10722:13;:39::i;:::-;10775:15;:2;-1:-1:-1;;;;;10775:13:38;;:15::i;:::-;10771:180;;;10880:32;10814:98;;;10829:2;-1:-1:-1;;;;;10814:34:38;;10849:6;10857:4;10863:6;10871:4;;10814:62;;;;;;;;;;;;;-1:-1:-1;;;;;10814:62:38;;;;;;-1:-1:-1;;;;;10814:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10814:62:38;-1:-1:-1;;;;;;10814:98:38;;10806:134;;;;;-1:-1:-1;;;10806:134:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10967:4:38;;10505:473;-1:-1:-1;;;;;;10505:473:38:o;1402:42::-;;;:::o;11592:711::-;-1:-1:-1;;;;;11810:19:38;;11802:57;;;;;-1:-1:-1;;;11802:57:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;11896:8;11877:15;:27;;11869:61;;;;;-1:-1:-1;;;11869:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12022:13:38;;;11940:18;12022:13;;;;;;;;;;;:15;;;;;;;;11971:77;;1329:66;11971:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11961:88;;;;;;;;12113:18;:16;:18::i;:::-;12133:10;12084:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12074:71;;;;;;12059:86;;12155:14;12172:24;12182:4;12188:1;12191;12194;12172:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12155:41;;12224:5;-1:-1:-1;;;;;12214:15:38;:6;-1:-1:-1;;;;;12214:15:38;;12206:49;;;;;-1:-1:-1;;;12206:49:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;12265:31;12274:5;12281:7;12290:5;12265:8;:31::i;:::-;11592:711;;;;;;;;;;:::o;3548:149::-;-1:-1:-1;;;;;3663:18:38;;;3637:7;3663:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3548:149::o;10020:439::-;10156:4;10172:14;10189:12;:10;:12::i;:::-;10172:29;;10211;10221:6;10229:2;10233:6;10211:9;:29::i;:::-;10254:15;:2;-1:-1:-1;;;;;10254:13:38;;:15::i;:::-;10250:182;;;10361:32;10293:100;;;10308:2;-1:-1:-1;;;;;10293:34:38;;10328:6;10336;10344;10352:4;;10293:64;;;;;;;;;;;;;-1:-1:-1;;;;;10293:64:38;;;;;;-1:-1:-1;;;;;10293:64:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10293:64:38;-1:-1:-1;;;;;;10293:100:38;;10285:136;;;;;-1:-1:-1;;;10285:136:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10448:4:38;;10020:439;-1:-1:-1;;;;;10020:439:38:o;2491:610::-;2576:4;-1:-1:-1;;;;;;2611:40:38;;2626:25;2611:40;;:95;;-1:-1:-1;;;;;;;2667:39:38;;2682:24;2667:39;2611:95;:158;;;-1:-1:-1;;;;;;;2722:47:38;;2737:32;2722:47;2611:158;:221;;;-1:-1:-1;;;;;;;2785:47:38;;2800:32;2785:47;2611:221;:285;;;-1:-1:-1;;;;;;;2848:48:38;;2863:33;2848:48;2611:285;:354;;;-1:-1:-1;;;;;;;2912:53:38;;2927:38;2912:53;2611:354;:422;;;-1:-1:-1;;;;;;;2981:52:38;;2996:37;2981:52;2611:422;:483;;;-1:-1:-1;;;;;;;;3049:45:38;3064:30;3049:45;;2491:610::o;355:104:5:-;442:10;355:104;:::o;12438:273:38:-;-1:-1:-1;;;;;12560:21:38;;12552:61;;;;;-1:-1:-1;;;12552:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12623:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:35;;;12673:31;;;;;;;;;;;;;;;;;12438:273;;;:::o;16457:1095::-;16575:13;;16616;;16606:23;;16598:62;;;;;-1:-1:-1;;;16598:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;16671:14;16688:12;:10;:12::i;:::-;16671:29;;16711:18;16744:9;16739:664;16760:6;16755:1;:11;16739:664;;16787:12;16802:6;16809:1;16802:9;;;;;;;;;;;;;;16787:24;;16825:13;16841:6;16848:1;16841:9;;;;;;;;;;;;;;16825:25;;16868:5;16877:1;16868:10;16864:371;;-1:-1:-1;;;;;16916:15:38;;16898;16916;;;:9;:15;;;;;;16970;;;17011:20;;;17003:60;;;;;-1:-1:-1;;;17003:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17081:15:38;;;;;;:9;:15;;;;;:28;-1:-1:-1;17127:19:38;;;;16864:371;17253:33;;;;;;;;17276:1;;-1:-1:-1;;;;;17253:33:38;;;;;;;;;;;;17313:6;-1:-1:-1;;;;;17305:14:38;:4;-1:-1:-1;;;;;17305:14:38;;17301:92;;17339:39;17358:4;17364:6;17372:5;17339:18;:39::i;:::-;-1:-1:-1;;16768:3:38;;16739:664;;;-1:-1:-1;17417:15:38;;17413:133;;17448:12;:26;;;;;;;17413:133;16457:1095;;;;;:::o;13965:263::-;14102:26;14112:4;14118:2;14122:5;14102:9;:26::i;:::-;14150:6;-1:-1:-1;;;;;14142:14:38;:4;-1:-1:-1;;;;;14142:14:38;;14138:84;;14172:39;14191:4;14197:6;14205:5;14172:18;:39::i;:::-;13965:263;;;;:::o;17687:463::-;17995:16;;;;;;;17846:283;;;17878:95;17846:283;;;;;;;;;;;18033:14;17846:283;;;;;;;;;;;18106:4;17846:283;;;;;;;;;;;;;;;;;;;;;;;;;17819:324;;;;;;17687:463::o;15771:442::-;15846:10;;15842:317;;-1:-1:-1;;;;;15890:15:38;;15872;15890;;;:9;:15;;;;;;15940;;;15977:20;;;15969:60;;;;;-1:-1:-1;;;15969:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16043:15:38;;;;;;:9;:15;;;;;:28;-1:-1:-1;16085:12:38;:21;;;;;;;15842:317;16173:33;;;;;;;;16196:1;;-1:-1:-1;;;;;16173:33:38;;;;;;;;;;;;15771:442;;:::o;12717:682::-;-1:-1:-1;;;;;12872:18:38;;;12851;12872;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;12914:31:38;;;;;:55;;-1:-1:-1;12949:20:38;;;12914:55;12910:432;;;13127:28;;;13177:25;;;13169:67;;;;;-1:-1:-1;;;13169:67:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13250:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:42;;;13280:12;-1:-1:-1;12910:432:38;13372:7;-1:-1:-1;;;;;13356:36:38;13365:5;-1:-1:-1;;;;;13356:36:38;;13381:10;13356:36;;;;;;;;;;;;;;;;;;12717:682;;;;:::o;16219:232::-;16294:18;16300:4;16306:5;16294;:18::i;:::-;16322:14;16339:12;:10;:12::i;:::-;16322:29;;16373:6;-1:-1:-1;;;;;16365:14:38;:4;-1:-1:-1;;;;;16365:14:38;;16361:84;;16395:39;16414:4;16420:6;16428:5;16395:18;:39::i;:::-;16219:232;;;:::o;13405:554::-;-1:-1:-1;;;;;13530:16:38;;13522:51;;;;;-1:-1:-1;;;13522:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;13588:10;;13584:328;;-1:-1:-1;;;;;13632:15:38;;13614;13632;;;:9;:15;;;;;;13682;;;13719:20;;;13711:60;;;;;-1:-1:-1;;;13711:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;13797:2;-1:-1:-1;;;;;13789:10:38;:4;-1:-1:-1;;;;;13789:10:38;;13785:117;;-1:-1:-1;;;;;13819:15:38;;;;;;;:9;:15;;;;;;:28;;;13865:13;;;;;;:22;;;;;;13785:117;13584:328;;;13942:2;-1:-1:-1;;;;;13927:25:38;13936:4;-1:-1:-1;;;;;13927:25:38;;13946:5;13927:25;;;;;;;;;;;;;;;;;;13405:554;;;:::o;913:377:9:-;1229:20;1275:8;;;913:377::o"
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "batchBurnFrom(address[],uint256[])": "1b9a7529",
              "batchTransfer(address[],uint256[])": "88d695b2",
              "batchTransferFrom(address,address[],uint256[])": "4885b254",
              "burn(uint256)": "42966c68",
              "burnFrom(address,uint256)": "79cc6790",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "deploymentChainId()": "cd0d0096",
              "increaseAllowance(address,uint256)": "39509351",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "safeTransfer(address,uint256,bytes)": "eb795549",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI()": "3c130d90",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/token/ERC20/ERC20Receiver.sol": {
        "ERC20Receiver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC20Received",
              "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "onERC20Received(address,address,uint256,bytes)": "4fc35859",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "contracts/token/ERC20/interfaces/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": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "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": "value",
                  "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": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/token/ERC20/interfaces/IERC20Allowance.sol": {
        "IERC20Allowance": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "increaseAllowance(address,uint256)": "39509351"
            }
          }
        }
      },
      "contracts/token/ERC20/interfaces/IERC20BatchTransfers.sol": {
        "IERC20BatchTransfers": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "batchTransfer(address[],uint256[])": "88d695b2",
              "batchTransferFrom(address,address[],uint256[])": "4885b254"
            }
          }
        }
      },
      "contracts/token/ERC20/interfaces/IERC20Burnable.sol": {
        "IERC20Burnable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "batchBurnFrom(address[],uint256[])": "1b9a7529",
              "burn(uint256)": "42966c68",
              "burnFrom(address,uint256)": "79cc6790"
            }
          }
        }
      },
      "contracts/token/ERC20/interfaces/IERC20Detailed.sol": {
        "IERC20Detailed": {
          "abi": [
            {
              "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "decimals()": "313ce567",
              "name()": "06fdde03",
              "symbol()": "95d89b41"
            }
          }
        }
      },
      "contracts/token/ERC20/interfaces/IERC20Metadata.sol": {
        "IERC20Metadata": {
          "abi": [
            {
              "inputs": [],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "tokenURI()": "3c130d90"
            }
          }
        }
      },
      "contracts/token/ERC20/interfaces/IERC20Mintable.sol": {
        "IERC20Mintable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "batchMint(address[],uint256[])": "68573107",
              "mint(address,uint256)": "40c10f19"
            }
          }
        }
      },
      "contracts/token/ERC20/interfaces/IERC20Permit.sol": {
        "IERC20Permit": {
          "abi": [
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "nonces(address)": "7ecebe00",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf"
            }
          }
        }
      },
      "contracts/token/ERC20/interfaces/IERC20Receiver.sol": {
        "IERC20Receiver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC20Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "onERC20Received(address,address,uint256,bytes)": "4fc35859"
            }
          }
        }
      },
      "contracts/token/ERC20/interfaces/IERC20SafeTransfers.sol": {
        "IERC20SafeTransfers": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransfer",
              "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"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "safeTransfer(address,uint256,bytes)": "eb795549",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde"
            }
          }
        }
      },
      "contracts/token/ERC20/mocks/ERC20BurnableMock.sol": {
        "ERC20BurnableMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "contract IForwarderRegistry",
                  "name": "forwarderRegistry",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "universalForwarder",
                  "type": "address"
                }
              ],
              "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": "account",
                  "type": "address"
                }
              ],
              "name": "MinterAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterRemoved",
              "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": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "addMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "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": "value",
                  "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": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "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": [],
              "name": "deploymentChainId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "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": "",
                  "type": "address"
                }
              ],
              "name": "isMinter",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "forwarder",
                  "type": "address"
                }
              ],
              "name": "isTrustedForwarder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "msgData",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "ret",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC20s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "contracts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC721s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransfer",
              "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"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "tokenURI_",
                  "type": "string"
                }
              ],
              "name": "setTokenURI",
              "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": [],
              "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": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "value",
                  "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "6101206040523480156200001257600080fd5b5060405162003e6038038062003e60833981810160405260808110156200003857600080fd5b81019080805160405193929190846401000000008211156200005957600080fd5b9083019060208201858111156200006f57600080fd5b82518660208202830111640100000000821117156200008d57600080fd5b82525081516020918201928201910280838360005b83811015620000bc578181015183820152602001620000a2565b5050505090500160405260200180516040519392919084640100000000821115620000e657600080fd5b908301906020820185811115620000fc57600080fd5b82518660208202830111640100000000821117156200011a57600080fd5b82525081516020918201928201910280838360005b83811015620001495781810151838201526020016200012f565b50505050919091016040818152602084810151948201518284018352600a8452694552433230204d6f636b60b01b8285015282518084018452600381526204532360ec1b92810192909252600080546001600160a01b03191633908117825593519698509096509194929350916012918491849184918a918a918a9182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606091821b811660a05291901b1660805282516200021c906002906020860190620005b0565b50815162000232906003906020850190620005b0565b507fff0000000000000000000000000000000000000000000000000000000000000060f882901b16610100524660c08190526200027081856200029f565b60e05250620002889550869450506200032992505050565b5062000295848462000375565b505050506200065c565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b815181518114620003cd576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000805b82811462000542576000858281518110620003e857fe5b6020026020010151905060006001600160a01b0316816001600160a01b031614156200045b576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b60008583815181106200046a57fe5b6020026020010151905080600014620004f657838101848111620004d5576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600090815260056020526040902080548301905593505b6040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050600101620003d1565b508015620005aa57600754818101818111620005a5576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b600755505b50505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620005e8576000855562000633565b82601f106200060357805160ff191683800117855562000633565b8280016001018555821562000633579182015b828111156200063357825182559160200191906001019062000616565b506200064192915062000645565b5090565b5b8082111562000641576000815560010162000646565b60805160601c60a05160601c60c05160e0516101005160f81c613798620006c860003980610f2552508061100d525080610f4c5280611eae52508061157352806131f952806135475250806115ae52806131be5280613251528061351d52806135a852506137986000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c80637ecebe0011610145578063b88d4fde116100bd578063d505accf1161008c578063e0df5b6f11610071578063e0df5b6f14610c74578063eb79554914610ce4578063f2fde38b14610d695761025c565b8063d505accf14610bf5578063dd62ed3e14610c465761025c565b8063b88d4fde14610a41578063c3666c3614610ad1578063c4c2bfdc14610be5578063cd0d009614610bed5761025c565b8063983b2d5611610114578063a457c2d7116100f9578063a457c2d7146109c3578063a9059cbb146109ef578063aa271e1a14610a1b5761025c565b8063983b2d561461099557806398650275146109bb5761025c565b80637ecebe001461088157806388d695b2146108a75780638da5cb5b1461096957806395d89b411461098d5761025c565b80633c130d90116101d8578063572b6c05116101a757806370a082311161018c57806370a082311461071b57806373c8a9581461074157806379cc6790146108555761025c565b8063572b6c05146105ce57806368573107146105f45761025c565b80633c130d90146104a957806340c10f19146104b157806342966c68146104df5780634885b254146104fc5761025c565b80631b9a75291161022f578063313ce56711610214578063313ce567146104575780633644e51514610475578063395093511461047d5761025c565b80631b9a75291461035f57806323b872dd146104215761025c565b806301ffc9a71461026157806306fdde031461029c578063095ea7b31461031957806318160ddd14610345575b600080fd5b6102886004803603602081101561027757600080fd5b50356001600160e01b031916610d8f565b604080519115158252519081900360200190f35b6102a4610dd3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102de5781810151838201526020016102c6565b50505050905090810190601f16801561030b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102886004803603604081101561032f57600080fd5b506001600160a01b038135169060200135610e67565b61034d610e84565b60408051918252519081900360200190f35b6102886004803603604081101561037557600080fd5b81019060208101813564010000000081111561039057600080fd5b8201836020820111156103a257600080fd5b803590602001918460208302840111640100000000831117156103c457600080fd5b9193909290916020810190356401000000008111156103e257600080fd5b8201836020820111156103f457600080fd5b8035906020019184602083028401116401000000008311171561041657600080fd5b509092509050610e8a565b6102886004803603606081101561043757600080fd5b506001600160a01b03813581169160208101359091169060400135610f04565b61045f610f23565b6040805160ff9092168252519081900360200190f35b61034d610f47565b6102886004803603604081101561049357600080fd5b506001600160a01b038135169060200135611033565b6102a46111a1565b6104dd600480360360408110156104c757600080fd5b506001600160a01b038135169060200135611202565b005b610288600480360360208110156104f557600080fd5b5035611220565b6102886004803603606081101561051257600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561053d57600080fd5b82018360208201111561054f57600080fd5b8035906020019184602083028401116401000000008311171561057157600080fd5b91939092909160208101903564010000000081111561058f57600080fd5b8201836020820111156105a157600080fd5b803590602001918460208302840111640100000000831117156105c357600080fd5b50909250905061123b565b610288600480360360208110156105e457600080fd5b50356001600160a01b031661156f565b6104dd6004803603604081101561060a57600080fd5b81019060208101813564010000000081111561062557600080fd5b82018360208201111561063757600080fd5b8035906020019184602083028401116401000000008311171561065957600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156106a957600080fd5b8201836020820111156106bb57600080fd5b803590602001918460208302840111640100000000831117156106dd57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506115e8945050505050565b61034d6004803603602081101561073157600080fd5b50356001600160a01b03166115fd565b6104dd6004803603606081101561075757600080fd5b81019060208101813564010000000081111561077257600080fd5b82018360208201111561078457600080fd5b803590602001918460208302840111640100000000831117156107a657600080fd5b9193909290916020810190356401000000008111156107c457600080fd5b8201836020820111156107d657600080fd5b803590602001918460208302840111640100000000831117156107f857600080fd5b91939092909160208101903564010000000081111561081657600080fd5b82018360208201111561082857600080fd5b8035906020019184602083028401116401000000008311171561084a57600080fd5b509092509050611618565b6102886004803603604081101561086b57600080fd5b506001600160a01b03813516906020013561170a565b61034d6004803603602081101561089757600080fd5b50356001600160a01b0316611716565b610288600480360360408110156108bd57600080fd5b8101906020810181356401000000008111156108d857600080fd5b8201836020820111156108ea57600080fd5b8035906020019184602083028401116401000000008311171561090c57600080fd5b91939092909160208101903564010000000081111561092a57600080fd5b82018360208201111561093c57600080fd5b8035906020019184602083028401116401000000008311171561095e57600080fd5b509092509050611728565b610971611a37565b604080516001600160a01b039092168252519081900360200190f35b6102a4611a46565b6104dd600480360360208110156109ab57600080fd5b50356001600160a01b0316611aa7565b6104dd611abe565b610288600480360360408110156109d957600080fd5b506001600160a01b038135169060200135611b1c565b61028860048036036040811015610a0557600080fd5b506001600160a01b038135169060200135611b8b565b61028860048036036020811015610a3157600080fd5b50356001600160a01b0316611b9f565b61028860048036036080811015610a5757600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135640100000000811115610a9257600080fd5b820183602082011115610aa457600080fd5b80359060200191846001830284011164010000000083111715610ac657600080fd5b509092509050611bb4565b6104dd60048036036060811015610ae757600080fd5b810190602081018135640100000000811115610b0257600080fd5b820183602082011115610b1457600080fd5b80359060200191846020830284011164010000000083111715610b3657600080fd5b919390929091602081019035640100000000811115610b5457600080fd5b820183602082011115610b6657600080fd5b80359060200191846020830284011164010000000083111715610b8857600080fd5b919390929091602081019035640100000000811115610ba657600080fd5b820183602082011115610bb857600080fd5b80359060200191846020830284011164010000000083111715610bda57600080fd5b509092509050611d55565b6102a4611e9d565b61034d611eac565b6104dd600480360360e0811015610c0b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611ed0565b61034d60048036036040811015610c5c57600080fd5b506001600160a01b038135811691602001351661214f565b6104dd60048036036020811015610c8a57600080fd5b810190602081018135640100000000811115610ca557600080fd5b820183602082011115610cb757600080fd5b80359060200191846001830284011164010000000083111715610cd957600080fd5b50909250905061217a565b61028860048036036060811015610cfa57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135640100000000811115610d2a57600080fd5b820183602082011115610d3c57600080fd5b80359060200191846001830284011164010000000083111715610d5e57600080fd5b509092509050612196565b6104dd60048036036020811015610d7f57600080fd5b50356001600160a01b0316612335565b60006001600160e01b031982167f20c07ed1000000000000000000000000000000000000000000000000000000001480610dcd5750610dcd826123a6565b92915050565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610e5c5780601f10610e3157610100808354040283529160200191610e5c565b820191906000526020600020905b815481529060010190602001808311610e3f57829003601f168201915b505050505090505b90565b6000610e7b610e74612543565b848461254d565b50600192915050565b60075490565b6000610ef98585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060408051602080890282810182019093528882529093508892508791829185019084908082843760009201919091525061260a92505050565b506001949350505050565b6000610f19610f11612543565b8585856127c6565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000467f0000000000000000000000000000000000000000000000000000000000000000811461100b576002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815261100693859391929091830182828015610ffc5780601f10610fd157610100808354040283529160200191610ffc565b820191906000526020600020905b815481529060010190602001808311610fdf57829003601f168201915b50505050506127fb565b61102d565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b60006001600160a01b038316611090576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b600061109a612543565b6001600160a01b03808216600090815260066020908152604080832093891683529290522054909150831561114b57808401818111611120576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600660209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e5c5780601f10610e3157610100808354040283529160200191610e5c565b61121261120d612543565b612885565b61121c82826128f2565b5050565b600061123361122d612543565b83612a15565b506001919050565b600083828114611292576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600560205260408120549080805b8481146114a45760008a8a838181106112c457fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b0316141561133e576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600089898481811061134c57fe5b9050602002013590508060001461144f578481018581116113b4576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b0316146113f3576001600160a01b038316600090815260056020526040902080548301905561144d565b86821115611448576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350506001016112af565b5081158015906114b45750808214155b1561152e57818303838110611510576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260056020526040902090820190555b6000611538612543565b9050806001600160a01b03168b6001600160a01b03161461155e5761155e8b8285612af4565b5060019a9950505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610dcd57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6115f361120d612543565b61121c8282612c03565b6001600160a01b031660009081526005602052604090205490565b611628611623612543565b612e33565b84838114801561163757508082145b611688576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611700576116f88888838181106116a157fe5b905060200201356001600160a01b03168585848181106116bd57fe5b905060200201358888858181106116d057fe5b905060200201356001600160a01b03166001600160a01b0316612ef79092919063ffffffff16565b60010161168b565b5050505050505050565b6000610e7b8383612f77565b60016020526000908152604090205481565b60008382811461177f576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000611789612543565b6001600160a01b03811660009081526005602052604081205491925080805b85811461199d5760008b8b838181106117bd57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415611837576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a8481811061184557fe5b90506020020135905080600014611948578481018581116118ad576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b0316146118ec576001600160a01b0383166000908152600560205260409020805483019055611946565b86821115611941576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350506001016117a8565b5081158015906119ad5750808214155b15611a2757818303838110611a09576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260056020526040902090820190555b5060019998505050505050505050565b6000546001600160a01b031690565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e5c5780601f10610e3157610100808354040283529160200191610e5c565b611ab2611623612543565b611abb81612fb1565b50565b6000611ac8612543565b9050611ad381612885565b6001600160a01b038116600081815260086020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b60006001600160a01b038316611b79576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b610e7b611b84612543565b8484612af4565b6000610e7b611b98612543565b8484612ffd565b60086020526000908152604090205460ff1681565b600080611bbf612543565b9050611bcd818888886127c6565b611bdf866001600160a01b0316613164565b15611d48577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015611cc057600080fd5b505af1158015611cd4573d6000803e3d6000fd5b505050506040513d6020811015611cea57600080fd5b50516001600160e01b03191614611d48576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b611d60611623612543565b848381148015611d6f57508082145b611dc0576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461170057858582818110611dd657fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a85818110611e0157fe5b905060200201356001600160a01b0316878786818110611e1d57fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015611e7a57600080fd5b505af1158015611e8e573d6000803e3d6000fd5b50505050806001019050611dc3565b6060611ea761316a565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b038716611f2b576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b83421115611f80576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526001602081815260408084208054938401905580517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280820195909552948b166060850152608084018a905260a084019190915260c08084018990528451808503909101815260e09093019093528151919092012090612012610f47565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156120c6573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b031614612138576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b6121438a8a8a61254d565b50505050505050505050565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b612185611623612543565b61219160048383613699565b505050565b6000806121a1612543565b90506121ae818787612ffd565b6121c0866001600160a01b0316613164565b15612329577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b1580156122a157600080fd5b505af11580156122b5573d6000803e3d6000fd5b505050506040513d60208110156122cb57600080fd5b50516001600160e01b03191614612329576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b612340611623612543565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061240957506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b8061243d57506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b8061247157506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b806124a557506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b806124d957506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b8061250d57506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b80610dcd5750506001600160e01b0319167f9d8ff7da000000000000000000000000000000000000000000000000000000001490565b6000611ea76131ae565b6001600160a01b0382166125a8576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b815181518114612661576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b600061266b612543565b90506000805b8381146127ae57600086828151811061268657fe5b60200260200101519050600086838151811061269e57fe5b602002602001015190508060001461273f576001600160a01b038216600090815260056020526040902054818103818110612720576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b03841660009081526005602052604090205550928301925b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3846001600160a01b0316826001600160a01b0316146127a4576127a4828683612af4565b5050600101612671565b5080156127bf576007805482900390555b5050505050565b6127d1838383612ffd565b836001600160a01b0316836001600160a01b0316146127f5576127f5838583612af4565b50505050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b03811660009081526008602052604090205460ff16611abb576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b03821661294d576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b60075481156129cf578082018181116129ad576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6007556001600160a01b03831660009081526005602052604090208054830190555b6040805183815290516001600160a01b038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b8015612aaf576001600160a01b038216600090815260056020526040902054818103818110612a8b576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038416600090815260056020526040902055506007805482900390555b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b038084166000908152600660209081526040808320938616835292905220546000198114801590612b2b57508115155b15612bb257818103818110612b87576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260066020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b815181518114612c5a576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000805b828114612dc8576000858281518110612c7357fe5b6020026020010151905060006001600160a01b0316816001600160a01b03161415612ce5576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b6000858381518110612cf357fe5b6020026020010151905080600014612d7d57838101848111612d5c576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600090815260056020526040902080548301905593505b6040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050600101612c5e565b5080156127f557600754818101818111612e29576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6007555050505050565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e6c57600080fd5b505afa158015612e80573d6000803e3d6000fd5b505050506040513d6020811015612e9657600080fd5b50516001600160a01b03828116911614611abb576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261219190849061330e565b612f818282612a15565b6000612f8b612543565b9050806001600160a01b0316836001600160a01b03161461219157612191838284612af4565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6001600160a01b038216613058576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b8015613114576001600160a01b0383166000908152600560205260409020548181038181106130ce576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b031614613111576001600160a01b038086166000908152600560205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b151590565b606061317461350f565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b600033816131ba613672565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061322d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b1561323b579150610e649050565b6001600160a01b03821632148015906132fa57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156132cd57600080fd5b505afa1580156132e1573d6000803e3d6000fd5b505050506040513d60208110156132f757600080fd5b50515b15613308579150610e649050565b50905090565b816133216001600160a01b038216613164565b613372576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106133cd57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613390565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461342f576040519150601f19603f3d011682016040523d82523d6000602084013e613434565b606091505b509150915081156134b3578051156134ae5780806020019051602081101561345b57600080fd5b50516134ae576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b6127bf565b8051613506576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681148061357b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156135925761358861367e565b925092505061366e565b6001600160a01b038116321480159061365857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d66135dd613672565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561362b57600080fd5b505afa15801561363f573d6000803e3d6000fd5b505050506040513d602081101561365557600080fd5b50515b156136655761358861367e565b60003692509250505b9091565b60131936013560601c90565b366000613691601319830182848161373a565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826136cf5760008555613715565b82601f106136e85782800160ff19823516178555613715565b82800160010185558215613715579182015b828111156137155782358255916020019190600101906136fa565b50613721929150613725565b5090565b5b808211156137215760008155600101613726565b60008085851115613749578182fd5b83861115613755578182fd5b505082019391909203915056fea2646970667358221220b964924cb162c88a271b9b1dcfd853f1682e107b2ac9020df787f34f3d9c776364736f6c63430007060033",
              "opcodes": "PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x3E60 CODESIZE SUB DUP1 PUSH3 0x3E60 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xBC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0xE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x11A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x149 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x12F JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 DUP5 DUP2 ADD MLOAD SWAP5 DUP3 ADD MLOAD DUP3 DUP5 ADD DUP4 MSTORE PUSH1 0xA DUP5 MSTORE PUSH10 0x4552433230204D6F636B PUSH1 0xB0 SHL DUP3 DUP6 ADD MSTORE DUP3 MLOAD DUP1 DUP5 ADD DUP5 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x45323 PUSH1 0xEC SHL SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE SWAP4 MLOAD SWAP7 SWAP9 POP SWAP1 SWAP7 POP SWAP2 SWAP5 SWAP3 SWAP4 POP SWAP2 PUSH1 0x12 SWAP2 DUP5 SWAP2 DUP5 SWAP2 DUP5 SWAP2 DUP11 SWAP2 DUP11 SWAP2 DUP11 SWAP2 DUP3 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0x80 MSTORE DUP3 MLOAD PUSH3 0x21C SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP7 ADD SWAP1 PUSH3 0x5B0 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x232 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x5B0 JUMP JUMPDEST POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF8 DUP3 SWAP1 SHL AND PUSH2 0x100 MSTORE CHAINID PUSH1 0xC0 DUP2 SWAP1 MSTORE PUSH3 0x270 DUP2 DUP6 PUSH3 0x29F JUMP JUMPDEST PUSH1 0xE0 MSTORE POP PUSH3 0x288 SWAP6 POP DUP7 SWAP5 POP POP PUSH3 0x329 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH3 0x295 DUP5 DUP5 PUSH3 0x375 JUMP JUMPDEST POP POP POP POP PUSH3 0x65C JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH3 0x3CD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 EQ PUSH3 0x542 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x3E8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x45B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x46A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH3 0x4F6 JUMPI DUP4 DUP2 ADD DUP5 DUP2 GT PUSH3 0x4D5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE SWAP4 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH3 0x3D1 JUMP JUMPDEST POP DUP1 ISZERO PUSH3 0x5AA JUMPI PUSH1 0x7 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH3 0x5A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE POP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x5E8 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x633 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x603 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x633 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x633 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x633 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x616 JUMP JUMPDEST POP PUSH3 0x641 SWAP3 SWAP2 POP PUSH3 0x645 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x641 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x646 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH1 0xF8 SHR PUSH2 0x3798 PUSH3 0x6C8 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xF25 MSTORE POP DUP1 PUSH2 0x100D MSTORE POP DUP1 PUSH2 0xF4C MSTORE DUP1 PUSH2 0x1EAE MSTORE POP DUP1 PUSH2 0x1573 MSTORE DUP1 PUSH2 0x31F9 MSTORE DUP1 PUSH2 0x3547 MSTORE POP DUP1 PUSH2 0x15AE MSTORE DUP1 PUSH2 0x31BE MSTORE DUP1 PUSH2 0x3251 MSTORE DUP1 PUSH2 0x351D MSTORE DUP1 PUSH2 0x35A8 MSTORE POP PUSH2 0x3798 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 0x25C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x145 JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE0DF5B6F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE0DF5B6F EQ PUSH2 0xC74 JUMPI DUP1 PUSH4 0xEB795549 EQ PUSH2 0xCE4 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xD69 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0xD505ACCF EQ PUSH2 0xBF5 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xC46 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0xA41 JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xAD1 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0xBE5 JUMPI DUP1 PUSH4 0xCD0D0096 EQ PUSH2 0xBED JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x983B2D56 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x9C3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x9EF JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xA1B JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x995 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0x9BB JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x881 JUMPI DUP1 PUSH4 0x88D695B2 EQ PUSH2 0x8A7 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x969 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x98D JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x3C130D90 GT PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x572B6C05 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x71B JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x741 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x855 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x5CE JUMPI DUP1 PUSH4 0x68573107 EQ PUSH2 0x5F4 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x3C130D90 EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x4B1 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x4DF JUMPI DUP1 PUSH4 0x4885B254 EQ PUSH2 0x4FC JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x1B9A7529 GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0x214 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x47D JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x1B9A7529 EQ PUSH2 0x35F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x421 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x29C JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x345 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xD8F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH2 0xDD3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2C6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x30B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xE67 JUMP JUMPDEST PUSH2 0x34D PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xE8A JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF04 JUMP JUMPDEST PUSH2 0x45F PUSH2 0xF23 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34D PUSH2 0xF47 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x493 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1033 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x11A1 JUMP JUMPDEST PUSH2 0x4DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1202 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1220 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x58F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x123B JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x156F JUMP JUMPDEST PUSH2 0x4DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x625 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x15E8 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x34D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15FD JUMP JUMPDEST PUSH2 0x4DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x772 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x784 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x7C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x816 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x84A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1618 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x86B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x170A JUMP JUMPDEST PUSH2 0x34D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x897 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1716 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x90C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x92A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x93C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x95E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1728 JUMP JUMPDEST PUSH2 0x971 PUSH2 0x1A37 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH2 0x1A46 JUMP JUMPDEST PUSH2 0x4DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AA7 JUMP JUMPDEST PUSH2 0x4DD PUSH2 0x1ABE JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1B1C JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1B8B JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B9F JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xAC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1BB4 JUMP JUMPDEST PUSH2 0x4DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xAE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1D55 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x1E9D JUMP JUMPDEST PUSH2 0x34D PUSH2 0x1EAC JUMP JUMPDEST PUSH2 0x4DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xC0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1ED0 JUMP JUMPDEST PUSH2 0x34D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x214F JUMP JUMPDEST PUSH2 0x4DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xCD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x217A JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xCFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2196 JUMP JUMPDEST PUSH2 0x4DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2335 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x20C07ED100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xDCD JUMPI POP PUSH2 0xDCD DUP3 PUSH2 0x23A6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE5C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE31 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE5C 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 0xE3F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7B PUSH2 0xE74 PUSH2 0x2543 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x254D JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEF9 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE SWAP1 SWAP4 POP DUP9 SWAP3 POP DUP8 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x260A SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF19 PUSH2 0xF11 PUSH2 0x2543 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x27C6 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 DUP2 EQ PUSH2 0x100B JUMPI PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE PUSH2 0x1006 SWAP4 DUP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xFFC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xFD1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xFFC 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 0xFDF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x27FB JUMP JUMPDEST PUSH2 0x102D JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1090 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x109A PUSH2 0x2543 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP4 ISZERO PUSH2 0x114B JUMPI DUP1 DUP5 ADD DUP2 DUP2 GT PUSH2 0x1120 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20616C6C6F77616E6365206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE5C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE31 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE5C JUMP JUMPDEST PUSH2 0x1212 PUSH2 0x120D PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x2885 JUMP JUMPDEST PUSH2 0x121C DUP3 DUP3 PUSH2 0x28F2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1233 PUSH2 0x122D PUSH2 0x2543 JUMP JUMPDEST DUP4 PUSH2 0x2A15 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x1292 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP1 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0x14A4 JUMPI PUSH1 0x0 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0x12C4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x133E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0x134C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x144F JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x13B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x13F3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x144D JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x1448 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x12AF JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x14B4 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x152E JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x1510 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0x1538 PUSH2 0x2543 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x155E JUMPI PUSH2 0x155E DUP12 DUP3 DUP6 PUSH2 0x2AF4 JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xDCD JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x15F3 PUSH2 0x120D PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x121C DUP3 DUP3 PUSH2 0x2C03 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1628 PUSH2 0x1623 PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x2E33 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1637 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1688 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1700 JUMPI PUSH2 0x16F8 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x16A1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x16BD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x16D0 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2EF7 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x168B JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7B DUP4 DUP4 PUSH2 0x2F77 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x177F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1789 PUSH2 0x2543 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP DUP1 DUP1 JUMPDEST DUP6 DUP2 EQ PUSH2 0x199D JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x17BD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1837 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x1845 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x1948 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x18AD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x18EC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x1946 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x1941 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x17A8 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x19AD JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x1A27 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x1A09 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE5C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE31 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE5C JUMP JUMPDEST PUSH2 0x1AB2 PUSH2 0x1623 PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x1ABB DUP2 PUSH2 0x2FB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AC8 PUSH2 0x2543 JUMP JUMPDEST SWAP1 POP PUSH2 0x1AD3 DUP2 PUSH2 0x2885 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1B79 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE7B PUSH2 0x1B84 PUSH2 0x2543 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2AF4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7B PUSH2 0x1B98 PUSH2 0x2543 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2FFD JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1BBF PUSH2 0x2543 JUMP JUMPDEST SWAP1 POP PUSH2 0x1BCD DUP2 DUP9 DUP9 DUP9 PUSH2 0x27C6 JUMP JUMPDEST PUSH2 0x1BDF DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3164 JUMP JUMPDEST ISZERO PUSH2 0x1D48 JUMPI PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CD4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1D48 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1D60 PUSH2 0x1623 PUSH2 0x2543 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1D6F JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1DC0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1700 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x1DD6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x1E01 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x1E1D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x1DC3 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1EA7 PUSH2 0x316A JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x1F2B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373206F776E657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x1F80 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2065787069726564207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD SWAP4 DUP5 ADD SWAP1 SSTORE DUP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP5 ADD MSTORE DUP1 DUP3 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP5 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xC0 DUP1 DUP5 ADD DUP10 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 SWAP1 SWAP4 ADD SWAP1 SWAP4 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 SWAP1 PUSH2 0x2012 PUSH2 0xF47 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2138 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E76616C6964207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2143 DUP11 DUP11 DUP11 PUSH2 0x254D JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 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 0x2185 PUSH2 0x1623 PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x2191 PUSH1 0x4 DUP4 DUP4 PUSH2 0x3699 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x21A1 PUSH2 0x2543 JUMP JUMPDEST SWAP1 POP PUSH2 0x21AE DUP2 DUP8 DUP8 PUSH2 0x2FFD JUMP JUMPDEST PUSH2 0x21C0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3164 JUMP JUMPDEST ISZERO PUSH2 0x2329 JUMPI PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP5 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x2329 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2340 PUSH2 0x1623 PUSH2 0x2543 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2409 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x36372B0700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x243D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xA219A02500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x2471 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x3C130D9000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x24A5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D07518600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x24D9 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xC05327E600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x250D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x53F41A9700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xDCD JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0x9D8FF7DA00000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EA7 PUSH2 0x31AE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x25A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 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 DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x2661 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x266B PUSH2 0x2543 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 EQ PUSH2 0x27AE JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2686 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x269E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x273F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x2720 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP SWAP3 DUP4 ADD SWAP3 JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x27A4 JUMPI PUSH2 0x27A4 DUP3 DUP7 DUP4 PUSH2 0x2AF4 JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2671 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x27BF JUMPI PUSH1 0x7 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x27D1 DUP4 DUP4 DUP4 PUSH2 0x2FFD JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x27F5 JUMPI PUSH2 0x27F5 DUP4 DUP6 DUP4 PUSH2 0x2AF4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1ABB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x294D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD DUP2 ISZERO PUSH2 0x29CF JUMPI DUP1 DUP3 ADD DUP2 DUP2 GT PUSH2 0x29AD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2AAF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x2A8B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP PUSH1 0x7 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2B2B JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2BB2 JUMPI DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x2B87 JUMPI PUSH1 0x40 DUP1 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 SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x2C5A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 EQ PUSH2 0x2DC8 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2C73 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2CE5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2CF3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x2D7D JUMPI DUP4 DUP2 ADD DUP5 DUP2 GT PUSH2 0x2D5C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE SWAP4 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x2C5E JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x27F5 JUMPI PUSH1 0x7 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x2E29 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE POP POP POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1ABB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x2191 SWAP1 DUP5 SWAP1 PUSH2 0x330E JUMP JUMPDEST PUSH2 0x2F81 DUP3 DUP3 PUSH2 0x2A15 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F8B PUSH2 0x2543 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2191 JUMPI PUSH2 0x2191 DUP4 DUP3 DUP5 PUSH2 0x2AF4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3058 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x3114 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x30CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3111 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP7 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE JUMPDEST POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3174 PUSH2 0x350F JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x31BA PUSH2 0x3672 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x322D JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x323B JUMPI SWAP2 POP PUSH2 0xE64 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x32FA JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x32E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x3308 JUMPI SWAP2 POP PUSH2 0xE64 SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x3321 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3164 JUMP JUMPDEST PUSH2 0x3372 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x33CD JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3390 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x342F 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 0x3434 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x34B3 JUMPI DUP1 MLOAD ISZERO PUSH2 0x34AE JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x345B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x34AE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x27BF JUMP JUMPDEST DUP1 MLOAD PUSH2 0x3506 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x357B JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x3592 JUMPI PUSH2 0x3588 PUSH2 0x367E JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x366E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x3658 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x35DD PUSH2 0x3672 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x362B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x363F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3655 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x3665 JUMPI PUSH2 0x3588 PUSH2 0x367E JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x3691 PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x373A JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x36CF JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3715 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x36E8 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x3715 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3715 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3715 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x36FA JUMP JUMPDEST POP PUSH2 0x3721 SWAP3 SWAP2 POP PUSH2 0x3725 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3721 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3726 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x3749 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x3755 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB9 PUSH5 0x924CB162C8 DUP11 0x27 SHL SWAP12 SAR 0xCF 0xD8 MSTORE8 CALL PUSH9 0x2E107B2AC9020DF787 RETURN 0x4F RETURNDATASIZE SWAP13 PUSH24 0x6364736F6C63430007060033000000000000000000000000 ",
              "sourceMap": "747:2260:51:-:0;;;864:343;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;864:343:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;864:343:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;864:343:51;;;;;;;;;;;;;;;;;381:132:39;;;;;;;;-1:-1:-1;;;381:132:39;;;;;;;;;;;;;;-1:-1:-1;;;381:132:39;;;;;;;-1:-1:-1;960:15:2;;-1:-1:-1;;;;;;960:15:2;1084:10:51;960:15:2;;;;;990:40;;864:343:51;;-1:-1:-1;864:343:51;;-1:-1:-1;1084:10:51;;864:343;;-1:-1:-1;381:132:39;1069:2:51;;864:343;;381:132:39;;1069:2:51;;864:343;;;;1084:10;;;;990:40:2;;-1:-1:-1;;990:40:2;-1:-1:-1;;;;;;;443:40:85;;;;;;;;493:38;;;;;;2047:13:38;;;;:5;;-1:-1:-1;2047:13:38;;;;:::i;:::-;-1:-1:-1;2070:17:38;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;2097:21:38;;;;;;;;2188:9;2216:27;;;;2273:48;2188:9;2314:5;2273:25;:48::i;:::-;2253:68;;-1:-1:-1;476:18:1::1;::::0;-1:-1:-1;487:6:1;;-1:-1:-1;;476:10:1::1;:18:::0;-1:-1:-1;;;476:18:1:i:1;:::-;-1:-1:-1::0;1170:30:51::3;1181:10:::0;1193:6;1170:10:::3;:30::i;:::-;864:343:::0;;;;747:2260;;17687:463:38;17995:16;;;;;;;17846:283;;;17878:95;17846:283;;;;;;;;;;;18033:14;17846:283;;;;;;;;;;;18106:4;17846:283;;;;;;;;;;;;;;;;;;;;;;;;;17819:324;;;;;;17687:463::o;1252:122:1:-;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;14720:1045:38:-;14838:17;;14883:13;;14873:23;;14865:62;;;;;-1:-1:-1;;;14865:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14938:18;14971:9;14966:550;14987:6;14982:1;:11;14966:550;;15014:10;15027;15038:1;15027:13;;;;;;;;;;;;;;15014:26;;15076:1;-1:-1:-1;;;;;15062:16:38;:2;-1:-1:-1;;;;;15062:16:38;;;15054:48;;;;;-1:-1:-1;;;15054:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;15117:13;15133:6;15140:1;15133:9;;;;;;;;;;;;;;15117:25;;15160:5;15169:1;15160:10;15156:300;;15214:18;;;15258:26;;;15250:61;;;;;-1:-1:-1;;;15250:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15373:13:38;;;;;;:9;:13;;;;;:22;;;;;;15342:13;-1:-1:-1;15156:300:38;15474:31;;;;;;;;-1:-1:-1;;;;;15474:31:38;;;15491:1;;15474:31;;;;;;;;;-1:-1:-1;;14995:3:38;;14966:550;;;-1:-1:-1;15530:15:38;;15526:233;;15578:12;;15624:19;;;15665:18;;;15657:53;;;;;-1:-1:-1;;;15657:53:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;15724:12;:24;-1:-1:-1;15526:233:38;14720:1045;;;;:::o;747:2260:51:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;747:2260:51;;;-1:-1:-1;747:2260:51;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:379:86",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:86",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "144:233:86",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "182:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "191:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "202:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "184:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "184:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "184:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "160:10:86"
                                  },
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "172:8:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "157:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "157:24:86"
                              },
                              "nodeType": "YulIf",
                              "src": "154:2:86"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "247:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "256:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "267:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "249:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "249:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "229:8:86"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "239:6:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "226:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "226:20:86"
                              },
                              "nodeType": "YulIf",
                              "src": "223:2:86"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "288:36:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "305:6:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "313:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "301:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "301:23:86"
                              },
                              "variableNames": [
                                {
                                  "name": "offsetOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "288:9:86"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "333:38:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "350:8:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "360:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "346:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "346:25:86"
                              },
                              "variableNames": [
                                {
                                  "name": "lengthOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:9:86"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "78:6:86",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "86:6:86",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "94:10:86",
                            "type": ""
                          },
                          {
                            "name": "endIndex",
                            "nodeType": "YulTypedName",
                            "src": "106:8:86",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "offsetOut",
                            "nodeType": "YulTypedName",
                            "src": "119:9:86",
                            "type": ""
                          },
                          {
                            "name": "lengthOut",
                            "nodeType": "YulTypedName",
                            "src": "130:9:86",
                            "type": ""
                          }
                        ],
                        "src": "14:363:86"
                      }
                    ]
                  },
                  "contents": "{\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(offsetOut, offsetOut) }\n        if gt(endIndex, length) { revert(offsetOut, offsetOut) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n}",
                  "id": 86,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "8178": [
                  {
                    "length": 32,
                    "start": 3916
                  },
                  {
                    "length": 32,
                    "start": 7854
                  }
                ],
                "8180": [
                  {
                    "length": 32,
                    "start": 4109
                  }
                ],
                "8192": [
                  {
                    "length": 32,
                    "start": 3877
                  }
                ],
                "15042": [
                  {
                    "length": 32,
                    "start": 5550
                  },
                  {
                    "length": 32,
                    "start": 12734
                  },
                  {
                    "length": 32,
                    "start": 12881
                  },
                  {
                    "length": 32,
                    "start": 13597
                  },
                  {
                    "length": 32,
                    "start": 13736
                  }
                ],
                "15044": [
                  {
                    "length": 32,
                    "start": 5491
                  },
                  {
                    "length": 32,
                    "start": 12793
                  },
                  {
                    "length": 32,
                    "start": 13639
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061025c5760003560e01c80637ecebe0011610145578063b88d4fde116100bd578063d505accf1161008c578063e0df5b6f11610071578063e0df5b6f14610c74578063eb79554914610ce4578063f2fde38b14610d695761025c565b8063d505accf14610bf5578063dd62ed3e14610c465761025c565b8063b88d4fde14610a41578063c3666c3614610ad1578063c4c2bfdc14610be5578063cd0d009614610bed5761025c565b8063983b2d5611610114578063a457c2d7116100f9578063a457c2d7146109c3578063a9059cbb146109ef578063aa271e1a14610a1b5761025c565b8063983b2d561461099557806398650275146109bb5761025c565b80637ecebe001461088157806388d695b2146108a75780638da5cb5b1461096957806395d89b411461098d5761025c565b80633c130d90116101d8578063572b6c05116101a757806370a082311161018c57806370a082311461071b57806373c8a9581461074157806379cc6790146108555761025c565b8063572b6c05146105ce57806368573107146105f45761025c565b80633c130d90146104a957806340c10f19146104b157806342966c68146104df5780634885b254146104fc5761025c565b80631b9a75291161022f578063313ce56711610214578063313ce567146104575780633644e51514610475578063395093511461047d5761025c565b80631b9a75291461035f57806323b872dd146104215761025c565b806301ffc9a71461026157806306fdde031461029c578063095ea7b31461031957806318160ddd14610345575b600080fd5b6102886004803603602081101561027757600080fd5b50356001600160e01b031916610d8f565b604080519115158252519081900360200190f35b6102a4610dd3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102de5781810151838201526020016102c6565b50505050905090810190601f16801561030b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102886004803603604081101561032f57600080fd5b506001600160a01b038135169060200135610e67565b61034d610e84565b60408051918252519081900360200190f35b6102886004803603604081101561037557600080fd5b81019060208101813564010000000081111561039057600080fd5b8201836020820111156103a257600080fd5b803590602001918460208302840111640100000000831117156103c457600080fd5b9193909290916020810190356401000000008111156103e257600080fd5b8201836020820111156103f457600080fd5b8035906020019184602083028401116401000000008311171561041657600080fd5b509092509050610e8a565b6102886004803603606081101561043757600080fd5b506001600160a01b03813581169160208101359091169060400135610f04565b61045f610f23565b6040805160ff9092168252519081900360200190f35b61034d610f47565b6102886004803603604081101561049357600080fd5b506001600160a01b038135169060200135611033565b6102a46111a1565b6104dd600480360360408110156104c757600080fd5b506001600160a01b038135169060200135611202565b005b610288600480360360208110156104f557600080fd5b5035611220565b6102886004803603606081101561051257600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561053d57600080fd5b82018360208201111561054f57600080fd5b8035906020019184602083028401116401000000008311171561057157600080fd5b91939092909160208101903564010000000081111561058f57600080fd5b8201836020820111156105a157600080fd5b803590602001918460208302840111640100000000831117156105c357600080fd5b50909250905061123b565b610288600480360360208110156105e457600080fd5b50356001600160a01b031661156f565b6104dd6004803603604081101561060a57600080fd5b81019060208101813564010000000081111561062557600080fd5b82018360208201111561063757600080fd5b8035906020019184602083028401116401000000008311171561065957600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156106a957600080fd5b8201836020820111156106bb57600080fd5b803590602001918460208302840111640100000000831117156106dd57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506115e8945050505050565b61034d6004803603602081101561073157600080fd5b50356001600160a01b03166115fd565b6104dd6004803603606081101561075757600080fd5b81019060208101813564010000000081111561077257600080fd5b82018360208201111561078457600080fd5b803590602001918460208302840111640100000000831117156107a657600080fd5b9193909290916020810190356401000000008111156107c457600080fd5b8201836020820111156107d657600080fd5b803590602001918460208302840111640100000000831117156107f857600080fd5b91939092909160208101903564010000000081111561081657600080fd5b82018360208201111561082857600080fd5b8035906020019184602083028401116401000000008311171561084a57600080fd5b509092509050611618565b6102886004803603604081101561086b57600080fd5b506001600160a01b03813516906020013561170a565b61034d6004803603602081101561089757600080fd5b50356001600160a01b0316611716565b610288600480360360408110156108bd57600080fd5b8101906020810181356401000000008111156108d857600080fd5b8201836020820111156108ea57600080fd5b8035906020019184602083028401116401000000008311171561090c57600080fd5b91939092909160208101903564010000000081111561092a57600080fd5b82018360208201111561093c57600080fd5b8035906020019184602083028401116401000000008311171561095e57600080fd5b509092509050611728565b610971611a37565b604080516001600160a01b039092168252519081900360200190f35b6102a4611a46565b6104dd600480360360208110156109ab57600080fd5b50356001600160a01b0316611aa7565b6104dd611abe565b610288600480360360408110156109d957600080fd5b506001600160a01b038135169060200135611b1c565b61028860048036036040811015610a0557600080fd5b506001600160a01b038135169060200135611b8b565b61028860048036036020811015610a3157600080fd5b50356001600160a01b0316611b9f565b61028860048036036080811015610a5757600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135640100000000811115610a9257600080fd5b820183602082011115610aa457600080fd5b80359060200191846001830284011164010000000083111715610ac657600080fd5b509092509050611bb4565b6104dd60048036036060811015610ae757600080fd5b810190602081018135640100000000811115610b0257600080fd5b820183602082011115610b1457600080fd5b80359060200191846020830284011164010000000083111715610b3657600080fd5b919390929091602081019035640100000000811115610b5457600080fd5b820183602082011115610b6657600080fd5b80359060200191846020830284011164010000000083111715610b8857600080fd5b919390929091602081019035640100000000811115610ba657600080fd5b820183602082011115610bb857600080fd5b80359060200191846020830284011164010000000083111715610bda57600080fd5b509092509050611d55565b6102a4611e9d565b61034d611eac565b6104dd600480360360e0811015610c0b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611ed0565b61034d60048036036040811015610c5c57600080fd5b506001600160a01b038135811691602001351661214f565b6104dd60048036036020811015610c8a57600080fd5b810190602081018135640100000000811115610ca557600080fd5b820183602082011115610cb757600080fd5b80359060200191846001830284011164010000000083111715610cd957600080fd5b50909250905061217a565b61028860048036036060811015610cfa57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135640100000000811115610d2a57600080fd5b820183602082011115610d3c57600080fd5b80359060200191846001830284011164010000000083111715610d5e57600080fd5b509092509050612196565b6104dd60048036036020811015610d7f57600080fd5b50356001600160a01b0316612335565b60006001600160e01b031982167f20c07ed1000000000000000000000000000000000000000000000000000000001480610dcd5750610dcd826123a6565b92915050565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610e5c5780601f10610e3157610100808354040283529160200191610e5c565b820191906000526020600020905b815481529060010190602001808311610e3f57829003601f168201915b505050505090505b90565b6000610e7b610e74612543565b848461254d565b50600192915050565b60075490565b6000610ef98585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060408051602080890282810182019093528882529093508892508791829185019084908082843760009201919091525061260a92505050565b506001949350505050565b6000610f19610f11612543565b8585856127c6565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000467f0000000000000000000000000000000000000000000000000000000000000000811461100b576002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815261100693859391929091830182828015610ffc5780601f10610fd157610100808354040283529160200191610ffc565b820191906000526020600020905b815481529060010190602001808311610fdf57829003601f168201915b50505050506127fb565b61102d565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b60006001600160a01b038316611090576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b600061109a612543565b6001600160a01b03808216600090815260066020908152604080832093891683529290522054909150831561114b57808401818111611120576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600660209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e5c5780601f10610e3157610100808354040283529160200191610e5c565b61121261120d612543565b612885565b61121c82826128f2565b5050565b600061123361122d612543565b83612a15565b506001919050565b600083828114611292576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600560205260408120549080805b8481146114a45760008a8a838181106112c457fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b0316141561133e576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600089898481811061134c57fe5b9050602002013590508060001461144f578481018581116113b4576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b0316146113f3576001600160a01b038316600090815260056020526040902080548301905561144d565b86821115611448576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350506001016112af565b5081158015906114b45750808214155b1561152e57818303838110611510576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260056020526040902090820190555b6000611538612543565b9050806001600160a01b03168b6001600160a01b03161461155e5761155e8b8285612af4565b5060019a9950505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610dcd57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6115f361120d612543565b61121c8282612c03565b6001600160a01b031660009081526005602052604090205490565b611628611623612543565b612e33565b84838114801561163757508082145b611688576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611700576116f88888838181106116a157fe5b905060200201356001600160a01b03168585848181106116bd57fe5b905060200201358888858181106116d057fe5b905060200201356001600160a01b03166001600160a01b0316612ef79092919063ffffffff16565b60010161168b565b5050505050505050565b6000610e7b8383612f77565b60016020526000908152604090205481565b60008382811461177f576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000611789612543565b6001600160a01b03811660009081526005602052604081205491925080805b85811461199d5760008b8b838181106117bd57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415611837576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a8481811061184557fe5b90506020020135905080600014611948578481018581116118ad576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b0316146118ec576001600160a01b0383166000908152600560205260409020805483019055611946565b86821115611941576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350506001016117a8565b5081158015906119ad5750808214155b15611a2757818303838110611a09576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260056020526040902090820190555b5060019998505050505050505050565b6000546001600160a01b031690565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e5c5780601f10610e3157610100808354040283529160200191610e5c565b611ab2611623612543565b611abb81612fb1565b50565b6000611ac8612543565b9050611ad381612885565b6001600160a01b038116600081815260086020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b60006001600160a01b038316611b79576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b610e7b611b84612543565b8484612af4565b6000610e7b611b98612543565b8484612ffd565b60086020526000908152604090205460ff1681565b600080611bbf612543565b9050611bcd818888886127c6565b611bdf866001600160a01b0316613164565b15611d48577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015611cc057600080fd5b505af1158015611cd4573d6000803e3d6000fd5b505050506040513d6020811015611cea57600080fd5b50516001600160e01b03191614611d48576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b611d60611623612543565b848381148015611d6f57508082145b611dc0576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461170057858582818110611dd657fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a85818110611e0157fe5b905060200201356001600160a01b0316878786818110611e1d57fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015611e7a57600080fd5b505af1158015611e8e573d6000803e3d6000fd5b50505050806001019050611dc3565b6060611ea761316a565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b038716611f2b576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b83421115611f80576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526001602081815260408084208054938401905580517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280820195909552948b166060850152608084018a905260a084019190915260c08084018990528451808503909101815260e09093019093528151919092012090612012610f47565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156120c6573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b031614612138576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b6121438a8a8a61254d565b50505050505050505050565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b612185611623612543565b61219160048383613699565b505050565b6000806121a1612543565b90506121ae818787612ffd565b6121c0866001600160a01b0316613164565b15612329577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b1580156122a157600080fd5b505af11580156122b5573d6000803e3d6000fd5b505050506040513d60208110156122cb57600080fd5b50516001600160e01b03191614612329576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b612340611623612543565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061240957506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b8061243d57506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b8061247157506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b806124a557506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b806124d957506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b8061250d57506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b80610dcd5750506001600160e01b0319167f9d8ff7da000000000000000000000000000000000000000000000000000000001490565b6000611ea76131ae565b6001600160a01b0382166125a8576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b815181518114612661576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b600061266b612543565b90506000805b8381146127ae57600086828151811061268657fe5b60200260200101519050600086838151811061269e57fe5b602002602001015190508060001461273f576001600160a01b038216600090815260056020526040902054818103818110612720576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b03841660009081526005602052604090205550928301925b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3846001600160a01b0316826001600160a01b0316146127a4576127a4828683612af4565b5050600101612671565b5080156127bf576007805482900390555b5050505050565b6127d1838383612ffd565b836001600160a01b0316836001600160a01b0316146127f5576127f5838583612af4565b50505050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b03811660009081526008602052604090205460ff16611abb576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b03821661294d576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b60075481156129cf578082018181116129ad576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6007556001600160a01b03831660009081526005602052604090208054830190555b6040805183815290516001600160a01b038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b8015612aaf576001600160a01b038216600090815260056020526040902054818103818110612a8b576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038416600090815260056020526040902055506007805482900390555b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b038084166000908152600660209081526040808320938616835292905220546000198114801590612b2b57508115155b15612bb257818103818110612b87576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260066020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b815181518114612c5a576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000805b828114612dc8576000858281518110612c7357fe5b6020026020010151905060006001600160a01b0316816001600160a01b03161415612ce5576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b6000858381518110612cf357fe5b6020026020010151905080600014612d7d57838101848111612d5c576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600090815260056020526040902080548301905593505b6040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050600101612c5e565b5080156127f557600754818101818111612e29576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6007555050505050565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e6c57600080fd5b505afa158015612e80573d6000803e3d6000fd5b505050506040513d6020811015612e9657600080fd5b50516001600160a01b03828116911614611abb576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261219190849061330e565b612f818282612a15565b6000612f8b612543565b9050806001600160a01b0316836001600160a01b03161461219157612191838284612af4565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6001600160a01b038216613058576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b8015613114576001600160a01b0383166000908152600560205260409020548181038181106130ce576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b031614613111576001600160a01b038086166000908152600560205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b151590565b606061317461350f565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b600033816131ba613672565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061322d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b1561323b579150610e649050565b6001600160a01b03821632148015906132fa57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156132cd57600080fd5b505afa1580156132e1573d6000803e3d6000fd5b505050506040513d60208110156132f757600080fd5b50515b15613308579150610e649050565b50905090565b816133216001600160a01b038216613164565b613372576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106133cd57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613390565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461342f576040519150601f19603f3d011682016040523d82523d6000602084013e613434565b606091505b509150915081156134b3578051156134ae5780806020019051602081101561345b57600080fd5b50516134ae576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b6127bf565b8051613506576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681148061357b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156135925761358861367e565b925092505061366e565b6001600160a01b038116321480159061365857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d66135dd613672565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561362b57600080fd5b505afa15801561363f573d6000803e3d6000fd5b505050506040513d602081101561365557600080fd5b50515b156136655761358861367e565b60003692509250505b9091565b60131936013560601c90565b366000613691601319830182848161373a565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826136cf5760008555613715565b82601f106136e85782800160ff19823516178555613715565b82800160010185558215613715579182015b828111156137155782358255916020019190600101906136fa565b50613721929150613725565b5090565b5b808211156137215760008155600101613726565b60008085851115613749578182fd5b83861115613755578182fd5b505082019391909203915056fea2646970667358221220b964924cb162c88a271b9b1dcfd853f1682e107b2ac9020df787f34f3d9c776364736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x25C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x145 JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE0DF5B6F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE0DF5B6F EQ PUSH2 0xC74 JUMPI DUP1 PUSH4 0xEB795549 EQ PUSH2 0xCE4 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xD69 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0xD505ACCF EQ PUSH2 0xBF5 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xC46 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0xA41 JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xAD1 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0xBE5 JUMPI DUP1 PUSH4 0xCD0D0096 EQ PUSH2 0xBED JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x983B2D56 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x9C3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x9EF JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xA1B JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x995 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0x9BB JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x881 JUMPI DUP1 PUSH4 0x88D695B2 EQ PUSH2 0x8A7 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x969 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x98D JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x3C130D90 GT PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x572B6C05 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x71B JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x741 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x855 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x5CE JUMPI DUP1 PUSH4 0x68573107 EQ PUSH2 0x5F4 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x3C130D90 EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x4B1 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x4DF JUMPI DUP1 PUSH4 0x4885B254 EQ PUSH2 0x4FC JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x1B9A7529 GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0x214 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x47D JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x1B9A7529 EQ PUSH2 0x35F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x421 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x29C JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x345 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xD8F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH2 0xDD3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2C6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x30B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xE67 JUMP JUMPDEST PUSH2 0x34D PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xE8A JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF04 JUMP JUMPDEST PUSH2 0x45F PUSH2 0xF23 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34D PUSH2 0xF47 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x493 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1033 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x11A1 JUMP JUMPDEST PUSH2 0x4DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1202 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1220 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x58F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x123B JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x156F JUMP JUMPDEST PUSH2 0x4DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x625 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x15E8 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x34D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15FD JUMP JUMPDEST PUSH2 0x4DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x772 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x784 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x7C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x816 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x84A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1618 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x86B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x170A JUMP JUMPDEST PUSH2 0x34D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x897 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1716 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x90C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x92A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x93C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x95E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1728 JUMP JUMPDEST PUSH2 0x971 PUSH2 0x1A37 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH2 0x1A46 JUMP JUMPDEST PUSH2 0x4DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AA7 JUMP JUMPDEST PUSH2 0x4DD PUSH2 0x1ABE JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1B1C JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1B8B JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B9F JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xAC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1BB4 JUMP JUMPDEST PUSH2 0x4DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xAE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1D55 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x1E9D JUMP JUMPDEST PUSH2 0x34D PUSH2 0x1EAC JUMP JUMPDEST PUSH2 0x4DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xC0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1ED0 JUMP JUMPDEST PUSH2 0x34D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x214F JUMP JUMPDEST PUSH2 0x4DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xCD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x217A JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xCFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2196 JUMP JUMPDEST PUSH2 0x4DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2335 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x20C07ED100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xDCD JUMPI POP PUSH2 0xDCD DUP3 PUSH2 0x23A6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE5C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE31 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE5C 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 0xE3F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7B PUSH2 0xE74 PUSH2 0x2543 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x254D JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEF9 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE SWAP1 SWAP4 POP DUP9 SWAP3 POP DUP8 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x260A SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF19 PUSH2 0xF11 PUSH2 0x2543 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x27C6 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 DUP2 EQ PUSH2 0x100B JUMPI PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE PUSH2 0x1006 SWAP4 DUP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xFFC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xFD1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xFFC 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 0xFDF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x27FB JUMP JUMPDEST PUSH2 0x102D JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1090 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x109A PUSH2 0x2543 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP4 ISZERO PUSH2 0x114B JUMPI DUP1 DUP5 ADD DUP2 DUP2 GT PUSH2 0x1120 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20616C6C6F77616E6365206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE5C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE31 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE5C JUMP JUMPDEST PUSH2 0x1212 PUSH2 0x120D PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x2885 JUMP JUMPDEST PUSH2 0x121C DUP3 DUP3 PUSH2 0x28F2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1233 PUSH2 0x122D PUSH2 0x2543 JUMP JUMPDEST DUP4 PUSH2 0x2A15 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x1292 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP1 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0x14A4 JUMPI PUSH1 0x0 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0x12C4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x133E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0x134C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x144F JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x13B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x13F3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x144D JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x1448 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x12AF JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x14B4 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x152E JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x1510 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0x1538 PUSH2 0x2543 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x155E JUMPI PUSH2 0x155E DUP12 DUP3 DUP6 PUSH2 0x2AF4 JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xDCD JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x15F3 PUSH2 0x120D PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x121C DUP3 DUP3 PUSH2 0x2C03 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1628 PUSH2 0x1623 PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x2E33 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1637 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1688 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1700 JUMPI PUSH2 0x16F8 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x16A1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x16BD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x16D0 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2EF7 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x168B JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7B DUP4 DUP4 PUSH2 0x2F77 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x177F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1789 PUSH2 0x2543 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP DUP1 DUP1 JUMPDEST DUP6 DUP2 EQ PUSH2 0x199D JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x17BD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1837 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x1845 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x1948 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x18AD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x18EC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x1946 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x1941 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x17A8 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x19AD JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x1A27 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x1A09 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE5C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE31 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE5C JUMP JUMPDEST PUSH2 0x1AB2 PUSH2 0x1623 PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x1ABB DUP2 PUSH2 0x2FB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AC8 PUSH2 0x2543 JUMP JUMPDEST SWAP1 POP PUSH2 0x1AD3 DUP2 PUSH2 0x2885 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1B79 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE7B PUSH2 0x1B84 PUSH2 0x2543 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2AF4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7B PUSH2 0x1B98 PUSH2 0x2543 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2FFD JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1BBF PUSH2 0x2543 JUMP JUMPDEST SWAP1 POP PUSH2 0x1BCD DUP2 DUP9 DUP9 DUP9 PUSH2 0x27C6 JUMP JUMPDEST PUSH2 0x1BDF DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3164 JUMP JUMPDEST ISZERO PUSH2 0x1D48 JUMPI PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CD4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1D48 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1D60 PUSH2 0x1623 PUSH2 0x2543 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1D6F JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1DC0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1700 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x1DD6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x1E01 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x1E1D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x1DC3 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1EA7 PUSH2 0x316A JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x1F2B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373206F776E657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x1F80 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2065787069726564207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD SWAP4 DUP5 ADD SWAP1 SSTORE DUP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP5 ADD MSTORE DUP1 DUP3 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP5 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xC0 DUP1 DUP5 ADD DUP10 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 SWAP1 SWAP4 ADD SWAP1 SWAP4 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 SWAP1 PUSH2 0x2012 PUSH2 0xF47 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2138 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E76616C6964207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2143 DUP11 DUP11 DUP11 PUSH2 0x254D JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 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 0x2185 PUSH2 0x1623 PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x2191 PUSH1 0x4 DUP4 DUP4 PUSH2 0x3699 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x21A1 PUSH2 0x2543 JUMP JUMPDEST SWAP1 POP PUSH2 0x21AE DUP2 DUP8 DUP8 PUSH2 0x2FFD JUMP JUMPDEST PUSH2 0x21C0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3164 JUMP JUMPDEST ISZERO PUSH2 0x2329 JUMPI PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP5 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x2329 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2340 PUSH2 0x1623 PUSH2 0x2543 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2409 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x36372B0700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x243D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xA219A02500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x2471 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x3C130D9000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x24A5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D07518600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x24D9 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xC05327E600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x250D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x53F41A9700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xDCD JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0x9D8FF7DA00000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EA7 PUSH2 0x31AE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x25A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 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 DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x2661 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x266B PUSH2 0x2543 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 EQ PUSH2 0x27AE JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2686 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x269E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x273F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x2720 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP SWAP3 DUP4 ADD SWAP3 JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x27A4 JUMPI PUSH2 0x27A4 DUP3 DUP7 DUP4 PUSH2 0x2AF4 JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2671 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x27BF JUMPI PUSH1 0x7 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x27D1 DUP4 DUP4 DUP4 PUSH2 0x2FFD JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x27F5 JUMPI PUSH2 0x27F5 DUP4 DUP6 DUP4 PUSH2 0x2AF4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1ABB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x294D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD DUP2 ISZERO PUSH2 0x29CF JUMPI DUP1 DUP3 ADD DUP2 DUP2 GT PUSH2 0x29AD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2AAF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x2A8B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP PUSH1 0x7 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2B2B JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2BB2 JUMPI DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x2B87 JUMPI PUSH1 0x40 DUP1 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 SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x2C5A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 EQ PUSH2 0x2DC8 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2C73 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2CE5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2CF3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x2D7D JUMPI DUP4 DUP2 ADD DUP5 DUP2 GT PUSH2 0x2D5C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE SWAP4 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x2C5E JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x27F5 JUMPI PUSH1 0x7 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x2E29 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE POP POP POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1ABB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x2191 SWAP1 DUP5 SWAP1 PUSH2 0x330E JUMP JUMPDEST PUSH2 0x2F81 DUP3 DUP3 PUSH2 0x2A15 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F8B PUSH2 0x2543 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2191 JUMPI PUSH2 0x2191 DUP4 DUP3 DUP5 PUSH2 0x2AF4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3058 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x3114 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x30CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3111 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP7 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE JUMPDEST POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3174 PUSH2 0x350F JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x31BA PUSH2 0x3672 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x322D JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x323B JUMPI SWAP2 POP PUSH2 0xE64 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x32FA JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x32E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x3308 JUMPI SWAP2 POP PUSH2 0xE64 SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x3321 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3164 JUMP JUMPDEST PUSH2 0x3372 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x33CD JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3390 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x342F 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 0x3434 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x34B3 JUMPI DUP1 MLOAD ISZERO PUSH2 0x34AE JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x345B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x34AE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x27BF JUMP JUMPDEST DUP1 MLOAD PUSH2 0x3506 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x357B JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x3592 JUMPI PUSH2 0x3588 PUSH2 0x367E JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x366E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x3658 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x35DD PUSH2 0x3672 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x362B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x363F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3655 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x3665 JUMPI PUSH2 0x3588 PUSH2 0x367E JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x3691 PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x373A JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x36CF JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3715 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x36E8 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x3715 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3715 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3715 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x36FA JUMP JUMPDEST POP PUSH2 0x3721 SWAP3 SWAP2 POP PUSH2 0x3725 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3721 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3726 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x3749 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x3755 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB9 PUSH5 0x924CB162C8 DUP11 0x27 SHL SWAP12 SAR 0xCF 0xD8 MSTORE8 CALL PUSH9 0x2E107B2AC9020DF787 RETURN 0x4F RETURNDATASIZE SWAP13 PUSH24 0x6364736F6C63430007060033000000000000000000000000 ",
              "sourceMap": "747:2260:51:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;676:202:39;;;;;;;;;;;;;;;;-1:-1:-1;676:202:39;-1:-1:-1;;;;;;676:202:39;;:::i;:::-;;;;;;;;;;;;;;;;;;4506:92:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3730:166;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3730:166:38;;;;;;;;:::i;3263:100::-;;;:::i;:::-;;;;;;;;;;;;;;;;1414:186:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1414:186:39;;-1:-1:-1;1414:186:39;-1:-1:-1;1414:186:39;:::i;4120:216:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4120:216:38;;;;;;;;;;;;;;;;;:::i;4776:92::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11199:354;;;:::i;5309:625::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5309:625:38;;;;;;;;:::i;5038:100::-;;;:::i;1861:136:51:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1861:136:51;;;;;;;;:::i;:::-;;1048::39;;;;;;;;;;;;;;;;-1:-1:-1;1048:136:39;;:::i;8089:1756:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8089:1756:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8089:1756:38;;-1:-1:-1;8089:1756:38;-1:-1:-1;8089:1756:38;:::i;544:193:85:-;;;;;;;;;;;;;;;;-1:-1:-1;544:193:85;-1:-1:-1;;;;;544:193:85;;:::i;2090:182:51:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2090:182:51;;;;;;;;-1:-1:-1;2090:182:51;;-1:-1:-1;;2090:182:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2090:182:51;;-1:-1:-1;2090:182:51;;-1:-1:-1;;;;;2090:182:51:i;3396:119:38:-;;;;;;;;;;;;;;;;-1:-1:-1;3396:119:38;-1:-1:-1;;;;;3396:119:38;;:::i;1137:481:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1137:481:8;;-1:-1:-1;1137:481:8;-1:-1:-1;1137:481:8;:::i;1225:148:39:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1225:148:39;;;;;;;;:::i;1587:50:38:-;;;;;;;;;;;;;;;;-1:-1:-1;1587:50:38;-1:-1:-1;;;;;1587:50:38;;:::i;6429:1613::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6429:1613:38;;-1:-1:-1;6429:1613:38;-1:-1:-1;6429:1613:38;:::i;1114:94:2:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1114:94:2;;;;;;;;;;;;;;4639:96:38;;;:::i;694:120:1:-;;;;;;;;;;;;;;;;-1:-1:-1;694:120:1;-1:-1:-1;;;;;694:120:1;;:::i;929:185::-;;;:::i;5976:277:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5976:277:38;;;;;;;;:::i;3929:158::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3929:158:38;;;;;;;;:::i;339:40:1:-;;;;;;;;;;;;;;;;-1:-1:-1;339:40:1;-1:-1:-1;;;;;339:40:1;;:::i;10505:473:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10505:473:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10505:473:38;;-1:-1:-1;10505:473:38;-1:-1:-1;10505:473:38;:::i;2430:511:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2430:511:8;;-1:-1:-1;2430:511:8;-1:-1:-1;2430:511:8;:::i;2911:94:51:-;;;:::i;1402:42:38:-;;;:::i;11592:711::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11592:711:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3548:149::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3548:149:38;;;;;;;;;;:::i;1503:136:51:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1503:136:51;;-1:-1:-1;1503:136:51;-1:-1:-1;1503:136:51;:::i;10020:439:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10020:439:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10020:439:38;;-1:-1:-1;10020:439:38;-1:-1:-1;10020:439:38;:::i;1448:197:2:-;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;676:202:39:-;761:4;-1:-1:-1;;;;;;784:47:39;;799:32;784:47;;:87;;;835:36;859:11;835:23;:36::i;:::-;777:94;676:202;-1:-1:-1;;676:202:39:o;4506:92:38:-;4586:5;4579:12;;;;;;;-1:-1:-1;;4579:12:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4554:13;;4579:12;;4586:5;;4579:12;;4586:5;4579:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4506:92;;:::o;3730:166::-;3814:4;3830:38;3839:12;:10;:12::i;:::-;3853:7;3862:5;3830:8;:38::i;:::-;-1:-1:-1;3885:4:38;3730:166;;;;:::o;3263:100::-;3344:12;;3263:100;:::o;1414:186:39:-;1526:4;1542:30;1557:6;;1542:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1542:30:39;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1565:6:39;;-1:-1:-1;1565:6:39;;;;1542:30;;;1565:6;;1542:30;1565:6;1542:30;;;;;;;;;-1:-1:-1;1542:14:39;;-1:-1:-1;;;1542:30:39:i;:::-;-1:-1:-1;1589:4:39;1414:186;;;;;;:::o;4120:216:38:-;4248:4;4264:44;4278:12;:10;:12::i;:::-;4292:4;4298:2;4302:5;4264:13;:44::i;:::-;-1:-1:-1;4325:4:38;4120:216;;;;;:::o;4776:92::-;4852:9;4776:92;:::o;11199:354::-;11257:7;11335:9;11458:17;11447:28;;:99;;11539:5;11498:48;;;;;;;;;;;;-1:-1:-1;;11498:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;11524:7;;11498:48;;11539:5;;11498:48;;11539:5;11498:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:25;:48::i;:::-;11447:99;;;11478:17;11447:99;11440:106;;;11199:354;:::o;5309:625::-;5408:4;-1:-1:-1;;;;;5432:21:38;;5424:61;;;;;-1:-1:-1;;;5424:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;5495:13;5511:12;:10;:12::i;:::-;-1:-1:-1;;;;;5554:18:38;;;5533;5554;;;:11;:18;;;;;;;;:27;;;;;;;;;;5495:28;;-1:-1:-1;5595:15:38;;5591:264;;5649:23;;;5694:25;;;5686:63;;;;;-1:-1:-1;;;5686:63:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5763:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:42;;;5793:12;-1:-1:-1;5591:264:38;5885:7;-1:-1:-1;;;;;5869:36:38;5878:5;-1:-1:-1;;;;;5869:36:38;;5894:10;5869:36;;;;;;;;;;;;;;;;;;-1:-1:-1;5923:4:38;;5309:625;-1:-1:-1;;;;5309:625:38:o;5038:100::-;5122:9;5115:16;;;;;;;;-1:-1:-1;;5115:16:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5090:13;;5115:16;;5122:9;;5115:16;;5122:9;5115:16;;;;;;;;;;;;;;;;;;;;;;;;1861:136:51;1936:28;1951:12;:10;:12::i;:::-;1936:14;:28::i;:::-;1974:16;1980:2;1984:5;1974;:16::i;:::-;1861:136;;:::o;1048::39:-;1113:4;1129:27;1135:12;:10;:12::i;:::-;1149:6;1129:5;:27::i;:::-;-1:-1:-1;1173:4:39;1048:136;;;:::o;8089:1756:38:-;8253:4;8286:10;8321:23;;;8313:62;;;;;-1:-1:-1;;;8313:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8404:15:38;;8386;8404;;;:9;:15;;;;;;;8386;;8498:791;8519:6;8514:1;:11;8498:791;;8546:10;8559;;8570:1;8559:13;;;;;;;;;;;;;-1:-1:-1;;;;;8559:13:38;8546:26;;8608:1;-1:-1:-1;;;;;8594:16:38;:2;-1:-1:-1;;;;;8594:16:38;;;8586:51;;;;;-1:-1:-1;;;8586:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8652:13;8668:6;;8675:1;8668:9;;;;;;;;;;;;;8652:25;;8696:5;8705:1;8696:10;8692:542;;8750:18;;;8794:26;;;8786:61;;;;;-1:-1:-1;;;8786:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8878:13;8865:26;;8921:2;-1:-1:-1;;;;;8913:10:38;:4;-1:-1:-1;;;;;8913:10:38;;8909:311;;-1:-1:-1;;;;;8947:13:38;;;;;;:9;:13;;;;;:22;;;;;;8909:311;;;9033:7;9024:5;:16;;9016:56;;;;;-1:-1:-1;;;9016:56:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;9094:31;;;;8909:311;8692:542;;9268:2;-1:-1:-1;;;;;9253:25:38;9262:4;-1:-1:-1;;;;;9253:25:38;;9272:5;9253:25;;;;;;;;;;;;;;;;;;-1:-1:-1;;8527:3:38;;8498:791;;;-1:-1:-1;9303:15:38;;;;;:55;;;9336:22;9322:10;:36;;9303:55;9299:380;;;9395:20;;;9437;;;9429:60;;;;;-1:-1:-1;;;9429:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9559:15:38;;;;;;:9;:15;;;;;9577:35;;;9559:53;;9299:380;9689:14;9706:12;:10;:12::i;:::-;9689:29;;9740:6;-1:-1:-1;;;;;9732:14:38;:4;-1:-1:-1;;;;;9732:14:38;;9728:89;;9762:44;9781:4;9787:6;9795:10;9762:18;:44::i;:::-;-1:-1:-1;9834:4:38;;8089:1756;-1:-1:-1;;;;;;;;;;8089:1756:38:o;544:193:85:-;631:4;667:19;-1:-1:-1;;;;;654:32:85;:9;-1:-1:-1;;;;;654:32:85;;:76;;;;711:18;-1:-1:-1;;;;;690:40:85;:9;-1:-1:-1;;;;;690:40:85;;647:83;;544:193;;;:::o;2090:182:51:-;2197:28;2212:12;:10;:12::i;2197:28::-;2235:30;2246:10;2258:6;2235:10;:30::i;3396:119:38:-;-1:-1:-1;;;;;3490:18:38;3464:7;3490:18;;;:9;:18;;;;;;;3396:119::o;1137:481:8:-;1301:31;1319:12;:10;:12::i;:::-;1301:17;:31::i;:::-;1359:8;1392:23;;;:51;;;;-1:-1:-1;1419:24:8;;;1392:51;1384:90;;;;;-1:-1:-1;;;1384:90:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;1489:9;1484:128;1509:6;1504:1;:11;1484:128;;1536:65;1577:8;;1586:1;1577:11;;;;;;;;;;;;;-1:-1:-1;;;;;1577:11:8;1590:7;;1598:1;1590:10;;;;;;;;;;;;;1550:6;;1557:1;1550:9;;;;;;;;;;;;;-1:-1:-1;;;;;1550:9:8;-1:-1:-1;;;;;1536:40:8;;;:65;;;;;:::i;:::-;1517:3;;1484:128;;;;1137:481;;;;;;;:::o;1225:148:39:-;1307:4;1323:22;1333:4;1339:5;1323:9;:22::i;1587:50:38:-;;;;;;;;;;;;;:::o;6429:1613::-;6545:4;6578:10;6613:23;;;6605:62;;;;;-1:-1:-1;;;6605:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6677:14;6694:12;:10;:12::i;:::-;-1:-1:-1;;;;;6734:17:38;;6716:15;6734:17;;;:9;:17;;;;;;6677:29;;-1:-1:-1;6716:15:38;;6830:793;6851:6;6846:1;:11;6830:793;;6878:10;6891;;6902:1;6891:13;;;;;;;;;;;;;-1:-1:-1;;;;;6891:13:38;6878:26;;6940:1;-1:-1:-1;;;;;6926:16:38;:2;-1:-1:-1;;;;;6926:16:38;;;6918:51;;;;;-1:-1:-1;;;6918:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6984:13;7000:6;;7007:1;7000:9;;;;;;;;;;;;;6984:25;;7027:5;7036:1;7027:10;7023:544;;7081:18;;;7125:26;;;7117:61;;;;;-1:-1:-1;;;7117:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;7209:13;7196:26;;7254:2;-1:-1:-1;;;;;7244:12:38;:6;-1:-1:-1;;;;;7244:12:38;;7240:313;;-1:-1:-1;;;;;7280:13:38;;;;;;:9;:13;;;;;:22;;;;;;7240:313;;;7366:7;7357:5;:16;;7349:56;;;;;-1:-1:-1;;;7349:56:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;7427:31;;;;7240:313;7023:544;;7602:2;-1:-1:-1;;;;;7585:27:38;7594:6;-1:-1:-1;;;;;7585:27:38;;7606:5;7585:27;;;;;;;;;;;;;;;;;;-1:-1:-1;;6859:3:38;;6830:793;;;-1:-1:-1;7637:15:38;;;;;:55;;;7670:22;7656:10;:36;;7637:55;7633:382;;;7729:20;;;7771;;;7763:60;;;;;-1:-1:-1;;;7763:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7893:17:38;;;;;;:9;:17;;;;;7913:35;;;7893:55;;7633:382;-1:-1:-1;8031:4:38;;6429:1613;-1:-1:-1;;;;;;;;;6429:1613:38:o;1114:94:2:-;1169:7;1195:6;-1:-1:-1;;;;;1195:6:2;1114:94;:::o;4639:96:38:-;4721:7;4714:14;;;;;;;;-1:-1:-1;;4714:14:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4689:13;;4714:14;;4721:7;;4714:14;;4721:7;4714:14;;;;;;;;;;;;;;;;;;;;;;;;694:120:1;747:31;765:12;:10;:12::i;747:31::-;788:19;799:7;788:10;:19::i;:::-;694:120;:::o;929:185::-;972:15;990:12;:10;:12::i;:::-;972:30;;1012:23;1027:7;1012:14;:23::i;:::-;-1:-1:-1;;;;;1045:17:1;;1065:5;1045:17;;;:8;:17;;;;;;:25;;-1:-1:-1;;1045:25:1;;;1085:22;;;1065:5;1085:22;929:185;:::o;5976:277:38:-;6080:4;-1:-1:-1;;;;;6104:21:38;;6096:61;;;;;-1:-1:-1;;;6096:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6167:58;6186:12;:10;:12::i;:::-;6200:7;6209:15;6167:18;:58::i;3929:158::-;4009:4;4025:34;4035:12;:10;:12::i;:::-;4049:2;4053:5;4025:9;:34::i;339:40:1:-;;;;;;;;;;;;;;;:::o;10505:473:38:-;10667:4;10683:14;10700:12;:10;:12::i;:::-;10683:29;;10722:39;10736:6;10744:4;10750:2;10754:6;10722:13;:39::i;:::-;10775:15;:2;-1:-1:-1;;;;;10775:13:38;;:15::i;:::-;10771:180;;;10880:32;10814:98;;;10829:2;-1:-1:-1;;;;;10814:34:38;;10849:6;10857:4;10863:6;10871:4;;10814:62;;;;;;;;;;;;;-1:-1:-1;;;;;10814:62:38;;;;;;-1:-1:-1;;;;;10814:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10814:62:38;-1:-1:-1;;;;;;10814:98:38;;10806:134;;;;;-1:-1:-1;;;10806:134:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10967:4:38;;10505:473;-1:-1:-1;;;;;;10505:473:38:o;2430:511:8:-;2599:31;2617:12;:10;:12::i;2599:31::-;2657:8;2690:26;;;:55;;;;-1:-1:-1;2720:25:8;;;2690:55;2682:94;;;;;-1:-1:-1;;;2682:94:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:9;2786:149;2811:6;2806:1;:11;2786:149;;2857:9;;2867:1;2857:12;;;;;;;;;;;;;-1:-1:-1;;;;;2857:12:8;-1:-1:-1;;;;;2838:45:8;;2892:4;2899:8;;2908:1;2899:11;;;;;;;;;;;;;-1:-1:-1;;;;;2899:11:8;2912:8;;2921:1;2912:11;;;;;;;;;;;;;2838:86;;;;;;;;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:3;;;;;2786:149;;2911:94:51;2953:16;2988:10;:8;:10::i;:::-;2981:17;;2911:94;:::o;1402:42:38:-;;;:::o;11592:711::-;-1:-1:-1;;;;;11810:19:38;;11802:57;;;;;-1:-1:-1;;;11802:57:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;11896:8;11877:15;:27;;11869:61;;;;;-1:-1:-1;;;11869:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12022:13:38;;;11940:18;12022:13;;;:6;:13;;;;;;;;:15;;;;;;;11971:77;;1329:66;11971:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11961:88;;;;;;;;12113:18;:16;:18::i;:::-;12133:10;12084:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12074:71;;;;;;12059:86;;12155:14;12172:24;12182:4;12188:1;12191;12194;12172:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12155:41;;12224:5;-1:-1:-1;;;;;12214:15:38;:6;-1:-1:-1;;;;;12214:15:38;;12206:49;;;;;-1:-1:-1;;;12206:49:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;12265:31;12274:5;12281:7;12290:5;12265:8;:31::i;:::-;11592:711;;;;;;;;;;:::o;3548:149::-;-1:-1:-1;;;;;3663:18:38;;;3637:7;3663:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3548:149::o;1503:136:51:-;1570:31;1588:12;:10;:12::i;1570:31::-;1611:21;:9;1623;;1611:21;:::i;:::-;;1503:136;;:::o;10020:439:38:-;10156:4;10172:14;10189:12;:10;:12::i;:::-;10172:29;;10211;10221:6;10229:2;10233:6;10211:9;:29::i;:::-;10254:15;:2;-1:-1:-1;;;;;10254:13:38;;:15::i;:::-;10250:182;;;10361:32;10293:100;;;10308:2;-1:-1:-1;;;;;10293:34:38;;10328:6;10336;10344;10352:4;;10293:64;;;;;;;;;;;;;-1:-1:-1;;;;;10293:64:38;;;;;;-1:-1:-1;;;;;10293:64:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10293:64:38;-1:-1:-1;;;;;;10293:100:38;;10285:136;;;;;-1:-1:-1;;;10285:136:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10448:4:38;;10020:439;-1:-1:-1;;;;;10020:439:38:o;1448:197:2:-;1527:31;1545:12;:10;:12::i;1527:31::-;1568:6;:17;;;;-1:-1:-1;;;;;1568:17:2;;;;;;;;;1600:38;;1568:17;;1621:6;;;1600:38;;1568:6;1600:38;1448:197;:::o;2491:610:38:-;2576:4;-1:-1:-1;;;;;;2611:40:38;;2626:25;2611:40;;:95;;-1:-1:-1;;;;;;;2667:39:38;;2682:24;2667:39;2611:95;:158;;;-1:-1:-1;;;;;;;2722:47:38;;2737:32;2722:47;2611:158;:221;;;-1:-1:-1;;;;;;;2785:47:38;;2800:32;2785:47;2611:221;:285;;;-1:-1:-1;;;;;;;2848:48:38;;2863:33;2848:48;2611:285;:354;;;-1:-1:-1;;;;;;;2912:53:38;;2927:38;2912:53;2611:354;:422;;;-1:-1:-1;;;;;;;2981:52:38;;2996:37;2981:52;2611:422;:483;;;-1:-1:-1;;;;;;;;3049:45:38;3064:30;3049:45;;2491:610::o;2407:183:51:-;2512:15;2546:37;:35;:37::i;12438:273:38:-;-1:-1:-1;;;;;12560:21:38;;12552:61;;;;;-1:-1:-1;;;12552:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12623:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:35;;;12673:31;;;;;;;;;;;;;;;;;12438:273;;;:::o;16457:1095::-;16575:13;;16616;;16606:23;;16598:62;;;;;-1:-1:-1;;;16598:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;16671:14;16688:12;:10;:12::i;:::-;16671:29;;16711:18;16744:9;16739:664;16760:6;16755:1;:11;16739:664;;16787:12;16802:6;16809:1;16802:9;;;;;;;;;;;;;;16787:24;;16825:13;16841:6;16848:1;16841:9;;;;;;;;;;;;;;16825:25;;16868:5;16877:1;16868:10;16864:371;;-1:-1:-1;;;;;16916:15:38;;16898;16916;;;:9;:15;;;;;;16970;;;17011:20;;;17003:60;;;;;-1:-1:-1;;;17003:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17081:15:38;;;;;;:9;:15;;;;;:28;-1:-1:-1;17127:19:38;;;;16864:371;17253:33;;;;;;;;17276:1;;-1:-1:-1;;;;;17253:33:38;;;;;;;;;;;;17313:6;-1:-1:-1;;;;;17305:14:38;:4;-1:-1:-1;;;;;17305:14:38;;17301:92;;17339:39;17358:4;17364:6;17372:5;17339:18;:39::i;:::-;-1:-1:-1;;16768:3:38;;16739:664;;;-1:-1:-1;17417:15:38;;17413:133;;17448:12;:26;;;;;;;17413:133;16457:1095;;;;;:::o;13965:263::-;14102:26;14112:4;14118:2;14122:5;14102:9;:26::i;:::-;14150:6;-1:-1:-1;;;;;14142:14:38;:4;-1:-1:-1;;;;;14142:14:38;;14138:84;;14172:39;14191:4;14197:6;14205:5;14172:18;:39::i;:::-;13965:263;;;;:::o;17687:463::-;17995:16;;;;;;;17846:283;;;17878:95;17846:283;;;;;;;;;;;18033:14;17846:283;;;;;;;;;;;18106:4;17846:283;;;;;;;;;;;;;;;;;;;;;;;;;17819:324;;;;;;17687:463::o;1120:126:1:-;-1:-1:-1;;;;;1193:17:1;;;;;;:8;:17;;;;;;;;1185:54;;;;;-1:-1:-1;;;1185:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;14234:480:38;-1:-1:-1;;;;;14311:16:38;;14303:48;;;;;-1:-1:-1;;;14303:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14378:12;;14404:10;;14400:262;;14450:14;;;14486:18;;;14478:53;;;;;-1:-1:-1;;;14478:53:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14545:12;:24;-1:-1:-1;;;;;14583:13:38;;;;;;:9;:13;;;;;:22;;;;;;14400:262;14676:31;;;;;;;;-1:-1:-1;;;;;14676:31:38;;;14693:1;;14676:31;;;;;;;;;14234:480;;;:::o;15771:442::-;15846:10;;15842:317;;-1:-1:-1;;;;;15890:15:38;;15872;15890;;;:9;:15;;;;;;15940;;;15977:20;;;15969:60;;;;;-1:-1:-1;;;15969:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16043:15:38;;;;;;:9;:15;;;;;:28;-1:-1:-1;16085:12:38;:21;;;;;;;15842:317;16173:33;;;;;;;;16196:1;;-1:-1:-1;;;;;16173:33:38;;;;;;;;;;;;15771:442;;:::o;12717:682::-;-1:-1:-1;;;;;12872:18:38;;;12851;12872;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;12914:31:38;;;;;:55;;-1:-1:-1;12949:20:38;;;12914:55;12910:432;;;13127:28;;;13177:25;;;13169:67;;;;;-1:-1:-1;;;13169:67:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13250:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:42;;;13280:12;-1:-1:-1;12910:432:38;13372:7;-1:-1:-1;;;;;13356:36:38;13365:5;-1:-1:-1;;;;;13356:36:38;;13381:10;13356:36;;;;;;;;;;;;;;;;;;12717:682;;;;:::o;14720:1045::-;14838:17;;14883:13;;14873:23;;14865:62;;;;;-1:-1:-1;;;14865:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14938:18;14971:9;14966:550;14987:6;14982:1;:11;14966:550;;15014:10;15027;15038:1;15027:13;;;;;;;;;;;;;;15014:26;;15076:1;-1:-1:-1;;;;;15062:16:38;:2;-1:-1:-1;;;;;15062:16:38;;;15054:48;;;;;-1:-1:-1;;;15054:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;15117:13;15133:6;15140:1;15133:9;;;;;;;;;;;;;;15117:25;;15160:5;15169:1;15160:10;15156:300;;15214:18;;;15258:26;;;15250:61;;;;;-1:-1:-1;;;15250:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15373:13:38;;;;;;:9;:13;;;;;:22;;;;;;15342:13;-1:-1:-1;15156:300:38;15474:31;;;;;;;;-1:-1:-1;;;;;15474:31:38;;;15491:1;;15474:31;;;;;;;;;-1:-1:-1;;14995:3:38;;14966:550;;;-1:-1:-1;15530:15:38;;15526:233;;15578:12;;15624:19;;;15665:18;;;15657:53;;;;;-1:-1:-1;;;15657:53:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;15724:12;:24;-1:-1:-1;14720:1045:38;;;;:::o;1770:136:2:-;1860:4;-1:-1:-1;;;;;1860:10:2;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1860:12:2;-1:-1:-1;;;;;1849:23:2;;;;;;1841:58;;;;;-1:-1:-1;;;1841:58:2;;;;;;;;;;;;;;;;;;;;;;;;;;;416:223:6;573:58;;;-1:-1:-1;;;;;573:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;596:23;573:58;;;538:94;;566:5;;538:27;:94::i;16219:232:38:-;16294:18;16300:4;16306:5;16294;:18::i;:::-;16322:14;16339:12;:10;:12::i;:::-;16322:29;;16373:6;-1:-1:-1;;;;;16365:14:38;:4;-1:-1:-1;;;;;16365:14:38;;16361:84;;16395:39;16414:4;16420:6;16428:5;16395:18;:39::i;1252:122:1:-;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;13405:554:38:-;-1:-1:-1;;;;;13530:16:38;;13522:51;;;;;-1:-1:-1;;;13522:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;13588:10;;13584:328;;-1:-1:-1;;;;;13632:15:38;;13614;13632;;;:9;:15;;;;;;13682;;;13719:20;;;13711:60;;;;;-1:-1:-1;;;13711:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;13797:2;-1:-1:-1;;;;;13789:10:38;:4;-1:-1:-1;;;;;13789:10:38;;13785:117;;-1:-1:-1;;;;;13819:15:38;;;;;;;:9;:15;;;;;;:28;;;13865:13;;;;;;:22;;;;;;13785:117;13584:328;;;13942:2;-1:-1:-1;;;;;13927:25:38;13936:4;-1:-1:-1;;;;;13927:25:38;;13946:5;13927:25;;;;;;;;;;;;;;;;;;13405:554;;;:::o;913:377:9:-;1229:20;1275:8;;;913:377::o;2596:180:51:-;2699:16;2734:35;:33;:35::i;:::-;2727:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2727:42:51;;-1:-1:-1;;;;2596:180:51;:::o;743:904:85:-;796:15;851:10;796:15;896:27;:25;:27::i;:::-;871:52;;958:18;-1:-1:-1;;;;;937:40:85;:9;-1:-1:-1;;;;;937:40:85;;:76;;;;994:19;-1:-1:-1;;;;;981:32:85;:9;-1:-1:-1;;;;;981:32:85;;937:76;933:166;;;1082:6;-1:-1:-1;1075:13:85;;-1:-1:-1;1075:13:85;933:166;-1:-1:-1;;;;;1496:22:85;;1509:9;1496:22;;;;:78;;;1522:18;-1:-1:-1;;;;;1522:33:85;;1556:6;1564:9;1522:52;;;;;;;;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1522:52:85;1496:78;1492:122;;;1597:6;-1:-1:-1;1590:13:85;;-1:-1:-1;1590:13:85;1492:122;-1:-1:-1;1631:9:85;-1:-1:-1;743:904:85;:::o;1147:870:6:-;1272:5;1296:19;-1:-1:-1;;;;;1296:17:6;;;:19::i;:::-;1288:58;;;;;-1:-1:-1;;;1288:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:12;1431:17;1452:6;-1:-1:-1;;;;;1452:11:6;1464:8;1452:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:57;;;;1487:7;1483:528;;;1514:11;;:16;1510:122;;1569:4;1558:24;;;;;;;;;;;;;;;-1:-1:-1;1558:24:6;1550:67;;;;;-1:-1:-1;;;1550:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:528;;;1720:11;;1716:95;;1756:40;;;-1:-1:-1;;;1756:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:95;1938:4;1932:11;1982:4;1975;1971:2;1967:13;1960:27;1653:670:85;1704:14;;1758:10;-1:-1:-1;;;;;1803:18:85;1782:40;;;;:76;;;1839:19;-1:-1:-1;;;;;1826:32:85;:9;-1:-1:-1;;;;;1826:32:85;;1782:76;1778:197;;;1927:37;:35;:37::i;:::-;1920:44;;;;;;;1778:197;-1:-1:-1;;;;;2122:22:85;;2135:9;2122:22;;;;:99;;;2148:18;-1:-1:-1;;;;;2148:33:85;;2182:27;:25;:27::i;:::-;2211:9;2148:73;;;;;;;;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2148:73:85;2122:99;2118:174;;;2244:37;:35;:37::i;2118:174::-;2308:8;;2301:15;;;;;1653:670;;;:::o;103:519:84:-;-1:-1:-1;;585:14:84;581:23;568:37;564:2;560:46;;536:80::o;628:149::-;706:14;;739:31;-1:-1:-1;;749:20:84;;706:14;;;739:31;:::i;:::-;732:38;;;;628:149;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:363:86;;;172:8;160:10;157:24;154:2;;;202:9;191;184:28;154:2;239:6;229:8;226:20;223:2;;;267:9;256;249:28;223:2;-1:-1:-1;;301:23:86;;;346:25;;;;;-1:-1:-1;144:233:86:o"
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "addMinter(address)": "983b2d56",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "batchBurnFrom(address[],uint256[])": "1b9a7529",
              "batchMint(address[],uint256[])": "68573107",
              "batchTransfer(address[],uint256[])": "88d695b2",
              "batchTransferFrom(address,address[],uint256[])": "4885b254",
              "burn(uint256)": "42966c68",
              "burnFrom(address,uint256)": "79cc6790",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "deploymentChainId()": "cd0d0096",
              "increaseAllowance(address,uint256)": "39509351",
              "isMinter(address)": "aa271e1a",
              "isTrustedForwarder(address)": "572b6c05",
              "mint(address,uint256)": "40c10f19",
              "msgData()": "c4c2bfdc",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "owner()": "8da5cb5b",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "recoverERC20s(address[],address[],uint256[])": "73c8a958",
              "recoverERC721s(address[],address[],uint256[])": "c3666c36",
              "renounceMinter()": "98650275",
              "safeTransfer(address,uint256,bytes)": "eb795549",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setTokenURI(string)": "e0df5b6f",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI()": "3c130d90",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "contracts/token/ERC20/mocks/ERC20Mock.sol": {
        "ERC20Mock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "contract IForwarderRegistry",
                  "name": "forwarderRegistry",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "universalForwarder",
                  "type": "address"
                }
              ],
              "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": "account",
                  "type": "address"
                }
              ],
              "name": "MinterAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterRemoved",
              "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": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "addMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "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": "value",
                  "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": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "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": [],
              "name": "deploymentChainId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "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": "",
                  "type": "address"
                }
              ],
              "name": "isMinter",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "forwarder",
                  "type": "address"
                }
              ],
              "name": "isTrustedForwarder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "msgData",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "ret",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC20s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "contracts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC721s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransfer",
              "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"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "tokenURI_",
                  "type": "string"
                }
              ],
              "name": "setTokenURI",
              "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": [],
              "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": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "value",
                  "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "6101206040523480156200001257600080fd5b506040516200394c3803806200394c833981810160405260808110156200003857600080fd5b81019080805160405193929190846401000000008211156200005957600080fd5b9083019060208201858111156200006f57600080fd5b82518660208202830111640100000000821117156200008d57600080fd5b82525081516020918201928201910280838360005b83811015620000bc578181015183820152602001620000a2565b5050505090500160405260200180516040519392919084640100000000821115620000e657600080fd5b908301906020820185811115620000fc57600080fd5b82518660208202830111640100000000821117156200011a57600080fd5b82525081516020918201928201910280838360005b83811015620001495781810151838201526020016200012f565b50505050919091016040818152602084810151948201518284018352600a8452694552433230204d6f636b60b01b8285015282518084018452600381526204532360ec1b92810192909252600080546001600160a01b03191633908117825593519698509096509194929350916012918791879187918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606091821b811660a05291901b16608052825162000217906002906020860190620005a7565b5081516200022d906003906020850190620005a7565b507fff0000000000000000000000000000000000000000000000000000000000000060f882901b16610100524660c08190526200026b818562000296565b60e052506200027f92508391505062000320565b506200028c84846200036c565b5050505062000653565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b815181518114620003c4576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000805b82811462000539576000858281518110620003df57fe5b6020026020010151905060006001600160a01b0316816001600160a01b0316141562000452576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b60008583815181106200046157fe5b6020026020010151905080600014620004ed57838101848111620004cc576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600090815260056020526040902080548301905593505b6040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050600101620003c8565b508015620005a1576007548181018181116200059c576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b600755505b50505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620005df57600085556200062a565b82601f10620005fa57805160ff19168380011785556200062a565b828001600101855582156200062a579182015b828111156200062a5782518255916020019190600101906200060d565b50620006389291506200063c565b5090565b5b808211156200063857600081556001016200063d565b60805160601c60a05160601c60c05160e0516101005160f81c61328d620006bf60003980610eac525080610f94525080610ed35280611e0e5250806114df5280612ce7528061303c52508061151a5280612cac5280612d3f5280613012528061309d525061328d6000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c806388d695b21161012a578063b88d4fde116100bd578063d505accf1161008c578063e0df5b6f11610071578063e0df5b6f14610b18578063eb79554914610b88578063f2fde38b14610c0d5761020b565b8063d505accf14610a99578063dd62ed3e14610aea5761020b565b8063b88d4fde146108e5578063c3666c3614610975578063c4c2bfdc14610a89578063cd0d009614610a915761020b565b806398650275116100f9578063986502751461085f578063a457c2d714610867578063a9059cbb14610893578063aa271e1a146108bf5761020b565b806388d695b21461074b5780638da5cb5b1461080d57806395d89b4114610831578063983b2d56146108395761020b565b80633c130d90116101a2578063685731071161017157806368573107146104c457806370a08231146105eb57806373c8a958146106115780637ecebe00146107255761020b565b80633c130d901461039657806340c10f191461039e5780634885b254146103cc578063572b6c051461049e5761020b565b806323b872dd116101de57806323b872dd1461030e578063313ce567146103445780633644e51514610362578063395093511461036a5761020b565b806301ffc9a71461021057806306fdde031461024b578063095ea7b3146102c857806318160ddd146102f4575b600080fd5b6102376004803603602081101561022657600080fd5b50356001600160e01b031916610c33565b604080519115158252519081900360200190f35b610253610dd4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028d578181015183820152602001610275565b50505050905090810190601f1680156102ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610237600480360360408110156102de57600080fd5b506001600160a01b038135169060200135610e68565b6102fc610e85565b60408051918252519081900360200190f35b6102376004803603606081101561032457600080fd5b506001600160a01b03813581169160208101359091169060400135610e8b565b61034c610eaa565b6040805160ff9092168252519081900360200190f35b6102fc610ece565b6102376004803603604081101561038057600080fd5b506001600160a01b038135169060200135610fba565b610253611128565b6103ca600480360360408110156103b457600080fd5b506001600160a01b038135169060200135611189565b005b610237600480360360608110156103e257600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561040d57600080fd5b82018360208201111561041f57600080fd5b8035906020019184602083028401116401000000008311171561044157600080fd5b91939092909160208101903564010000000081111561045f57600080fd5b82018360208201111561047157600080fd5b8035906020019184602083028401116401000000008311171561049357600080fd5b5090925090506111a7565b610237600480360360208110156104b457600080fd5b50356001600160a01b03166114db565b6103ca600480360360408110156104da57600080fd5b8101906020810181356401000000008111156104f557600080fd5b82018360208201111561050757600080fd5b8035906020019184602083028401116401000000008311171561052957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561057957600080fd5b82018360208201111561058b57600080fd5b803590602001918460208302840111640100000000831117156105ad57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611554945050505050565b6102fc6004803603602081101561060157600080fd5b50356001600160a01b0316611569565b6103ca6004803603606081101561062757600080fd5b81019060208101813564010000000081111561064257600080fd5b82018360208201111561065457600080fd5b8035906020019184602083028401116401000000008311171561067657600080fd5b91939092909160208101903564010000000081111561069457600080fd5b8201836020820111156106a657600080fd5b803590602001918460208302840111640100000000831117156106c857600080fd5b9193909290916020810190356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b509092509050611584565b6102fc6004803603602081101561073b57600080fd5b50356001600160a01b0316611676565b6102376004803603604081101561076157600080fd5b81019060208101813564010000000081111561077c57600080fd5b82018360208201111561078e57600080fd5b803590602001918460208302840111640100000000831117156107b057600080fd5b9193909290916020810190356401000000008111156107ce57600080fd5b8201836020820111156107e057600080fd5b8035906020019184602083028401116401000000008311171561080257600080fd5b509092509050611688565b610815611997565b604080516001600160a01b039092168252519081900360200190f35b6102536119a6565b6103ca6004803603602081101561084f57600080fd5b50356001600160a01b0316611a07565b6103ca611a1e565b6102376004803603604081101561087d57600080fd5b506001600160a01b038135169060200135611a7c565b610237600480360360408110156108a957600080fd5b506001600160a01b038135169060200135611aeb565b610237600480360360208110156108d557600080fd5b50356001600160a01b0316611aff565b610237600480360360808110156108fb57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561093657600080fd5b82018360208201111561094857600080fd5b8035906020019184600183028401116401000000008311171561096a57600080fd5b509092509050611b14565b6103ca6004803603606081101561098b57600080fd5b8101906020810181356401000000008111156109a657600080fd5b8201836020820111156109b857600080fd5b803590602001918460208302840111640100000000831117156109da57600080fd5b9193909290916020810190356401000000008111156109f857600080fd5b820183602082011115610a0a57600080fd5b80359060200191846020830284011164010000000083111715610a2c57600080fd5b919390929091602081019035640100000000811115610a4a57600080fd5b820183602082011115610a5c57600080fd5b80359060200191846020830284011164010000000083111715610a7e57600080fd5b509092509050611cb5565b610253611dfd565b6102fc611e0c565b6103ca600480360360e0811015610aaf57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611e30565b6102fc60048036036040811015610b0057600080fd5b506001600160a01b03813581169160200135166120af565b6103ca60048036036020811015610b2e57600080fd5b810190602081018135640100000000811115610b4957600080fd5b820183602082011115610b5b57600080fd5b80359060200191846001830284011164010000000083111715610b7d57600080fd5b5090925090506120da565b61023760048036036060811015610b9e57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135640100000000811115610bce57600080fd5b820183602082011115610be057600080fd5b80359060200191846001830284011164010000000083111715610c0257600080fd5b5090925090506120f6565b6103ca60048036036020811015610c2357600080fd5b50356001600160a01b0316612295565b60006001600160e01b031982167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610c9657506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b80610cca57506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b80610cfe57506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b80610d3257506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b80610d6657506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b80610d9a57506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b80610dce57506001600160e01b031982167f9d8ff7da00000000000000000000000000000000000000000000000000000000145b92915050565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610e5d5780601f10610e3257610100808354040283529160200191610e5d565b820191906000526020600020905b815481529060010190602001808311610e4057829003601f168201915b505050505090505b90565b6000610e7c610e75612306565b8484612310565b50600192915050565b60075490565b6000610ea0610e98612306565b8585856123cd565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610f92576002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152610f8d93859391929091830182828015610f835780601f10610f5857610100808354040283529160200191610f83565b820191906000526020600020905b815481529060010190602001808311610f6657829003601f168201915b5050505050612402565b610fb4565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b60006001600160a01b038316611017576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6000611021612306565b6001600160a01b0380821660009081526006602090815260408083209389168352929052205490915083156110d2578084018181116110a7576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600660209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e5d5780601f10610e3257610100808354040283529160200191610e5d565b611199611194612306565b61248c565b6111a382826124f9565b5050565b6000838281146111fe576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600560205260408120549080805b8481146114105760008a8a8381811061123057fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b031614156112aa576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008989848181106112b857fe5b905060200201359050806000146113bb57848101858111611320576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b03161461135f576001600160a01b03831660009081526005602052604090208054830190556113b9565b868211156113b4576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505060010161121b565b5081158015906114205750808214155b1561149a5781830383811061147c576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260056020526040902090820190555b60006114a4612306565b9050806001600160a01b03168b6001600160a01b0316146114ca576114ca8b828561261c565b5060019a9950505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610dce57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b61155f611194612306565b6111a3828261272b565b6001600160a01b031660009081526005602052604090205490565b61159461158f612306565b61295b565b8483811480156115a357508082145b6115f4576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461166c5761166488888381811061160d57fe5b905060200201356001600160a01b031685858481811061162957fe5b9050602002013588888581811061163c57fe5b905060200201356001600160a01b03166001600160a01b0316612a1f9092919063ffffffff16565b6001016115f7565b5050505050505050565b60016020526000908152604090205481565b6000838281146116df576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60006116e9612306565b6001600160a01b03811660009081526005602052604081205491925080805b8581146118fd5760008b8b8381811061171d57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415611797576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a848181106117a557fe5b905060200201359050806000146118a85784810185811161180d576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b03161461184c576001600160a01b03831660009081526005602052604090208054830190556118a6565b868211156118a1576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101611708565b50811580159061190d5750808214155b1561198757818303838110611969576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260056020526040902090820190555b5060019998505050505050505050565b6000546001600160a01b031690565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e5d5780601f10610e3257610100808354040283529160200191610e5d565b611a1261158f612306565b611a1b81612a9f565b50565b6000611a28612306565b9050611a338161248c565b6001600160a01b038116600081815260086020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b60006001600160a01b038316611ad9576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b610e7c611ae4612306565b848461261c565b6000610e7c611af8612306565b8484612aeb565b60086020526000908152604090205460ff1681565b600080611b1f612306565b9050611b2d818888886123cd565b611b3f866001600160a01b0316612c52565b15611ca8577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015611c2057600080fd5b505af1158015611c34573d6000803e3d6000fd5b505050506040513d6020811015611c4a57600080fd5b50516001600160e01b03191614611ca8576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b611cc061158f612306565b848381148015611ccf57508082145b611d20576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461166c57858582818110611d3657fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a85818110611d6157fe5b905060200201356001600160a01b0316878786818110611d7d57fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015611dda57600080fd5b505af1158015611dee573d6000803e3d6000fd5b50505050806001019050611d23565b6060611e07612c58565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b038716611e8b576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b83421115611ee0576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526001602081815260408084208054938401905580517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280820195909552948b166060850152608084018a905260a084019190915260c08084018990528451808503909101815260e09093019093528151919092012090611f72610ece565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612026573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b031614612098576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b6120a38a8a8a612310565b50505050505050505050565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6120e561158f612306565b6120f16004838361318e565b505050565b600080612101612306565b905061210e818787612aeb565b612120866001600160a01b0316612c52565b15612289577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561220157600080fd5b505af1158015612215573d6000803e3d6000fd5b505050506040513d602081101561222b57600080fd5b50516001600160e01b03191614612289576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b6122a061158f612306565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000611e07612c9c565b6001600160a01b03821661236b576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6123d8838383612aeb565b836001600160a01b0316836001600160a01b0316146123fc576123fc83858361261c565b50505050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b03811660009081526008602052604090205460ff16611a1b576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038216612554576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b60075481156125d6578082018181116125b4576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6007556001600160a01b03831660009081526005602052604090208054830190555b6040805183815290516001600160a01b038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b6001600160a01b03808416600090815260066020908152604080832093861683529290522054600019811480159061265357508115155b156126da578181038181106126af576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260066020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b815181518114612782576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000805b8281146128f057600085828151811061279b57fe5b6020026020010151905060006001600160a01b0316816001600160a01b0316141561280d576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b600085838151811061281b57fe5b60200260200101519050806000146128a557838101848111612884576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600090815260056020526040902080548301905593505b6040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050600101612786565b5080156123fc57600754818101818111612951576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6007555050505050565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561299457600080fd5b505afa1580156129a8573d6000803e3d6000fd5b505050506040513d60208110156129be57600080fd5b50516001600160a01b03828116911614611a1b576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526120f1908490612dfc565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6001600160a01b038216612b46576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b8015612c02576001600160a01b038316600090815260056020526040902054818103818110612bbc576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b031614612bff576001600160a01b038086166000908152600560205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b151590565b6060612c62613004565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b60003381612ca8613167565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480612d1b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15612d29579150610e659050565b6001600160a01b0382163214801590612de857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015612dbb57600080fd5b505afa158015612dcf573d6000803e3d6000fd5b505050506040513d6020811015612de557600080fd5b50515b15612df6579150610e659050565b50905090565b81612e0f6001600160a01b038216612c52565b612e60576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b60208310612ebb57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612e7e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612f1d576040519150601f19603f3d011682016040523d82523d6000602084013e612f22565b606091505b50915091508115612fa157805115612f9c57808060200190516020811015612f4957600080fd5b5051612f9c576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b612ffd565b8051612ff4576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b366000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681148061307057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156130875761307d613173565b9250925050613163565b6001600160a01b038116321480159061314d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d66130d2613167565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561312057600080fd5b505afa158015613134573d6000803e3d6000fd5b505050506040513d602081101561314a57600080fd5b50515b1561315a5761307d613173565b60003692509250505b9091565b60131936013560601c90565b366000613186601319830182848161322f565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826131c4576000855561320a565b82601f106131dd5782800160ff1982351617855561320a565b8280016001018555821561320a579182015b8281111561320a5782358255916020019190600101906131ef565b5061321692915061321a565b5090565b5b80821115613216576000815560010161321b565b6000808585111561323e578182fd5b8386111561324a578182fd5b505082019391909203915056fea2646970667358221220a39d7e7f1342826d94dae927e622993a0c873a506b052cadfff037a398b30bc964736f6c63430007060033",
              "opcodes": "PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x394C CODESIZE SUB DUP1 PUSH3 0x394C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xBC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0xE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x11A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x149 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x12F JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 DUP5 DUP2 ADD MLOAD SWAP5 DUP3 ADD MLOAD DUP3 DUP5 ADD DUP4 MSTORE PUSH1 0xA DUP5 MSTORE PUSH10 0x4552433230204D6F636B PUSH1 0xB0 SHL DUP3 DUP6 ADD MSTORE DUP3 MLOAD DUP1 DUP5 ADD DUP5 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x45323 PUSH1 0xEC SHL SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE SWAP4 MLOAD SWAP7 SWAP9 POP SWAP1 SWAP7 POP SWAP2 SWAP5 SWAP3 SWAP4 POP SWAP2 PUSH1 0x12 SWAP2 DUP8 SWAP2 DUP8 SWAP2 DUP8 SWAP2 DUP3 SWAP2 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0x80 MSTORE DUP3 MLOAD PUSH3 0x217 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP7 ADD SWAP1 PUSH3 0x5A7 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x22D SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x5A7 JUMP JUMPDEST POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF8 DUP3 SWAP1 SHL AND PUSH2 0x100 MSTORE CHAINID PUSH1 0xC0 DUP2 SWAP1 MSTORE PUSH3 0x26B DUP2 DUP6 PUSH3 0x296 JUMP JUMPDEST PUSH1 0xE0 MSTORE POP PUSH3 0x27F SWAP3 POP DUP4 SWAP2 POP POP PUSH3 0x320 JUMP JUMPDEST POP PUSH3 0x28C DUP5 DUP5 PUSH3 0x36C JUMP JUMPDEST POP POP POP POP PUSH3 0x653 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH3 0x3C4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 EQ PUSH3 0x539 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x3DF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x452 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x461 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH3 0x4ED JUMPI DUP4 DUP2 ADD DUP5 DUP2 GT PUSH3 0x4CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE SWAP4 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH3 0x3C8 JUMP JUMPDEST POP DUP1 ISZERO PUSH3 0x5A1 JUMPI PUSH1 0x7 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH3 0x59C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE POP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x5DF JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x62A JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x5FA JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x62A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x62A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x62A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x60D JUMP JUMPDEST POP PUSH3 0x638 SWAP3 SWAP2 POP PUSH3 0x63C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x638 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x63D JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH1 0xF8 SHR PUSH2 0x328D PUSH3 0x6BF PUSH1 0x0 CODECOPY DUP1 PUSH2 0xEAC MSTORE POP DUP1 PUSH2 0xF94 MSTORE POP DUP1 PUSH2 0xED3 MSTORE DUP1 PUSH2 0x1E0E MSTORE POP DUP1 PUSH2 0x14DF MSTORE DUP1 PUSH2 0x2CE7 MSTORE DUP1 PUSH2 0x303C MSTORE POP DUP1 PUSH2 0x151A MSTORE DUP1 PUSH2 0x2CAC MSTORE DUP1 PUSH2 0x2D3F MSTORE DUP1 PUSH2 0x3012 MSTORE DUP1 PUSH2 0x309D MSTORE POP PUSH2 0x328D 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 0x20B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x88D695B2 GT PUSH2 0x12A JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE0DF5B6F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE0DF5B6F EQ PUSH2 0xB18 JUMPI DUP1 PUSH4 0xEB795549 EQ PUSH2 0xB88 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xC0D JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0xD505ACCF EQ PUSH2 0xA99 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xAEA JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x8E5 JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0x975 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0xA89 JUMPI DUP1 PUSH4 0xCD0D0096 EQ PUSH2 0xA91 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x98650275 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0x85F JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x867 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x893 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0x8BF JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x88D695B2 EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x80D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x831 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x839 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x3C130D90 GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x68573107 GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x68573107 EQ PUSH2 0x4C4 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x5EB JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x611 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x725 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x3C130D90 EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x39E JUMPI DUP1 PUSH4 0x4885B254 EQ PUSH2 0x3CC JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x49E JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x1DE JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x344 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x36A JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x24B JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2C8 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2F4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xC33 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x253 PUSH2 0xDD4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x275 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2BA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xE68 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0xE85 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xE8B JUMP JUMPDEST PUSH2 0x34C PUSH2 0xEAA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2FC PUSH2 0xECE JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFBA JUMP JUMPDEST PUSH2 0x253 PUSH2 0x1128 JUMP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1189 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x41F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x45F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x493 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11A7 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14DB JUMP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x529 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1554 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1569 JUMP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x627 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x642 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x654 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x71A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1584 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x73B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1676 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x77C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x78E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x7CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1688 JUMP JUMPDEST PUSH2 0x815 PUSH2 0x1997 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x253 PUSH2 0x19A6 JUMP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x84F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A07 JUMP JUMPDEST PUSH2 0x3CA PUSH2 0x1A1E JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x87D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1A7C JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1AEB JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AFF JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x8FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x948 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x96A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1B14 JUMP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x98B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1CB5 JUMP JUMPDEST PUSH2 0x253 PUSH2 0x1DFD JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x1E0C JUMP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xAAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1E30 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x20AF JUMP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x20DA JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xB9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xC02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x20F6 JUMP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2295 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xC96 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x36372B0700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xCCA JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xA219A02500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xCFE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x3C130D9000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xD32 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D07518600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xD66 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xC05327E600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xD9A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x53F41A9700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xDCE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D8FF7DA00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE5D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE32 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE5D 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 0xE40 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7C PUSH2 0xE75 PUSH2 0x2306 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2310 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA0 PUSH2 0xE98 PUSH2 0x2306 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x23CD JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 DUP2 EQ PUSH2 0xF92 JUMPI PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE PUSH2 0xF8D SWAP4 DUP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xF83 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF58 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF83 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 0xF66 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x2402 JUMP JUMPDEST PUSH2 0xFB4 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1017 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1021 PUSH2 0x2306 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP4 ISZERO PUSH2 0x10D2 JUMPI DUP1 DUP5 ADD DUP2 DUP2 GT PUSH2 0x10A7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20616C6C6F77616E6365206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE5D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE32 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE5D JUMP JUMPDEST PUSH2 0x1199 PUSH2 0x1194 PUSH2 0x2306 JUMP JUMPDEST PUSH2 0x248C JUMP JUMPDEST PUSH2 0x11A3 DUP3 DUP3 PUSH2 0x24F9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x11FE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP1 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0x1410 JUMPI PUSH1 0x0 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0x1230 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x12AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0x12B8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x13BB JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x1320 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x135F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x13B9 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x13B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x121B JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1420 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x149A JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x147C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0x14A4 PUSH2 0x2306 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x14CA JUMPI PUSH2 0x14CA DUP12 DUP3 DUP6 PUSH2 0x261C JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xDCE JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x155F PUSH2 0x1194 PUSH2 0x2306 JUMP JUMPDEST PUSH2 0x11A3 DUP3 DUP3 PUSH2 0x272B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1594 PUSH2 0x158F PUSH2 0x2306 JUMP JUMPDEST PUSH2 0x295B JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x15A3 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x15F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x166C JUMPI PUSH2 0x1664 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x160D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1629 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x163C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A1F SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x15F7 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x16DF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x16E9 PUSH2 0x2306 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP DUP1 DUP1 JUMPDEST DUP6 DUP2 EQ PUSH2 0x18FD JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x171D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1797 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x17A5 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x18A8 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x180D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x184C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x18A6 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x18A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x1708 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x190D JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x1987 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x1969 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE5D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE32 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE5D JUMP JUMPDEST PUSH2 0x1A12 PUSH2 0x158F PUSH2 0x2306 JUMP JUMPDEST PUSH2 0x1A1B DUP2 PUSH2 0x2A9F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A28 PUSH2 0x2306 JUMP JUMPDEST SWAP1 POP PUSH2 0x1A33 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1AD9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE7C PUSH2 0x1AE4 PUSH2 0x2306 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x261C JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7C PUSH2 0x1AF8 PUSH2 0x2306 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2AEB JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B1F PUSH2 0x2306 JUMP JUMPDEST SWAP1 POP PUSH2 0x1B2D DUP2 DUP9 DUP9 DUP9 PUSH2 0x23CD JUMP JUMPDEST PUSH2 0x1B3F DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C52 JUMP JUMPDEST ISZERO PUSH2 0x1CA8 JUMPI PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C34 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1CA8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1CC0 PUSH2 0x158F PUSH2 0x2306 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1CCF JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1D20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x166C JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x1D36 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x1D61 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x1D7D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1DEE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x1D23 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1E07 PUSH2 0x2C58 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x1E8B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373206F776E657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x1EE0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2065787069726564207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD SWAP4 DUP5 ADD SWAP1 SSTORE DUP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP5 ADD MSTORE DUP1 DUP3 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP5 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xC0 DUP1 DUP5 ADD DUP10 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 SWAP1 SWAP4 ADD SWAP1 SWAP4 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 SWAP1 PUSH2 0x1F72 PUSH2 0xECE JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2026 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2098 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E76616C6964207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x20A3 DUP11 DUP11 DUP11 PUSH2 0x2310 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 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 0x20E5 PUSH2 0x158F PUSH2 0x2306 JUMP JUMPDEST PUSH2 0x20F1 PUSH1 0x4 DUP4 DUP4 PUSH2 0x318E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2101 PUSH2 0x2306 JUMP JUMPDEST SWAP1 POP PUSH2 0x210E DUP2 DUP8 DUP8 PUSH2 0x2AEB JUMP JUMPDEST PUSH2 0x2120 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C52 JUMP JUMPDEST ISZERO PUSH2 0x2289 JUMPI PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP5 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2215 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x222B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x2289 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x22A0 PUSH2 0x158F PUSH2 0x2306 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E07 PUSH2 0x2C9C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x236B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 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 DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x23D8 DUP4 DUP4 DUP4 PUSH2 0x2AEB JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x23FC JUMPI PUSH2 0x23FC DUP4 DUP6 DUP4 PUSH2 0x261C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1A1B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2554 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD DUP2 ISZERO PUSH2 0x25D6 JUMPI DUP1 DUP3 ADD DUP2 DUP2 GT PUSH2 0x25B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2653 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x26DA JUMPI DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x26AF JUMPI PUSH1 0x40 DUP1 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 SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x2782 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 EQ PUSH2 0x28F0 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x279B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x280D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x281B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x28A5 JUMPI DUP4 DUP2 ADD DUP5 DUP2 GT PUSH2 0x2884 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE SWAP4 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x2786 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x23FC JUMPI PUSH1 0x7 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x2951 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE POP POP POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1A1B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x20F1 SWAP1 DUP5 SWAP1 PUSH2 0x2DFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2B46 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x2C02 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x2BBC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2BFF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP7 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE JUMPDEST POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2C62 PUSH2 0x3004 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x2CA8 PUSH2 0x3167 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2D1B JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x2D29 JUMPI SWAP2 POP PUSH2 0xE65 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x2DE8 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DCF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x2DF6 JUMPI SWAP2 POP PUSH2 0xE65 SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x2E0F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2C52 JUMP JUMPDEST PUSH2 0x2E60 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2EBB JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2E7E JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2F1D 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 0x2F22 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x2FA1 JUMPI DUP1 MLOAD ISZERO PUSH2 0x2F9C JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2F9C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2FFD JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2FF4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x3070 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x3087 JUMPI PUSH2 0x307D PUSH2 0x3173 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x3163 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x314D JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x30D2 PUSH2 0x3167 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3134 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x314A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x315A JUMPI PUSH2 0x307D PUSH2 0x3173 JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x3186 PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x322F JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x31C4 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x320A JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x31DD JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x320A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x320A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x320A JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x31EF JUMP JUMPDEST POP PUSH2 0x3216 SWAP3 SWAP2 POP PUSH2 0x321A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3216 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x321B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x323E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x324A JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 SWAP14 PUSH31 0x7F1342826D94DAE927E622993A0C873A506B052CADFFF037A398B30BC96473 PUSH16 0x6C634300070600330000000000000000 ",
              "sourceMap": "722:2236:52:-:0;;;823:335;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;823:335:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;823:335:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;823:335:52;;;;;;;;;;;;;;;;;1934:394:38;;;;;;;;-1:-1:-1;;;1934:394:38;;;;;;;;;;;;;;-1:-1:-1;;;1934:394:38;;;;;;;-1:-1:-1;960:15:2;;-1:-1:-1;;;;;;960:15:2;1035:10:52;960:15:2;;;;;990:40;;823:335:52;;-1:-1:-1;823:335:52;;-1:-1:-1;1035:10:52;;823:335;;-1:-1:-1;1934:394:38;1020:2:52;;823:335;;;;1035:10;;;;-1:-1:-1;990:40:2;;-1:-1:-1;;990:40:2;-1:-1:-1;;;;;;;443:40:85;;;;;;;;493:38;;;;;;2047:13:38;;;;:5;;-1:-1:-1;2047:13:38;;;;:::i;:::-;-1:-1:-1;2070:17:38;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;2097:21:38;;;;;;;;2188:9;2216:27;;;;2273:48;2188:9;2314:5;2273:25;:48::i;:::-;2253:68;;-1:-1:-1;476:18:1::1;::::0;-1:-1:-1;487:6:1;;-1:-1:-1;;476:10:1::1;:18::i;:::-;-1:-1:-1::0;1121:30:52::3;1132:10:::0;1144:6;1121:10:::3;:30::i;:::-;823:335:::0;;;;722:2236;;17687:463:38;17995:16;;;;;;;17846:283;;;17878:95;17846:283;;;;;;;;;;;18033:14;17846:283;;;;;;;;;;;18106:4;17846:283;;;;;;;;;;;;;;;;;;;;;;;;;17819:324;;;;;;17687:463::o;1252:122:1:-;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;14720:1045:38:-;14838:17;;14883:13;;14873:23;;14865:62;;;;;-1:-1:-1;;;14865:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14938:18;14971:9;14966:550;14987:6;14982:1;:11;14966:550;;15014:10;15027;15038:1;15027:13;;;;;;;;;;;;;;15014:26;;15076:1;-1:-1:-1;;;;;15062:16:38;:2;-1:-1:-1;;;;;15062:16:38;;;15054:48;;;;;-1:-1:-1;;;15054:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;15117:13;15133:6;15140:1;15133:9;;;;;;;;;;;;;;15117:25;;15160:5;15169:1;15160:10;15156:300;;15214:18;;;15258:26;;;15250:61;;;;;-1:-1:-1;;;15250:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15373:13:38;;;;;;:9;:13;;;;;:22;;;;;;15342:13;-1:-1:-1;15156:300:38;15474:31;;;;;;;;-1:-1:-1;;;;;15474:31:38;;;15491:1;;15474:31;;;;;;;;;-1:-1:-1;;14995:3:38;;14966:550;;;-1:-1:-1;15530:15:38;;15526:233;;15578:12;;15624:19;;;15665:18;;;15657:53;;;;;-1:-1:-1;;;15657:53:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;15724:12;:24;-1:-1:-1;15526:233:38;14720:1045;;;;:::o;722:2236:52:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;722:2236:52;;;-1:-1:-1;722:2236:52;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:379:86",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:86",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "144:233:86",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "182:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "191:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "202:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "184:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "184:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "184:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "160:10:86"
                                  },
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "172:8:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "157:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "157:24:86"
                              },
                              "nodeType": "YulIf",
                              "src": "154:2:86"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "247:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "256:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "267:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "249:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "249:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "229:8:86"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "239:6:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "226:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "226:20:86"
                              },
                              "nodeType": "YulIf",
                              "src": "223:2:86"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "288:36:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "305:6:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "313:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "301:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "301:23:86"
                              },
                              "variableNames": [
                                {
                                  "name": "offsetOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "288:9:86"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "333:38:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "350:8:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "360:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "346:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "346:25:86"
                              },
                              "variableNames": [
                                {
                                  "name": "lengthOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:9:86"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "78:6:86",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "86:6:86",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "94:10:86",
                            "type": ""
                          },
                          {
                            "name": "endIndex",
                            "nodeType": "YulTypedName",
                            "src": "106:8:86",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "offsetOut",
                            "nodeType": "YulTypedName",
                            "src": "119:9:86",
                            "type": ""
                          },
                          {
                            "name": "lengthOut",
                            "nodeType": "YulTypedName",
                            "src": "130:9:86",
                            "type": ""
                          }
                        ],
                        "src": "14:363:86"
                      }
                    ]
                  },
                  "contents": "{\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(offsetOut, offsetOut) }\n        if gt(endIndex, length) { revert(offsetOut, offsetOut) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n}",
                  "id": 86,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "8178": [
                  {
                    "length": 32,
                    "start": 3795
                  },
                  {
                    "length": 32,
                    "start": 7694
                  }
                ],
                "8180": [
                  {
                    "length": 32,
                    "start": 3988
                  }
                ],
                "8192": [
                  {
                    "length": 32,
                    "start": 3756
                  }
                ],
                "15042": [
                  {
                    "length": 32,
                    "start": 5402
                  },
                  {
                    "length": 32,
                    "start": 11436
                  },
                  {
                    "length": 32,
                    "start": 11583
                  },
                  {
                    "length": 32,
                    "start": 12306
                  },
                  {
                    "length": 32,
                    "start": 12445
                  }
                ],
                "15044": [
                  {
                    "length": 32,
                    "start": 5343
                  },
                  {
                    "length": 32,
                    "start": 11495
                  },
                  {
                    "length": 32,
                    "start": 12348
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061020b5760003560e01c806388d695b21161012a578063b88d4fde116100bd578063d505accf1161008c578063e0df5b6f11610071578063e0df5b6f14610b18578063eb79554914610b88578063f2fde38b14610c0d5761020b565b8063d505accf14610a99578063dd62ed3e14610aea5761020b565b8063b88d4fde146108e5578063c3666c3614610975578063c4c2bfdc14610a89578063cd0d009614610a915761020b565b806398650275116100f9578063986502751461085f578063a457c2d714610867578063a9059cbb14610893578063aa271e1a146108bf5761020b565b806388d695b21461074b5780638da5cb5b1461080d57806395d89b4114610831578063983b2d56146108395761020b565b80633c130d90116101a2578063685731071161017157806368573107146104c457806370a08231146105eb57806373c8a958146106115780637ecebe00146107255761020b565b80633c130d901461039657806340c10f191461039e5780634885b254146103cc578063572b6c051461049e5761020b565b806323b872dd116101de57806323b872dd1461030e578063313ce567146103445780633644e51514610362578063395093511461036a5761020b565b806301ffc9a71461021057806306fdde031461024b578063095ea7b3146102c857806318160ddd146102f4575b600080fd5b6102376004803603602081101561022657600080fd5b50356001600160e01b031916610c33565b604080519115158252519081900360200190f35b610253610dd4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028d578181015183820152602001610275565b50505050905090810190601f1680156102ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610237600480360360408110156102de57600080fd5b506001600160a01b038135169060200135610e68565b6102fc610e85565b60408051918252519081900360200190f35b6102376004803603606081101561032457600080fd5b506001600160a01b03813581169160208101359091169060400135610e8b565b61034c610eaa565b6040805160ff9092168252519081900360200190f35b6102fc610ece565b6102376004803603604081101561038057600080fd5b506001600160a01b038135169060200135610fba565b610253611128565b6103ca600480360360408110156103b457600080fd5b506001600160a01b038135169060200135611189565b005b610237600480360360608110156103e257600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561040d57600080fd5b82018360208201111561041f57600080fd5b8035906020019184602083028401116401000000008311171561044157600080fd5b91939092909160208101903564010000000081111561045f57600080fd5b82018360208201111561047157600080fd5b8035906020019184602083028401116401000000008311171561049357600080fd5b5090925090506111a7565b610237600480360360208110156104b457600080fd5b50356001600160a01b03166114db565b6103ca600480360360408110156104da57600080fd5b8101906020810181356401000000008111156104f557600080fd5b82018360208201111561050757600080fd5b8035906020019184602083028401116401000000008311171561052957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561057957600080fd5b82018360208201111561058b57600080fd5b803590602001918460208302840111640100000000831117156105ad57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611554945050505050565b6102fc6004803603602081101561060157600080fd5b50356001600160a01b0316611569565b6103ca6004803603606081101561062757600080fd5b81019060208101813564010000000081111561064257600080fd5b82018360208201111561065457600080fd5b8035906020019184602083028401116401000000008311171561067657600080fd5b91939092909160208101903564010000000081111561069457600080fd5b8201836020820111156106a657600080fd5b803590602001918460208302840111640100000000831117156106c857600080fd5b9193909290916020810190356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b509092509050611584565b6102fc6004803603602081101561073b57600080fd5b50356001600160a01b0316611676565b6102376004803603604081101561076157600080fd5b81019060208101813564010000000081111561077c57600080fd5b82018360208201111561078e57600080fd5b803590602001918460208302840111640100000000831117156107b057600080fd5b9193909290916020810190356401000000008111156107ce57600080fd5b8201836020820111156107e057600080fd5b8035906020019184602083028401116401000000008311171561080257600080fd5b509092509050611688565b610815611997565b604080516001600160a01b039092168252519081900360200190f35b6102536119a6565b6103ca6004803603602081101561084f57600080fd5b50356001600160a01b0316611a07565b6103ca611a1e565b6102376004803603604081101561087d57600080fd5b506001600160a01b038135169060200135611a7c565b610237600480360360408110156108a957600080fd5b506001600160a01b038135169060200135611aeb565b610237600480360360208110156108d557600080fd5b50356001600160a01b0316611aff565b610237600480360360808110156108fb57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561093657600080fd5b82018360208201111561094857600080fd5b8035906020019184600183028401116401000000008311171561096a57600080fd5b509092509050611b14565b6103ca6004803603606081101561098b57600080fd5b8101906020810181356401000000008111156109a657600080fd5b8201836020820111156109b857600080fd5b803590602001918460208302840111640100000000831117156109da57600080fd5b9193909290916020810190356401000000008111156109f857600080fd5b820183602082011115610a0a57600080fd5b80359060200191846020830284011164010000000083111715610a2c57600080fd5b919390929091602081019035640100000000811115610a4a57600080fd5b820183602082011115610a5c57600080fd5b80359060200191846020830284011164010000000083111715610a7e57600080fd5b509092509050611cb5565b610253611dfd565b6102fc611e0c565b6103ca600480360360e0811015610aaf57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611e30565b6102fc60048036036040811015610b0057600080fd5b506001600160a01b03813581169160200135166120af565b6103ca60048036036020811015610b2e57600080fd5b810190602081018135640100000000811115610b4957600080fd5b820183602082011115610b5b57600080fd5b80359060200191846001830284011164010000000083111715610b7d57600080fd5b5090925090506120da565b61023760048036036060811015610b9e57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135640100000000811115610bce57600080fd5b820183602082011115610be057600080fd5b80359060200191846001830284011164010000000083111715610c0257600080fd5b5090925090506120f6565b6103ca60048036036020811015610c2357600080fd5b50356001600160a01b0316612295565b60006001600160e01b031982167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610c9657506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b80610cca57506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b80610cfe57506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b80610d3257506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b80610d6657506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b80610d9a57506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b80610dce57506001600160e01b031982167f9d8ff7da00000000000000000000000000000000000000000000000000000000145b92915050565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610e5d5780601f10610e3257610100808354040283529160200191610e5d565b820191906000526020600020905b815481529060010190602001808311610e4057829003601f168201915b505050505090505b90565b6000610e7c610e75612306565b8484612310565b50600192915050565b60075490565b6000610ea0610e98612306565b8585856123cd565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610f92576002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152610f8d93859391929091830182828015610f835780601f10610f5857610100808354040283529160200191610f83565b820191906000526020600020905b815481529060010190602001808311610f6657829003601f168201915b5050505050612402565b610fb4565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b60006001600160a01b038316611017576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6000611021612306565b6001600160a01b0380821660009081526006602090815260408083209389168352929052205490915083156110d2578084018181116110a7576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600660209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e5d5780601f10610e3257610100808354040283529160200191610e5d565b611199611194612306565b61248c565b6111a382826124f9565b5050565b6000838281146111fe576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600560205260408120549080805b8481146114105760008a8a8381811061123057fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b031614156112aa576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008989848181106112b857fe5b905060200201359050806000146113bb57848101858111611320576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b03161461135f576001600160a01b03831660009081526005602052604090208054830190556113b9565b868211156113b4576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505060010161121b565b5081158015906114205750808214155b1561149a5781830383811061147c576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260056020526040902090820190555b60006114a4612306565b9050806001600160a01b03168b6001600160a01b0316146114ca576114ca8b828561261c565b5060019a9950505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610dce57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b61155f611194612306565b6111a3828261272b565b6001600160a01b031660009081526005602052604090205490565b61159461158f612306565b61295b565b8483811480156115a357508082145b6115f4576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461166c5761166488888381811061160d57fe5b905060200201356001600160a01b031685858481811061162957fe5b9050602002013588888581811061163c57fe5b905060200201356001600160a01b03166001600160a01b0316612a1f9092919063ffffffff16565b6001016115f7565b5050505050505050565b60016020526000908152604090205481565b6000838281146116df576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60006116e9612306565b6001600160a01b03811660009081526005602052604081205491925080805b8581146118fd5760008b8b8381811061171d57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415611797576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a848181106117a557fe5b905060200201359050806000146118a85784810185811161180d576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b03161461184c576001600160a01b03831660009081526005602052604090208054830190556118a6565b868211156118a1576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101611708565b50811580159061190d5750808214155b1561198757818303838110611969576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260056020526040902090820190555b5060019998505050505050505050565b6000546001600160a01b031690565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e5d5780601f10610e3257610100808354040283529160200191610e5d565b611a1261158f612306565b611a1b81612a9f565b50565b6000611a28612306565b9050611a338161248c565b6001600160a01b038116600081815260086020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b60006001600160a01b038316611ad9576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b610e7c611ae4612306565b848461261c565b6000610e7c611af8612306565b8484612aeb565b60086020526000908152604090205460ff1681565b600080611b1f612306565b9050611b2d818888886123cd565b611b3f866001600160a01b0316612c52565b15611ca8577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015611c2057600080fd5b505af1158015611c34573d6000803e3d6000fd5b505050506040513d6020811015611c4a57600080fd5b50516001600160e01b03191614611ca8576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b611cc061158f612306565b848381148015611ccf57508082145b611d20576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461166c57858582818110611d3657fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a85818110611d6157fe5b905060200201356001600160a01b0316878786818110611d7d57fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015611dda57600080fd5b505af1158015611dee573d6000803e3d6000fd5b50505050806001019050611d23565b6060611e07612c58565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b038716611e8b576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b83421115611ee0576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526001602081815260408084208054938401905580517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280820195909552948b166060850152608084018a905260a084019190915260c08084018990528451808503909101815260e09093019093528151919092012090611f72610ece565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612026573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b031614612098576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b6120a38a8a8a612310565b50505050505050505050565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6120e561158f612306565b6120f16004838361318e565b505050565b600080612101612306565b905061210e818787612aeb565b612120866001600160a01b0316612c52565b15612289577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561220157600080fd5b505af1158015612215573d6000803e3d6000fd5b505050506040513d602081101561222b57600080fd5b50516001600160e01b03191614612289576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b6122a061158f612306565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000611e07612c9c565b6001600160a01b03821661236b576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6123d8838383612aeb565b836001600160a01b0316836001600160a01b0316146123fc576123fc83858361261c565b50505050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b03811660009081526008602052604090205460ff16611a1b576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038216612554576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b60075481156125d6578082018181116125b4576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6007556001600160a01b03831660009081526005602052604090208054830190555b6040805183815290516001600160a01b038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b6001600160a01b03808416600090815260066020908152604080832093861683529290522054600019811480159061265357508115155b156126da578181038181106126af576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260066020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b815181518114612782576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000805b8281146128f057600085828151811061279b57fe5b6020026020010151905060006001600160a01b0316816001600160a01b0316141561280d576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b600085838151811061281b57fe5b60200260200101519050806000146128a557838101848111612884576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600090815260056020526040902080548301905593505b6040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050600101612786565b5080156123fc57600754818101818111612951576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6007555050505050565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561299457600080fd5b505afa1580156129a8573d6000803e3d6000fd5b505050506040513d60208110156129be57600080fd5b50516001600160a01b03828116911614611a1b576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526120f1908490612dfc565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6001600160a01b038216612b46576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b8015612c02576001600160a01b038316600090815260056020526040902054818103818110612bbc576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b031614612bff576001600160a01b038086166000908152600560205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b151590565b6060612c62613004565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b60003381612ca8613167565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480612d1b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15612d29579150610e659050565b6001600160a01b0382163214801590612de857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015612dbb57600080fd5b505afa158015612dcf573d6000803e3d6000fd5b505050506040513d6020811015612de557600080fd5b50515b15612df6579150610e659050565b50905090565b81612e0f6001600160a01b038216612c52565b612e60576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b60208310612ebb57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612e7e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612f1d576040519150601f19603f3d011682016040523d82523d6000602084013e612f22565b606091505b50915091508115612fa157805115612f9c57808060200190516020811015612f4957600080fd5b5051612f9c576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b612ffd565b8051612ff4576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b366000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681148061307057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156130875761307d613173565b9250925050613163565b6001600160a01b038116321480159061314d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d66130d2613167565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561312057600080fd5b505afa158015613134573d6000803e3d6000fd5b505050506040513d602081101561314a57600080fd5b50515b1561315a5761307d613173565b60003692509250505b9091565b60131936013560601c90565b366000613186601319830182848161322f565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826131c4576000855561320a565b82601f106131dd5782800160ff1982351617855561320a565b8280016001018555821561320a579182015b8281111561320a5782358255916020019190600101906131ef565b5061321692915061321a565b5090565b5b80821115613216576000815560010161321b565b6000808585111561323e578182fd5b8386111561324a578182fd5b505082019391909203915056fea2646970667358221220a39d7e7f1342826d94dae927e622993a0c873a506b052cadfff037a398b30bc964736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x20B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x88D695B2 GT PUSH2 0x12A JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE0DF5B6F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE0DF5B6F EQ PUSH2 0xB18 JUMPI DUP1 PUSH4 0xEB795549 EQ PUSH2 0xB88 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xC0D JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0xD505ACCF EQ PUSH2 0xA99 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xAEA JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x8E5 JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0x975 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0xA89 JUMPI DUP1 PUSH4 0xCD0D0096 EQ PUSH2 0xA91 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x98650275 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0x85F JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x867 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x893 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0x8BF JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x88D695B2 EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x80D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x831 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x839 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x3C130D90 GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x68573107 GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x68573107 EQ PUSH2 0x4C4 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x5EB JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x611 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x725 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x3C130D90 EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x39E JUMPI DUP1 PUSH4 0x4885B254 EQ PUSH2 0x3CC JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x49E JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x1DE JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x344 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x36A JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x24B JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2C8 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2F4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xC33 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x253 PUSH2 0xDD4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x275 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2BA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xE68 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0xE85 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xE8B JUMP JUMPDEST PUSH2 0x34C PUSH2 0xEAA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2FC PUSH2 0xECE JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFBA JUMP JUMPDEST PUSH2 0x253 PUSH2 0x1128 JUMP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1189 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x41F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x45F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x493 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11A7 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14DB JUMP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x529 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1554 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1569 JUMP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x627 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x642 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x654 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x71A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1584 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x73B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1676 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x77C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x78E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x7CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1688 JUMP JUMPDEST PUSH2 0x815 PUSH2 0x1997 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x253 PUSH2 0x19A6 JUMP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x84F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A07 JUMP JUMPDEST PUSH2 0x3CA PUSH2 0x1A1E JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x87D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1A7C JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1AEB JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AFF JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x8FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x948 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x96A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1B14 JUMP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x98B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1CB5 JUMP JUMPDEST PUSH2 0x253 PUSH2 0x1DFD JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x1E0C JUMP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xAAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1E30 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x20AF JUMP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x20DA JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xB9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xC02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x20F6 JUMP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2295 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xC96 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x36372B0700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xCCA JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xA219A02500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xCFE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x3C130D9000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xD32 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D07518600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xD66 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xC05327E600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xD9A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x53F41A9700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xDCE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D8FF7DA00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE5D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE32 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE5D 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 0xE40 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7C PUSH2 0xE75 PUSH2 0x2306 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2310 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA0 PUSH2 0xE98 PUSH2 0x2306 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x23CD JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 DUP2 EQ PUSH2 0xF92 JUMPI PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE PUSH2 0xF8D SWAP4 DUP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xF83 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF58 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF83 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 0xF66 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x2402 JUMP JUMPDEST PUSH2 0xFB4 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1017 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1021 PUSH2 0x2306 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP4 ISZERO PUSH2 0x10D2 JUMPI DUP1 DUP5 ADD DUP2 DUP2 GT PUSH2 0x10A7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20616C6C6F77616E6365206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE5D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE32 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE5D JUMP JUMPDEST PUSH2 0x1199 PUSH2 0x1194 PUSH2 0x2306 JUMP JUMPDEST PUSH2 0x248C JUMP JUMPDEST PUSH2 0x11A3 DUP3 DUP3 PUSH2 0x24F9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x11FE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP1 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0x1410 JUMPI PUSH1 0x0 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0x1230 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x12AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0x12B8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x13BB JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x1320 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x135F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x13B9 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x13B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x121B JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1420 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x149A JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x147C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0x14A4 PUSH2 0x2306 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x14CA JUMPI PUSH2 0x14CA DUP12 DUP3 DUP6 PUSH2 0x261C JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xDCE JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x155F PUSH2 0x1194 PUSH2 0x2306 JUMP JUMPDEST PUSH2 0x11A3 DUP3 DUP3 PUSH2 0x272B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1594 PUSH2 0x158F PUSH2 0x2306 JUMP JUMPDEST PUSH2 0x295B JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x15A3 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x15F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x166C JUMPI PUSH2 0x1664 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x160D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1629 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x163C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A1F SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x15F7 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x16DF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x16E9 PUSH2 0x2306 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP DUP1 DUP1 JUMPDEST DUP6 DUP2 EQ PUSH2 0x18FD JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x171D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1797 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x17A5 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x18A8 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x180D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x184C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x18A6 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x18A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x1708 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x190D JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x1987 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x1969 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE5D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE32 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE5D JUMP JUMPDEST PUSH2 0x1A12 PUSH2 0x158F PUSH2 0x2306 JUMP JUMPDEST PUSH2 0x1A1B DUP2 PUSH2 0x2A9F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A28 PUSH2 0x2306 JUMP JUMPDEST SWAP1 POP PUSH2 0x1A33 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1AD9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE7C PUSH2 0x1AE4 PUSH2 0x2306 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x261C JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7C PUSH2 0x1AF8 PUSH2 0x2306 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2AEB JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B1F PUSH2 0x2306 JUMP JUMPDEST SWAP1 POP PUSH2 0x1B2D DUP2 DUP9 DUP9 DUP9 PUSH2 0x23CD JUMP JUMPDEST PUSH2 0x1B3F DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C52 JUMP JUMPDEST ISZERO PUSH2 0x1CA8 JUMPI PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C34 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1CA8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1CC0 PUSH2 0x158F PUSH2 0x2306 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1CCF JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1D20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x166C JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x1D36 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x1D61 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x1D7D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1DEE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x1D23 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1E07 PUSH2 0x2C58 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x1E8B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373206F776E657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x1EE0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2065787069726564207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD SWAP4 DUP5 ADD SWAP1 SSTORE DUP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP5 ADD MSTORE DUP1 DUP3 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP5 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xC0 DUP1 DUP5 ADD DUP10 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 SWAP1 SWAP4 ADD SWAP1 SWAP4 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 SWAP1 PUSH2 0x1F72 PUSH2 0xECE JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2026 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2098 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E76616C6964207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x20A3 DUP11 DUP11 DUP11 PUSH2 0x2310 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 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 0x20E5 PUSH2 0x158F PUSH2 0x2306 JUMP JUMPDEST PUSH2 0x20F1 PUSH1 0x4 DUP4 DUP4 PUSH2 0x318E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2101 PUSH2 0x2306 JUMP JUMPDEST SWAP1 POP PUSH2 0x210E DUP2 DUP8 DUP8 PUSH2 0x2AEB JUMP JUMPDEST PUSH2 0x2120 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C52 JUMP JUMPDEST ISZERO PUSH2 0x2289 JUMPI PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP5 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2215 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x222B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x2289 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x22A0 PUSH2 0x158F PUSH2 0x2306 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E07 PUSH2 0x2C9C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x236B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 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 DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x23D8 DUP4 DUP4 DUP4 PUSH2 0x2AEB JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x23FC JUMPI PUSH2 0x23FC DUP4 DUP6 DUP4 PUSH2 0x261C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1A1B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2554 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD DUP2 ISZERO PUSH2 0x25D6 JUMPI DUP1 DUP3 ADD DUP2 DUP2 GT PUSH2 0x25B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2653 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x26DA JUMPI DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x26AF JUMPI PUSH1 0x40 DUP1 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 SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x2782 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 EQ PUSH2 0x28F0 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x279B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x280D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x281B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x28A5 JUMPI DUP4 DUP2 ADD DUP5 DUP2 GT PUSH2 0x2884 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE SWAP4 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x2786 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x23FC JUMPI PUSH1 0x7 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x2951 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE POP POP POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1A1B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x20F1 SWAP1 DUP5 SWAP1 PUSH2 0x2DFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2B46 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x2C02 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x2BBC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2BFF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP7 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE JUMPDEST POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2C62 PUSH2 0x3004 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x2CA8 PUSH2 0x3167 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2D1B JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x2D29 JUMPI SWAP2 POP PUSH2 0xE65 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x2DE8 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DCF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x2DF6 JUMPI SWAP2 POP PUSH2 0xE65 SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x2E0F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2C52 JUMP JUMPDEST PUSH2 0x2E60 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2EBB JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2E7E JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2F1D 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 0x2F22 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x2FA1 JUMPI DUP1 MLOAD ISZERO PUSH2 0x2F9C JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2F9C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2FFD JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2FF4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x3070 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x3087 JUMPI PUSH2 0x307D PUSH2 0x3173 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x3163 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x314D JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x30D2 PUSH2 0x3167 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3134 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x314A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x315A JUMPI PUSH2 0x307D PUSH2 0x3173 JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x3186 PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x322F JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x31C4 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x320A JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x31DD JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x320A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x320A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x320A JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x31EF JUMP JUMPDEST POP PUSH2 0x3216 SWAP3 SWAP2 POP PUSH2 0x321A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3216 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x321B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x323E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x324A JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 SWAP14 PUSH31 0x7F1342826D94DAE927E622993A0C873A506B052CADFFF037A398B30BC96473 PUSH16 0x6C634300070600330000000000000000 ",
              "sourceMap": "722:2236:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2491:610:38;;;;;;;;;;;;;;;;-1:-1:-1;2491:610:38;-1:-1:-1;;;;;;2491:610:38;;:::i;:::-;;;;;;;;;;;;;;;;;;4506:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3730:166;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3730:166:38;;;;;;;;:::i;3263:100::-;;;:::i;:::-;;;;;;;;;;;;;;;;4120:216;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4120:216:38;;;;;;;;;;;;;;;;;:::i;4776:92::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11199:354;;;:::i;5309:625::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5309:625:38;;;;;;;;:::i;5038:100::-;;;:::i;1812:136:52:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1812:136:52;;;;;;;;:::i;:::-;;8089:1756:38;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8089:1756:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8089:1756:38;;-1:-1:-1;8089:1756:38;-1:-1:-1;8089:1756:38;:::i;544:193:85:-;;;;;;;;;;;;;;;;-1:-1:-1;544:193:85;-1:-1:-1;;;;;544:193:85;;:::i;2041:182:52:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2041:182:52;;;;;;;;-1:-1:-1;2041:182:52;;-1:-1:-1;;2041:182:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2041:182:52;;-1:-1:-1;2041:182:52;;-1:-1:-1;;;;;2041:182:52:i;3396:119:38:-;;;;;;;;;;;;;;;;-1:-1:-1;3396:119:38;-1:-1:-1;;;;;3396:119:38;;:::i;1137:481:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1137:481:8;;-1:-1:-1;1137:481:8;-1:-1:-1;1137:481:8;:::i;1587:50:38:-;;;;;;;;;;;;;;;;-1:-1:-1;1587:50:38;-1:-1:-1;;;;;1587:50:38;;:::i;6429:1613::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6429:1613:38;;-1:-1:-1;6429:1613:38;-1:-1:-1;6429:1613:38;:::i;1114:94:2:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1114:94:2;;;;;;;;;;;;;;4639:96:38;;;:::i;694:120:1:-;;;;;;;;;;;;;;;;-1:-1:-1;694:120:1;-1:-1:-1;;;;;694:120:1;;:::i;929:185::-;;;:::i;5976:277:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5976:277:38;;;;;;;;:::i;3929:158::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3929:158:38;;;;;;;;:::i;339:40:1:-;;;;;;;;;;;;;;;;-1:-1:-1;339:40:1;-1:-1:-1;;;;;339:40:1;;:::i;10505:473:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10505:473:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10505:473:38;;-1:-1:-1;10505:473:38;-1:-1:-1;10505:473:38;:::i;2430:511:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2430:511:8;;-1:-1:-1;2430:511:8;-1:-1:-1;2430:511:8;:::i;2862:94:52:-;;;:::i;1402:42:38:-;;;:::i;11592:711::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11592:711:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3548:149::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3548:149:38;;;;;;;;;;:::i;1454:136:52:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1454:136:52;;-1:-1:-1;1454:136:52;-1:-1:-1;1454:136:52;:::i;10020:439:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10020:439:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10020:439:38;;-1:-1:-1;10020:439:38;-1:-1:-1;10020:439:38;:::i;1448:197:2:-;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;2491:610:38:-;2576:4;-1:-1:-1;;;;;;2611:40:38;;2626:25;2611:40;;:95;;-1:-1:-1;;;;;;;2667:39:38;;2682:24;2667:39;2611:95;:158;;;-1:-1:-1;;;;;;;2722:47:38;;2737:32;2722:47;2611:158;:221;;;-1:-1:-1;;;;;;;2785:47:38;;2800:32;2785:47;2611:221;:285;;;-1:-1:-1;;;;;;;2848:48:38;;2863:33;2848:48;2611:285;:354;;;-1:-1:-1;;;;;;;2912:53:38;;2927:38;2912:53;2611:354;:422;;;-1:-1:-1;;;;;;;2981:52:38;;2996:37;2981:52;2611:422;:483;;;-1:-1:-1;;;;;;;3049:45:38;;3064:30;3049:45;2611:483;2592:502;2491:610;-1:-1:-1;;2491:610:38:o;4506:92::-;4586:5;4579:12;;;;;;;-1:-1:-1;;4579:12:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4554:13;;4579:12;;4586:5;;4579:12;;4586:5;4579:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4506:92;;:::o;3730:166::-;3814:4;3830:38;3839:12;:10;:12::i;:::-;3853:7;3862:5;3830:8;:38::i;:::-;-1:-1:-1;3885:4:38;3730:166;;;;:::o;3263:100::-;3344:12;;3263:100;:::o;4120:216::-;4248:4;4264:44;4278:12;:10;:12::i;:::-;4292:4;4298:2;4302:5;4264:13;:44::i;:::-;-1:-1:-1;4325:4:38;4120:216;;;;;:::o;4776:92::-;4852:9;4776:92;:::o;11199:354::-;11257:7;11335:9;11458:17;11447:28;;:99;;11539:5;11498:48;;;;;;;;;;;;-1:-1:-1;;11498:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;11524:7;;11498:48;;11539:5;;11498:48;;11539:5;11498:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:25;:48::i;:::-;11447:99;;;11478:17;11447:99;11440:106;;;11199:354;:::o;5309:625::-;5408:4;-1:-1:-1;;;;;5432:21:38;;5424:61;;;;;-1:-1:-1;;;5424:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;5495:13;5511:12;:10;:12::i;:::-;-1:-1:-1;;;;;5554:18:38;;;5533;5554;;;:11;:18;;;;;;;;:27;;;;;;;;;;5495:28;;-1:-1:-1;5595:15:38;;5591:264;;5649:23;;;5694:25;;;5686:63;;;;;-1:-1:-1;;;5686:63:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5763:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:42;;;5793:12;-1:-1:-1;5591:264:38;5885:7;-1:-1:-1;;;;;5869:36:38;5878:5;-1:-1:-1;;;;;5869:36:38;;5894:10;5869:36;;;;;;;;;;;;;;;;;;-1:-1:-1;5923:4:38;;5309:625;-1:-1:-1;;;;5309:625:38:o;5038:100::-;5122:9;5115:16;;;;;;;;-1:-1:-1;;5115:16:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5090:13;;5115:16;;5122:9;;5115:16;;5122:9;5115:16;;;;;;;;;;;;;;;;;;;;;;;;1812:136:52;1887:28;1902:12;:10;:12::i;:::-;1887:14;:28::i;:::-;1925:16;1931:2;1935:5;1925;:16::i;:::-;1812:136;;:::o;8089:1756:38:-;8253:4;8286:10;8321:23;;;8313:62;;;;;-1:-1:-1;;;8313:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8404:15:38;;8386;8404;;;:9;:15;;;;;;;8386;;8498:791;8519:6;8514:1;:11;8498:791;;8546:10;8559;;8570:1;8559:13;;;;;;;;;;;;;-1:-1:-1;;;;;8559:13:38;8546:26;;8608:1;-1:-1:-1;;;;;8594:16:38;:2;-1:-1:-1;;;;;8594:16:38;;;8586:51;;;;;-1:-1:-1;;;8586:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8652:13;8668:6;;8675:1;8668:9;;;;;;;;;;;;;8652:25;;8696:5;8705:1;8696:10;8692:542;;8750:18;;;8794:26;;;8786:61;;;;;-1:-1:-1;;;8786:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8878:13;8865:26;;8921:2;-1:-1:-1;;;;;8913:10:38;:4;-1:-1:-1;;;;;8913:10:38;;8909:311;;-1:-1:-1;;;;;8947:13:38;;;;;;:9;:13;;;;;:22;;;;;;8909:311;;;9033:7;9024:5;:16;;9016:56;;;;;-1:-1:-1;;;9016:56:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;9094:31;;;;8909:311;8692:542;;9268:2;-1:-1:-1;;;;;9253:25:38;9262:4;-1:-1:-1;;;;;9253:25:38;;9272:5;9253:25;;;;;;;;;;;;;;;;;;-1:-1:-1;;8527:3:38;;8498:791;;;-1:-1:-1;9303:15:38;;;;;:55;;;9336:22;9322:10;:36;;9303:55;9299:380;;;9395:20;;;9437;;;9429:60;;;;;-1:-1:-1;;;9429:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9559:15:38;;;;;;:9;:15;;;;;9577:35;;;9559:53;;9299:380;9689:14;9706:12;:10;:12::i;:::-;9689:29;;9740:6;-1:-1:-1;;;;;9732:14:38;:4;-1:-1:-1;;;;;9732:14:38;;9728:89;;9762:44;9781:4;9787:6;9795:10;9762:18;:44::i;:::-;-1:-1:-1;9834:4:38;;8089:1756;-1:-1:-1;;;;;;;;;;8089:1756:38:o;544:193:85:-;631:4;667:19;-1:-1:-1;;;;;654:32:85;:9;-1:-1:-1;;;;;654:32:85;;:76;;;;711:18;-1:-1:-1;;;;;690:40:85;:9;-1:-1:-1;;;;;690:40:85;;647:83;;544:193;;;:::o;2041:182:52:-;2148:28;2163:12;:10;:12::i;2148:28::-;2186:30;2197:10;2209:6;2186:10;:30::i;3396:119:38:-;-1:-1:-1;;;;;3490:18:38;3464:7;3490:18;;;:9;:18;;;;;;;3396:119::o;1137:481:8:-;1301:31;1319:12;:10;:12::i;:::-;1301:17;:31::i;:::-;1359:8;1392:23;;;:51;;;;-1:-1:-1;1419:24:8;;;1392:51;1384:90;;;;;-1:-1:-1;;;1384:90:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;1489:9;1484:128;1509:6;1504:1;:11;1484:128;;1536:65;1577:8;;1586:1;1577:11;;;;;;;;;;;;;-1:-1:-1;;;;;1577:11:8;1590:7;;1598:1;1590:10;;;;;;;;;;;;;1550:6;;1557:1;1550:9;;;;;;;;;;;;;-1:-1:-1;;;;;1550:9:8;-1:-1:-1;;;;;1536:40:8;;;:65;;;;;:::i;:::-;1517:3;;1484:128;;;;1137:481;;;;;;;:::o;1587:50:38:-;;;;;;;;;;;;;:::o;6429:1613::-;6545:4;6578:10;6613:23;;;6605:62;;;;;-1:-1:-1;;;6605:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6677:14;6694:12;:10;:12::i;:::-;-1:-1:-1;;;;;6734:17:38;;6716:15;6734:17;;;:9;:17;;;;;;6677:29;;-1:-1:-1;6716:15:38;;6830:793;6851:6;6846:1;:11;6830:793;;6878:10;6891;;6902:1;6891:13;;;;;;;;;;;;;-1:-1:-1;;;;;6891:13:38;6878:26;;6940:1;-1:-1:-1;;;;;6926:16:38;:2;-1:-1:-1;;;;;6926:16:38;;;6918:51;;;;;-1:-1:-1;;;6918:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6984:13;7000:6;;7007:1;7000:9;;;;;;;;;;;;;6984:25;;7027:5;7036:1;7027:10;7023:544;;7081:18;;;7125:26;;;7117:61;;;;;-1:-1:-1;;;7117:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;7209:13;7196:26;;7254:2;-1:-1:-1;;;;;7244:12:38;:6;-1:-1:-1;;;;;7244:12:38;;7240:313;;-1:-1:-1;;;;;7280:13:38;;;;;;:9;:13;;;;;:22;;;;;;7240:313;;;7366:7;7357:5;:16;;7349:56;;;;;-1:-1:-1;;;7349:56:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;7427:31;;;;7240:313;7023:544;;7602:2;-1:-1:-1;;;;;7585:27:38;7594:6;-1:-1:-1;;;;;7585:27:38;;7606:5;7585:27;;;;;;;;;;;;;;;;;;-1:-1:-1;;6859:3:38;;6830:793;;;-1:-1:-1;7637:15:38;;;;;:55;;;7670:22;7656:10;:36;;7637:55;7633:382;;;7729:20;;;7771;;;7763:60;;;;;-1:-1:-1;;;7763:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7893:17:38;;;;;;:9;:17;;;;;7913:35;;;7893:55;;7633:382;-1:-1:-1;8031:4:38;;6429:1613;-1:-1:-1;;;;;;;;;6429:1613:38:o;1114:94:2:-;1169:7;1195:6;-1:-1:-1;;;;;1195:6:2;1114:94;:::o;4639:96:38:-;4721:7;4714:14;;;;;;;;-1:-1:-1;;4714:14:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4689:13;;4714:14;;4721:7;;4714:14;;4721:7;4714:14;;;;;;;;;;;;;;;;;;;;;;;;694:120:1;747:31;765:12;:10;:12::i;747:31::-;788:19;799:7;788:10;:19::i;:::-;694:120;:::o;929:185::-;972:15;990:12;:10;:12::i;:::-;972:30;;1012:23;1027:7;1012:14;:23::i;:::-;-1:-1:-1;;;;;1045:17:1;;1065:5;1045:17;;;:8;:17;;;;;;:25;;-1:-1:-1;;1045:25:1;;;1085:22;;;1065:5;1085:22;929:185;:::o;5976:277:38:-;6080:4;-1:-1:-1;;;;;6104:21:38;;6096:61;;;;;-1:-1:-1;;;6096:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6167:58;6186:12;:10;:12::i;:::-;6200:7;6209:15;6167:18;:58::i;3929:158::-;4009:4;4025:34;4035:12;:10;:12::i;:::-;4049:2;4053:5;4025:9;:34::i;339:40:1:-;;;;;;;;;;;;;;;:::o;10505:473:38:-;10667:4;10683:14;10700:12;:10;:12::i;:::-;10683:29;;10722:39;10736:6;10744:4;10750:2;10754:6;10722:13;:39::i;:::-;10775:15;:2;-1:-1:-1;;;;;10775:13:38;;:15::i;:::-;10771:180;;;10880:32;10814:98;;;10829:2;-1:-1:-1;;;;;10814:34:38;;10849:6;10857:4;10863:6;10871:4;;10814:62;;;;;;;;;;;;;-1:-1:-1;;;;;10814:62:38;;;;;;-1:-1:-1;;;;;10814:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10814:62:38;-1:-1:-1;;;;;;10814:98:38;;10806:134;;;;;-1:-1:-1;;;10806:134:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10967:4:38;;10505:473;-1:-1:-1;;;;;;10505:473:38:o;2430:511:8:-;2599:31;2617:12;:10;:12::i;2599:31::-;2657:8;2690:26;;;:55;;;;-1:-1:-1;2720:25:8;;;2690:55;2682:94;;;;;-1:-1:-1;;;2682:94:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:9;2786:149;2811:6;2806:1;:11;2786:149;;2857:9;;2867:1;2857:12;;;;;;;;;;;;;-1:-1:-1;;;;;2857:12:8;-1:-1:-1;;;;;2838:45:8;;2892:4;2899:8;;2908:1;2899:11;;;;;;;;;;;;;-1:-1:-1;;;;;2899:11:8;2912:8;;2921:1;2912:11;;;;;;;;;;;;;2838:86;;;;;;;;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:3;;;;;2786:149;;2862:94:52;2904:16;2939:10;:8;:10::i;:::-;2932:17;;2862:94;:::o;1402:42:38:-;;;:::o;11592:711::-;-1:-1:-1;;;;;11810:19:38;;11802:57;;;;;-1:-1:-1;;;11802:57:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;11896:8;11877:15;:27;;11869:61;;;;;-1:-1:-1;;;11869:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12022:13:38;;;11940:18;12022:13;;;:6;:13;;;;;;;;:15;;;;;;;11971:77;;1329:66;11971:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11961:88;;;;;;;;12113:18;:16;:18::i;:::-;12133:10;12084:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12074:71;;;;;;12059:86;;12155:14;12172:24;12182:4;12188:1;12191;12194;12172:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12155:41;;12224:5;-1:-1:-1;;;;;12214:15:38;:6;-1:-1:-1;;;;;12214:15:38;;12206:49;;;;;-1:-1:-1;;;12206:49:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;12265:31;12274:5;12281:7;12290:5;12265:8;:31::i;:::-;11592:711;;;;;;;;;;:::o;3548:149::-;-1:-1:-1;;;;;3663:18:38;;;3637:7;3663:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3548:149::o;1454:136:52:-;1521:31;1539:12;:10;:12::i;1521:31::-;1562:21;:9;1574;;1562:21;:::i;:::-;;1454:136;;:::o;10020:439:38:-;10156:4;10172:14;10189:12;:10;:12::i;:::-;10172:29;;10211;10221:6;10229:2;10233:6;10211:9;:29::i;:::-;10254:15;:2;-1:-1:-1;;;;;10254:13:38;;:15::i;:::-;10250:182;;;10361:32;10293:100;;;10308:2;-1:-1:-1;;;;;10293:34:38;;10328:6;10336;10344;10352:4;;10293:64;;;;;;;;;;;;;-1:-1:-1;;;;;10293:64:38;;;;;;-1:-1:-1;;;;;10293:64:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10293:64:38;-1:-1:-1;;;;;;10293:100:38;;10285:136;;;;;-1:-1:-1;;;10285:136:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10448:4:38;;10020:439;-1:-1:-1;;;;;10020:439:38:o;1448:197:2:-;1527:31;1545:12;:10;:12::i;1527:31::-;1568:6;:17;;;;-1:-1:-1;;;;;1568:17:2;;;;;;;;;1600:38;;1568:17;;1621:6;;;1600:38;;1568:6;1600:38;1448:197;:::o;2358:183:52:-;2463:15;2497:37;:35;:37::i;12438:273:38:-;-1:-1:-1;;;;;12560:21:38;;12552:61;;;;;-1:-1:-1;;;12552:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12623:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:35;;;12673:31;;;;;;;;;;;;;;;;;12438:273;;;:::o;13965:263::-;14102:26;14112:4;14118:2;14122:5;14102:9;:26::i;:::-;14150:6;-1:-1:-1;;;;;14142:14:38;:4;-1:-1:-1;;;;;14142:14:38;;14138:84;;14172:39;14191:4;14197:6;14205:5;14172:18;:39::i;:::-;13965:263;;;;:::o;17687:463::-;17995:16;;;;;;;17846:283;;;17878:95;17846:283;;;;;;;;;;;18033:14;17846:283;;;;;;;;;;;18106:4;17846:283;;;;;;;;;;;;;;;;;;;;;;;;;17819:324;;;;;;17687:463::o;1120:126:1:-;-1:-1:-1;;;;;1193:17:1;;;;;;:8;:17;;;;;;;;1185:54;;;;;-1:-1:-1;;;1185:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;14234:480:38;-1:-1:-1;;;;;14311:16:38;;14303:48;;;;;-1:-1:-1;;;14303:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14378:12;;14404:10;;14400:262;;14450:14;;;14486:18;;;14478:53;;;;;-1:-1:-1;;;14478:53:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14545:12;:24;-1:-1:-1;;;;;14583:13:38;;;;;;:9;:13;;;;;:22;;;;;;14400:262;14676:31;;;;;;;;-1:-1:-1;;;;;14676:31:38;;;14693:1;;14676:31;;;;;;;;;14234:480;;;:::o;12717:682::-;-1:-1:-1;;;;;12872:18:38;;;12851;12872;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;12914:31:38;;;;;:55;;-1:-1:-1;12949:20:38;;;12914:55;12910:432;;;13127:28;;;13177:25;;;13169:67;;;;;-1:-1:-1;;;13169:67:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13250:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:42;;;13280:12;-1:-1:-1;12910:432:38;13372:7;-1:-1:-1;;;;;13356:36:38;13365:5;-1:-1:-1;;;;;13356:36:38;;13381:10;13356:36;;;;;;;;;;;;;;;;;;12717:682;;;;:::o;14720:1045::-;14838:17;;14883:13;;14873:23;;14865:62;;;;;-1:-1:-1;;;14865:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14938:18;14971:9;14966:550;14987:6;14982:1;:11;14966:550;;15014:10;15027;15038:1;15027:13;;;;;;;;;;;;;;15014:26;;15076:1;-1:-1:-1;;;;;15062:16:38;:2;-1:-1:-1;;;;;15062:16:38;;;15054:48;;;;;-1:-1:-1;;;15054:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;15117:13;15133:6;15140:1;15133:9;;;;;;;;;;;;;;15117:25;;15160:5;15169:1;15160:10;15156:300;;15214:18;;;15258:26;;;15250:61;;;;;-1:-1:-1;;;15250:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15373:13:38;;;;;;:9;:13;;;;;:22;;;;;;15342:13;-1:-1:-1;15156:300:38;15474:31;;;;;;;;-1:-1:-1;;;;;15474:31:38;;;15491:1;;15474:31;;;;;;;;;-1:-1:-1;;14995:3:38;;14966:550;;;-1:-1:-1;15530:15:38;;15526:233;;15578:12;;15624:19;;;15665:18;;;15657:53;;;;;-1:-1:-1;;;15657:53:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;15724:12;:24;-1:-1:-1;14720:1045:38;;;;:::o;1770:136:2:-;1860:4;-1:-1:-1;;;;;1860:10:2;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1860:12:2;-1:-1:-1;;;;;1849:23:2;;;;;;1841:58;;;;;-1:-1:-1;;;1841:58:2;;;;;;;;;;;;;;;;;;;;;;;;;;;416:223:6;573:58;;;-1:-1:-1;;;;;573:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;596:23;573:58;;;538:94;;566:5;;538:27;:94::i;1252:122:1:-;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;13405:554:38:-;-1:-1:-1;;;;;13530:16:38;;13522:51;;;;;-1:-1:-1;;;13522:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;13588:10;;13584:328;;-1:-1:-1;;;;;13632:15:38;;13614;13632;;;:9;:15;;;;;;13682;;;13719:20;;;13711:60;;;;;-1:-1:-1;;;13711:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;13797:2;-1:-1:-1;;;;;13789:10:38;:4;-1:-1:-1;;;;;13789:10:38;;13785:117;;-1:-1:-1;;;;;13819:15:38;;;;;;;:9;:15;;;;;;:28;;;13865:13;;;;;;:22;;;;;;13785:117;13584:328;;;13942:2;-1:-1:-1;;;;;13927:25:38;13936:4;-1:-1:-1;;;;;13927:25:38;;13946:5;13927:25;;;;;;;;;;;;;;;;;;13405:554;;;:::o;913:377:9:-;1229:20;1275:8;;;913:377::o;2547:180:52:-;2650:16;2685:35;:33;:35::i;:::-;2678:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2678:42:52;;-1:-1:-1;;;;2547:180:52;:::o;743:904:85:-;796:15;851:10;796:15;896:27;:25;:27::i;:::-;871:52;;958:18;-1:-1:-1;;;;;937:40:85;:9;-1:-1:-1;;;;;937:40:85;;:76;;;;994:19;-1:-1:-1;;;;;981:32:85;:9;-1:-1:-1;;;;;981:32:85;;937:76;933:166;;;1082:6;-1:-1:-1;1075:13:85;;-1:-1:-1;1075:13:85;933:166;-1:-1:-1;;;;;1496:22:85;;1509:9;1496:22;;;;:78;;;1522:18;-1:-1:-1;;;;;1522:33:85;;1556:6;1564:9;1522:52;;;;;;;;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1522:52:85;1496:78;1492:122;;;1597:6;-1:-1:-1;1590:13:85;;-1:-1:-1;1590:13:85;1492:122;-1:-1:-1;1631:9:85;-1:-1:-1;743:904:85;:::o;1147:870:6:-;1272:5;1296:19;-1:-1:-1;;;;;1296:17:6;;;:19::i;:::-;1288:58;;;;;-1:-1:-1;;;1288:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:12;1431:17;1452:6;-1:-1:-1;;;;;1452:11:6;1464:8;1452:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:57;;;;1487:7;1483:528;;;1514:11;;:16;1510:122;;1569:4;1558:24;;;;;;;;;;;;;;;-1:-1:-1;1558:24:6;1550:67;;;;;-1:-1:-1;;;1550:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:528;;;1720:11;;1716:95;;1756:40;;;-1:-1:-1;;;1756:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:95;1938:4;1932:11;1982:4;1975;1971:2;1967:13;1960:27;1902:99;1147:870;;;;;:::o;1653:670:85:-;1704:14;;1758:10;-1:-1:-1;;;;;1803:18:85;1782:40;;;;:76;;;1839:19;-1:-1:-1;;;;;1826:32:85;:9;-1:-1:-1;;;;;1826:32:85;;1782:76;1778:197;;;1927:37;:35;:37::i;:::-;1920:44;;;;;;;1778:197;-1:-1:-1;;;;;2122:22:85;;2135:9;2122:22;;;;:99;;;2148:18;-1:-1:-1;;;;;2148:33:85;;2182:27;:25;:27::i;:::-;2211:9;2148:73;;;;;;;;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2148:73:85;2122:99;2118:174;;;2244:37;:35;:37::i;2118:174::-;2308:8;;2301:15;;;;;1653:670;;;:::o;103:519:84:-;-1:-1:-1;;585:14:84;581:23;568:37;564:2;560:46;;536:80::o;628:149::-;706:14;;739:31;-1:-1:-1;;749:20:84;;706:14;;;739:31;:::i;:::-;732:38;;;;628:149;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:363:86;;;172:8;160:10;157:24;154:2;;;202:9;191;184:28;154:2;239:6;229:8;226:20;223:2;;;267:9;256;249:28;223:2;-1:-1:-1;;301:23:86;;;346:25;;;;;-1:-1:-1;144:233:86:o"
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "addMinter(address)": "983b2d56",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "batchMint(address[],uint256[])": "68573107",
              "batchTransfer(address[],uint256[])": "88d695b2",
              "batchTransferFrom(address,address[],uint256[])": "4885b254",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "deploymentChainId()": "cd0d0096",
              "increaseAllowance(address,uint256)": "39509351",
              "isMinter(address)": "aa271e1a",
              "isTrustedForwarder(address)": "572b6c05",
              "mint(address,uint256)": "40c10f19",
              "msgData()": "c4c2bfdc",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "owner()": "8da5cb5b",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "recoverERC20s(address[],address[],uint256[])": "73c8a958",
              "recoverERC721s(address[],address[],uint256[])": "c3666c36",
              "renounceMinter()": "98650275",
              "safeTransfer(address,uint256,bytes)": "eb795549",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setTokenURI(string)": "e0df5b6f",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI()": "3c130d90",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "contracts/token/ERC20/mocks/ERC20ReceiverMock.sol": {
        "ERC20ReceiverMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "accept",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "gas",
                  "type": "uint256"
                }
              ],
              "name": "ERC20Received",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC20Received",
              "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60c060405234801561001057600080fd5b506040516104eb3803806104eb8339818101604052604081101561003357600080fd5b50805160209091015190151560f881901b608052606082901b6001600160601b03191660a05260ff16906001600160a01b0316610468610083600039806102495250806102d752506104686000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b5780634fc358591461008e575b600080fd5b61007a6004803603602081101561005157600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610196565b604080519115158252519081900360200190f35b610161600480360360808110156100a457600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013590911691604082013591908101906080810160608201356401000000008111156100ec57600080fd5b8201836020820111156100fe57600080fd5b8035906020019184600183028401116401000000008311171561012057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061022f945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061022957507fffffffff0000000000000000000000000000000000000000000000000000000082167f4fc3585900000000000000000000000000000000000000000000000000000000145b92915050565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f455243323052656365697665723a2077726f6e6720746f6b656e000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000015610407577f4e669eb778cc38e0f3ce5337506502c4531ff873bff6ea014994632e7a759b2d858585855a604051808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156103a257818101518382015260200161038a565b50505050905090810190601f1680156103cf5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1507f4fc358590000000000000000000000000000000000000000000000000000000061042a565b507fffffffff000000000000000000000000000000000000000000000000000000005b94935050505056fea2646970667358221220d1e798b91119ca8c8f9bf84668d29bc76a2f00165ed58f32b3c1c8579392fe8464736f6c63430007060033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x4EB CODESIZE SUB DUP1 PUSH2 0x4EB DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 ISZERO ISZERO PUSH1 0xF8 DUP2 SWAP1 SHL PUSH1 0x80 MSTORE PUSH1 0x60 DUP3 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE PUSH1 0xFF AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x468 PUSH2 0x83 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x249 MSTORE POP DUP1 PUSH2 0x2D7 MSTORE POP PUSH2 0x468 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x4FC35859 EQ PUSH2 0x8E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x196 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x161 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x22F SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x229 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x2D5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243323052656365697665723A2077726F6E6720746F6B656E000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x407 JUMPI PUSH32 0x4E669EB778CC38E0F3CE5337506502C4531FF873BFF6EA014994632E7A759B2D DUP6 DUP6 DUP6 DUP6 GAS PUSH1 0x40 MLOAD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3A2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x38A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3CF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH2 0x42A JUMP JUMPDEST POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD1 0xE7 SWAP9 0xB9 GT NOT 0xCA DUP13 DUP16 SWAP12 0xF8 CHAINID PUSH9 0xD29BC76A2F00165ED5 DUP16 ORIGIN 0xB3 0xC1 0xC8 JUMPI SWAP4 SWAP3 INVALID DUP5 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "227:963:53:-:0;;;457:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;457:118:53;;;;;;;514:16;;;;;;;;;540:28;;;;-1:-1:-1;;;;;;540:28:53;;;227:963;;;-1:-1:-1;;;;;227:963:53;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {
                "10502": [
                  {
                    "length": 32,
                    "start": 727
                  }
                ],
                "10504": [
                  {
                    "length": 32,
                    "start": 585
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b5780634fc358591461008e575b600080fd5b61007a6004803603602081101561005157600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610196565b604080519115158252519081900360200190f35b610161600480360360808110156100a457600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013590911691604082013591908101906080810160608201356401000000008111156100ec57600080fd5b8201836020820111156100fe57600080fd5b8035906020019184600183028401116401000000008311171561012057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061022f945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061022957507fffffffff0000000000000000000000000000000000000000000000000000000082167f4fc3585900000000000000000000000000000000000000000000000000000000145b92915050565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f455243323052656365697665723a2077726f6e6720746f6b656e000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000015610407577f4e669eb778cc38e0f3ce5337506502c4531ff873bff6ea014994632e7a759b2d858585855a604051808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156103a257818101518382015260200161038a565b50505050905090810190601f1680156103cf5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1507f4fc358590000000000000000000000000000000000000000000000000000000061042a565b507fffffffff000000000000000000000000000000000000000000000000000000005b94935050505056fea2646970667358221220d1e798b91119ca8c8f9bf84668d29bc76a2f00165ed58f32b3c1c8579392fe8464736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x4FC35859 EQ PUSH2 0x8E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x196 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x161 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x22F SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x229 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x2D5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243323052656365697665723A2077726F6E6720746F6B656E000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x407 JUMPI PUSH32 0x4E669EB778CC38E0F3CE5337506502C4531FF873BFF6EA014994632E7A759B2D DUP6 DUP6 DUP6 DUP6 GAS PUSH1 0x40 MLOAD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3A2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x38A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3CF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH32 0x4FC3585900000000000000000000000000000000000000000000000000000000 PUSH2 0x42A JUMP JUMPDEST POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD1 0xE7 SWAP9 0xB9 GT NOT 0xCA DUP13 DUP16 SWAP12 0xF8 CHAINID PUSH9 0xD29BC76A2F00165ED5 DUP16 ORIGIN 0xB3 0xC1 0xC8 JUMPI SWAP4 SWAP3 INVALID DUP5 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "227:963:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;761:206:40;;;;;;;;;;;;;;;;-1:-1:-1;761:206:40;;;;:::i;:::-;;;;;;;;;;;;;;;;;;745:443:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;745:443:53;;-1:-1:-1;745:443:53;;-1:-1:-1;;;;;745:443:53:i;:::-;;;;;;;;;;;;;;;;;;;761:206:40;846:4;869:40;;;884:25;869:40;;:91;;-1:-1:-1;913:47:40;;;928:32;913:47;869:91;862:98;761:206;-1:-1:-1;;761:206:40:o;745:443:53:-;905:6;931:10;:27;945:13;931:27;;923:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1003:7;999:183;;;1031:51;1045:6;1053:4;1059:5;1066:4;1072:9;1031:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;506:32:40;1096:22:53;;999:183;-1:-1:-1;1156:15:53;999:183;745:443;;;;;;:::o"
            },
            "methodIdentifiers": {
              "onERC20Received(address,address,uint256,bytes)": "4fc35859",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "contracts/token/ERC20/polygon/child/PolygonChildERC20.sol": {
        "PolygonChildERC20": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name_",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol_",
                  "type": "string"
                },
                {
                  "internalType": "uint8",
                  "name": "decimals_",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "childChainManager",
                  "type": "address"
                }
              ],
              "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"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Withdrawn",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "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": "value",
                  "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": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "childChainManager",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "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": [],
              "name": "deploymentChainId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "depositData",
                  "type": "bytes"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "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": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC20Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransfer",
              "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"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "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": [],
              "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": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60e06040523480156200001157600080fd5b506040516200250d3803806200250d833981810160405260808110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060409081526020828101519290910151865192945092508291869186918691620001c991600191860190620002d9565b508151620001df906002906020850190620002d9565b507fff0000000000000000000000000000000000000000000000000000000000000060f882901b1660c0524660808190526200021c81856200024f565b60a0525050600780546001600160a01b0319166001600160a01b0394909416939093179092555062000385945050505050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200031157600085556200035c565b82601f106200032c57805160ff19168380011785556200035c565b828001600101855582156200035c579182015b828111156200035c5782518255916020019190600101906200033f565b506200036a9291506200036e565b5090565b5b808211156200036a57600081556001016200036f565b60805160a05160c05160f81c612153620003ba600039806109db525080610ac5525080610a02528061165052506121536000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c806370a08231116100ee578063b88d4fde11610097578063cf2c52cb11610071578063cf2c52cb146106fe578063d505accf1461077e578063dd62ed3e146107cf578063eb795549146107fd576101a3565b8063b88d4fde14610642578063c8291d84146106d2578063cd0d0096146106f6576101a3565b806395d89b41116100c857806395d89b41146105e2578063a457c2d7146105ea578063a9059cbb14610616576101a3565b806370a08231146104d45780637ecebe00146104fa57806388d695b214610520576101a3565b8063313ce567116101505780633c130d901161012a5780633c130d901461034d5780634885b254146103555780634fc3585914610427576101a3565b8063313ce567146102fb5780633644e515146103195780633950935114610321576101a3565b806318160ddd1161018157806318160ddd1461028c57806323b872dd146102a65780632e1a7d4d146102dc576101a3565b806301ffc9a7146101a857806306fdde03146101e3578063095ea7b314610260575b600080fd5b6101cf600480360360208110156101be57600080fd5b50356001600160e01b031916610882565b604080519115158252519081900360200190f35b6101eb6108a2565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022557818101518382015260200161020d565b50505050905090810190601f1680156102525780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cf6004803603604081101561027657600080fd5b506001600160a01b038135169060200135610937565b610294610954565b60408051918252519081900360200190f35b6101cf600480360360608110156102bc57600080fd5b506001600160a01b0381358116916020810135909116906040013561095a565b6102f9600480360360208110156102f257600080fd5b5035610979565b005b6103036109d9565b6040805160ff9092168252519081900360200190f35b6102946109fd565b6101cf6004803603604081101561033757600080fd5b506001600160a01b038135169060200135610aeb565b6101eb610c59565b6101cf6004803603606081101561036b57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561039657600080fd5b8201836020820111156103a857600080fd5b803590602001918460208302840111640100000000831117156103ca57600080fd5b9193909290916020810190356401000000008111156103e857600080fd5b8201836020820111156103fa57600080fd5b8035906020019184602083028401116401000000008311171561041c57600080fd5b509092509050610cba565b6104b76004803603608081101561043d57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561047857600080fd5b82018360208201111561048a57600080fd5b803590602001918460018302840111640100000000831117156104ac57600080fd5b509092509050610fee565b604080516001600160e01b03199092168252519081900360200190f35b610294600480360360208110156104ea57600080fd5b50356001600160a01b031661109a565b6102946004803603602081101561051057600080fd5b50356001600160a01b03166110b5565b6101cf6004803603604081101561053657600080fd5b81019060208101813564010000000081111561055157600080fd5b82018360208201111561056357600080fd5b8035906020019184602083028401116401000000008311171561058557600080fd5b9193909290916020810190356401000000008111156105a357600080fd5b8201836020820111156105b557600080fd5b803590602001918460208302840111640100000000831117156105d757600080fd5b5090925090506110c7565b6101eb6113d6565b6101cf6004803603604081101561060057600080fd5b506001600160a01b038135169060200135611434565b6101cf6004803603604081101561062c57600080fd5b506001600160a01b0381351690602001356114a3565b6101cf6004803603608081101561065857600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561069357600080fd5b8201836020820111156106a557600080fd5b803590602001918460018302840111640100000000831117156106c757600080fd5b5090925090506114b7565b6106da61163f565b604080516001600160a01b039092168252519081900360200190f35b61029461164e565b6102f96004803603604081101561071457600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561073f57600080fd5b82018360208201111561075157600080fd5b8035906020019184600183028401116401000000008311171561077357600080fd5b509092509050611672565b6102f9600480360360e081101561079457600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356116a9565b610294600480360360408110156107e557600080fd5b506001600160a01b0381358116916020013516611928565b6101cf6004803603606081101561081357600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561084357600080fd5b82018360208201111561085557600080fd5b8035906020019184600183028401116401000000008311171561087757600080fd5b509092509050611953565b600061088d82611ad9565b8061089c575061089c82611c76565b92915050565b60018054604080516020601f6002600019610100878916150201909516949094049384018190048102820181019092528281526060939092909183018282801561092d5780601f106109025761010080835404028352916020019161092d565b820191906000526020600020905b81548152906001019060200180831161091057829003601f168201915b5050505050905090565b600061094b610944611cc2565b8484611cc6565b50600192915050565b60065490565b600061096f610967611cc2565b858585611d83565b5060019392505050565b6000610983611cc2565b905061099181823085611d83565b604080516001600160a01b03831681526020810184905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a15050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610ac35760018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152610abe93859391929091830182828015610ab45780601f10610a8957610100808354040283529160200191610ab4565b820191906000526020600020905b815481529060010190602001808311610a9757829003601f168201915b5050505050611db2565b610ae5565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b60006001600160a01b038316610b48576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6000610b52611cc2565b6001600160a01b038082166000908152600560209081526040808320938916835292905220549091508315610c0357808401818111610bd8576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600560209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561092d5780601f106109025761010080835404028352916020019161092d565b600083828114610d11576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600460205260408120549080805b848114610f235760008a8a83818110610d4357fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415610dbd576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b6000898984818110610dcb57fe5b90506020020135905080600014610ece57848101858111610e33576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b031614610e72576001600160a01b0383166000908152600460205260409020805483019055610ecc565b86821115610ec7576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101610d2e565b508115801590610f335750808214155b15610fad57818303838110610f8f576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260046020526040902090820190555b6000610fb7611cc2565b9050806001600160a01b03168b6001600160a01b031614610fdd57610fdd8b8285611e3c565b5060019a9950505050505050505050565b6000333014611044576040805162461bcd60e51b815260206004820152601860248201527f4368696c6445524332303a2077726f6e672073656e6465720000000000000000604482015290519081900360640190fd5b604080516001600160a01b03871681526020810186905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a150634fc3585960e01b95945050505050565b6001600160a01b031660009081526004602052604090205490565b60006020819052908152604090205481565b60008382811461111e576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000611128611cc2565b6001600160a01b03811660009081526004602052604081205491925080805b85811461133c5760008b8b8381811061115c57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b031614156111d6576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a848181106111e457fe5b905060200201359050806000146112e75784810185811161124c576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b03161461128b576001600160a01b03831660009081526004602052604090208054830190556112e5565b868211156112e0576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101611147565b50811580159061134c5750808214155b156113c6578183038381106113a8576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260046020526040902090820190555b5060019998505050505050505050565b60028054604080516020601f600019610100600187161502019094168590049384018190048102820181019092528281526060939092909183018282801561092d5780601f106109025761010080835404028352916020019161092d565b60006001600160a01b038316611491576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b61094b61149c611cc2565b8484611e3c565b600061094b6114b0611cc2565b8484611f4b565b6000806114c2611cc2565b90506114d081888888611d83565b6114e2866001600160a01b03166120b2565b1561163257634fc3585960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b1580156115aa57600080fd5b505af11580156115be573d6000803e3d6000fd5b505050506040513d60208110156115d457600080fd5b50516001600160e01b03191614611632576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b6007546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b61168261167d611cc2565b6120b8565b60008282602081101561169457600080fd5b503590506116a3308583611f4b565b50505050565b6001600160a01b038716611704576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b83421115611759576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526020818152604080832080546001810190915581517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a084019490945260c08084018990528451808503909101815260e090930190935281519190920120906117eb6109fd565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561189f573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b031614611911576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b61191c8a8a8a611cc6565b50505050505050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60008061195e611cc2565b905061196b818787611f4b565b61197d866001600160a01b03166120b2565b15611acd57634fc3585960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015611a4557600080fd5b505af1158015611a59573d6000803e3d6000fd5b505050506040513d6020811015611a6f57600080fd5b50516001600160e01b03191614611acd576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b60006001600160e01b031982167f01ffc9a7000000000000000000000000000000000000000000000000000000001480611b3c57506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b80611b7057506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b80611ba457506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b80611bd857506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b80611c0c57506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b80611c4057506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b8061089c5750506001600160e01b0319167f9d8ff7da000000000000000000000000000000000000000000000000000000001490565b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061089c5750506001600160e01b031916634fc3585960e01b1490565b3390565b6001600160a01b038216611d21576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b611d8e838383611f4b565b836001600160a01b0316836001600160a01b0316146116a3576116a3838583611e3c565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b038084166000908152600560209081526040808320938616835292905220546000198114801590611e7357508115155b15611efa57818103818110611ecf576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b6001600160a01b038216611fa6576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b8015612062576001600160a01b03831660009081526004602052604090205481810381811061201c576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03161461205f576001600160a01b038086166000908152600460205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b151590565b6007546001600160a01b0382811691161461211a576040805162461bcd60e51b815260206004820152601a60248201527f4368696c6445524332303a206f6e6c79206465706f7369746f72000000000000604482015290519081900360640190fd5b5056fea26469706673582212201010570c21a7c14134e8d251bde0a5bfde5e8b5343299497cb649ee1ca2af24f64736f6c63430007060033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x250D CODESIZE SUB DUP1 PUSH3 0x250D DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD MLOAD SWAP3 SWAP1 SWAP2 ADD MLOAD DUP7 MLOAD SWAP3 SWAP5 POP SWAP3 POP DUP3 SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP7 SWAP2 PUSH3 0x1C9 SWAP2 PUSH1 0x1 SWAP2 DUP7 ADD SWAP1 PUSH3 0x2D9 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x1DF SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x2D9 JUMP JUMPDEST POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF8 DUP3 SWAP1 SHL AND PUSH1 0xC0 MSTORE CHAINID PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH3 0x21C DUP2 DUP6 PUSH3 0x24F JUMP JUMPDEST PUSH1 0xA0 MSTORE POP POP PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE POP PUSH3 0x385 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x311 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x35C JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x32C JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x35C JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x35C JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x35C JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x33F JUMP JUMPDEST POP PUSH3 0x36A SWAP3 SWAP2 POP PUSH3 0x36E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x36A JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x36F JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xF8 SHR PUSH2 0x2153 PUSH3 0x3BA PUSH1 0x0 CODECOPY DUP1 PUSH2 0x9DB MSTORE POP DUP1 PUSH2 0xAC5 MSTORE POP DUP1 PUSH2 0xA02 MSTORE DUP1 PUSH2 0x1650 MSTORE POP PUSH2 0x2153 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 0x1A3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xCF2C52CB GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xCF2C52CB EQ PUSH2 0x6FE JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x77E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x7CF JUMPI DUP1 PUSH4 0xEB795549 EQ PUSH2 0x7FD JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x642 JUMPI DUP1 PUSH4 0xC8291D84 EQ PUSH2 0x6D2 JUMPI DUP1 PUSH4 0xCD0D0096 EQ PUSH2 0x6F6 JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5E2 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x5EA JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x616 JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4D4 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0x88D695B2 EQ PUSH2 0x520 JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x150 JUMPI DUP1 PUSH4 0x3C130D90 GT PUSH2 0x12A JUMPI DUP1 PUSH4 0x3C130D90 EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0x4885B254 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x4FC35859 EQ PUSH2 0x427 JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x321 JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x181 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2A6 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x2DC JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x260 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x882 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1EB PUSH2 0x8A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x225 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x20D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x252 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x937 JUMP JUMPDEST PUSH2 0x294 PUSH2 0x954 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x95A JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x979 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x303 PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x294 PUSH2 0x9FD JUMP JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAEB JUMP JUMPDEST PUSH2 0x1EB PUSH2 0xC59 JUMP JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x36B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xCBA JUMP JUMPDEST PUSH2 0x4B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x48A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xFEE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x294 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x109A JUMP JUMPDEST PUSH2 0x294 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10B5 JUMP JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x551 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0x1EB PUSH2 0x13D6 JUMP JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x600 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1434 JUMP JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x62C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x14A3 JUMP JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x693 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x14B7 JUMP JUMPDEST PUSH2 0x6DA PUSH2 0x163F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x294 PUSH2 0x164E JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x73F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x751 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1672 JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x794 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x16A9 JUMP JUMPDEST PUSH2 0x294 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1928 JUMP JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x813 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x843 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x877 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1953 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x88D DUP3 PUSH2 0x1AD9 JUMP JUMPDEST DUP1 PUSH2 0x89C JUMPI POP PUSH2 0x89C DUP3 PUSH2 0x1C76 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x92D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x902 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x92D 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 0x910 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x94B PUSH2 0x944 PUSH2 0x1CC2 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1CC6 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x96F PUSH2 0x967 PUSH2 0x1CC2 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x1D83 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x983 PUSH2 0x1CC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x991 DUP2 DUP3 ADDRESS DUP6 PUSH2 0x1D83 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 DUP2 EQ PUSH2 0xAC3 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE PUSH2 0xABE SWAP4 DUP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xAB4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA89 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAB4 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 0xA97 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x1DB2 JUMP JUMPDEST PUSH2 0xAE5 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xB48 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB52 PUSH2 0x1CC2 JUMP JUMPDEST 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 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP4 ISZERO PUSH2 0xC03 JUMPI DUP1 DUP5 ADD DUP2 DUP2 GT PUSH2 0xBD8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20616C6C6F77616E6365206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x92D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x902 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x92D JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0xD11 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP1 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0xF23 JUMPI PUSH1 0x0 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0xD43 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xDBD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0xDCB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0xECE JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0xE33 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xE72 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0xECC JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0xEC7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0xD2E JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xF33 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0xFAD JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0xF8F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0xFB7 PUSH2 0x1CC2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xFDD JUMPI PUSH2 0xFDD DUP12 DUP3 DUP6 PUSH2 0x1E3C JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0x1044 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4368696C6445524332303A2077726F6E672073656E6465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH4 0x4FC35859 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x111E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1128 PUSH2 0x1CC2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP DUP1 DUP1 JUMPDEST DUP6 DUP2 EQ PUSH2 0x133C JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x115C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x11D6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x11E4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x12E7 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x124C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x128B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x12E5 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x12E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x1147 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x134C JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x13C6 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x13A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x92D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x902 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x92D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1491 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x94B PUSH2 0x149C PUSH2 0x1CC2 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1E3C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x94B PUSH2 0x14B0 PUSH2 0x1CC2 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1F4B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x14C2 PUSH2 0x1CC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x14D0 DUP2 DUP9 DUP9 DUP9 PUSH2 0x1D83 JUMP JUMPDEST PUSH2 0x14E2 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x20B2 JUMP JUMPDEST ISZERO PUSH2 0x1632 JUMPI PUSH4 0x4FC35859 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1632 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1682 PUSH2 0x167D PUSH2 0x1CC2 JUMP JUMPDEST PUSH2 0x20B8 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP1 POP PUSH2 0x16A3 ADDRESS DUP6 DUP4 PUSH2 0x1F4B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x1704 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373206F776E657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x1759 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2065787069726564207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP2 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP6 ADD MSTORE DUP1 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP5 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0xC0 DUP1 DUP5 ADD DUP10 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 SWAP1 SWAP4 ADD SWAP1 SWAP4 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 SWAP1 PUSH2 0x17EB PUSH2 0x9FD JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x189F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1911 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E76616C6964207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x191C DUP11 DUP11 DUP11 PUSH2 0x1CC6 JUMP JUMPDEST POP POP POP POP POP POP POP 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 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x195E PUSH2 0x1CC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x196B DUP2 DUP8 DUP8 PUSH2 0x1F4B JUMP JUMPDEST PUSH2 0x197D DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x20B2 JUMP JUMPDEST ISZERO PUSH2 0x1ACD JUMPI PUSH4 0x4FC35859 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP5 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A59 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1ACD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x1B3C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x36372B0700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1B70 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xA219A02500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1BA4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x3C130D9000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1BD8 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D07518600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1C0C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xC05327E600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1C40 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x53F41A9700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x89C JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0x9D8FF7DA00000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x89C JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0x4FC35859 PUSH1 0xE0 SHL EQ SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D21 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 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 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x1D8E DUP4 DUP4 DUP4 PUSH2 0x1F4B JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x16A3 JUMPI PUSH2 0x16A3 DUP4 DUP6 DUP4 PUSH2 0x1E3C JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x1E73 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1EFA JUMPI DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x1ECF JUMPI PUSH1 0x40 DUP1 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 SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 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 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1FA6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x2062 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x201C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x205F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP7 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE JUMPDEST POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x211A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4368696C6445524332303A206F6E6C79206465706F7369746F72000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LT LT JUMPI 0xC 0x21 0xA7 0xC1 COINBASE CALLVALUE 0xE8 0xD2 MLOAD 0xBD 0xE0 0xA5 0xBF 0xDE 0x5E DUP12 MSTORE8 NUMBER 0x29 SWAP5 SWAP8 0xCB PUSH5 0x9EE1CA2AF2 0x4F PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "636:2680:54:-:0;;;701:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;701:214:54;;;;;;;;;;-1:-1:-1;701:214:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;701:214:54;;;;;;;;;;-1:-1:-1;701:214:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;701:214:54;;;;;;;;;;;;;;2047:13:38;;701:214:54;;-1:-1:-1;701:214:54;-1:-1:-1;701:214:54;;845:5;;852:7;;701:214;;2047:13:38;;:5;;:13;;;;:::i;:::-;-1:-1:-1;2070:17:38;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;2097:21:38;;;;;;;;2188:9;2216:27;;;;2273:48;2188:9;2314:5;2273:25;:48::i;:::-;2253:68;;-1:-1:-1;;1211:17:55;:38;;-1:-1:-1;;;;;;1211:38:55;-1:-1:-1;;;;;1211:38:55;;;;;;;;;;;-1:-1:-1;636:2680:54;;-1:-1:-1;;;;;636:2680:54;17687:463:38;17995:16;;;;;;;17846:283;;;17878:95;17846:283;;;;;;;;;;;18033:14;17846:283;;;;;;;;;;;18106:4;17846:283;;;;;;;;;;;;;;;;;;;;;;;;;17819:324;;;;;;17687:463::o;636:2680:54:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;636:2680:54;;;-1:-1:-1;636:2680:54;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {
                "8178": [
                  {
                    "length": 32,
                    "start": 2562
                  },
                  {
                    "length": 32,
                    "start": 5712
                  }
                ],
                "8180": [
                  {
                    "length": 32,
                    "start": 2757
                  }
                ],
                "8192": [
                  {
                    "length": 32,
                    "start": 2523
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101a35760003560e01c806370a08231116100ee578063b88d4fde11610097578063cf2c52cb11610071578063cf2c52cb146106fe578063d505accf1461077e578063dd62ed3e146107cf578063eb795549146107fd576101a3565b8063b88d4fde14610642578063c8291d84146106d2578063cd0d0096146106f6576101a3565b806395d89b41116100c857806395d89b41146105e2578063a457c2d7146105ea578063a9059cbb14610616576101a3565b806370a08231146104d45780637ecebe00146104fa57806388d695b214610520576101a3565b8063313ce567116101505780633c130d901161012a5780633c130d901461034d5780634885b254146103555780634fc3585914610427576101a3565b8063313ce567146102fb5780633644e515146103195780633950935114610321576101a3565b806318160ddd1161018157806318160ddd1461028c57806323b872dd146102a65780632e1a7d4d146102dc576101a3565b806301ffc9a7146101a857806306fdde03146101e3578063095ea7b314610260575b600080fd5b6101cf600480360360208110156101be57600080fd5b50356001600160e01b031916610882565b604080519115158252519081900360200190f35b6101eb6108a2565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022557818101518382015260200161020d565b50505050905090810190601f1680156102525780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cf6004803603604081101561027657600080fd5b506001600160a01b038135169060200135610937565b610294610954565b60408051918252519081900360200190f35b6101cf600480360360608110156102bc57600080fd5b506001600160a01b0381358116916020810135909116906040013561095a565b6102f9600480360360208110156102f257600080fd5b5035610979565b005b6103036109d9565b6040805160ff9092168252519081900360200190f35b6102946109fd565b6101cf6004803603604081101561033757600080fd5b506001600160a01b038135169060200135610aeb565b6101eb610c59565b6101cf6004803603606081101561036b57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561039657600080fd5b8201836020820111156103a857600080fd5b803590602001918460208302840111640100000000831117156103ca57600080fd5b9193909290916020810190356401000000008111156103e857600080fd5b8201836020820111156103fa57600080fd5b8035906020019184602083028401116401000000008311171561041c57600080fd5b509092509050610cba565b6104b76004803603608081101561043d57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561047857600080fd5b82018360208201111561048a57600080fd5b803590602001918460018302840111640100000000831117156104ac57600080fd5b509092509050610fee565b604080516001600160e01b03199092168252519081900360200190f35b610294600480360360208110156104ea57600080fd5b50356001600160a01b031661109a565b6102946004803603602081101561051057600080fd5b50356001600160a01b03166110b5565b6101cf6004803603604081101561053657600080fd5b81019060208101813564010000000081111561055157600080fd5b82018360208201111561056357600080fd5b8035906020019184602083028401116401000000008311171561058557600080fd5b9193909290916020810190356401000000008111156105a357600080fd5b8201836020820111156105b557600080fd5b803590602001918460208302840111640100000000831117156105d757600080fd5b5090925090506110c7565b6101eb6113d6565b6101cf6004803603604081101561060057600080fd5b506001600160a01b038135169060200135611434565b6101cf6004803603604081101561062c57600080fd5b506001600160a01b0381351690602001356114a3565b6101cf6004803603608081101561065857600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561069357600080fd5b8201836020820111156106a557600080fd5b803590602001918460018302840111640100000000831117156106c757600080fd5b5090925090506114b7565b6106da61163f565b604080516001600160a01b039092168252519081900360200190f35b61029461164e565b6102f96004803603604081101561071457600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561073f57600080fd5b82018360208201111561075157600080fd5b8035906020019184600183028401116401000000008311171561077357600080fd5b509092509050611672565b6102f9600480360360e081101561079457600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356116a9565b610294600480360360408110156107e557600080fd5b506001600160a01b0381358116916020013516611928565b6101cf6004803603606081101561081357600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561084357600080fd5b82018360208201111561085557600080fd5b8035906020019184600183028401116401000000008311171561087757600080fd5b509092509050611953565b600061088d82611ad9565b8061089c575061089c82611c76565b92915050565b60018054604080516020601f6002600019610100878916150201909516949094049384018190048102820181019092528281526060939092909183018282801561092d5780601f106109025761010080835404028352916020019161092d565b820191906000526020600020905b81548152906001019060200180831161091057829003601f168201915b5050505050905090565b600061094b610944611cc2565b8484611cc6565b50600192915050565b60065490565b600061096f610967611cc2565b858585611d83565b5060019392505050565b6000610983611cc2565b905061099181823085611d83565b604080516001600160a01b03831681526020810184905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a15050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610ac35760018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152610abe93859391929091830182828015610ab45780601f10610a8957610100808354040283529160200191610ab4565b820191906000526020600020905b815481529060010190602001808311610a9757829003601f168201915b5050505050611db2565b610ae5565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b60006001600160a01b038316610b48576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6000610b52611cc2565b6001600160a01b038082166000908152600560209081526040808320938916835292905220549091508315610c0357808401818111610bd8576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600560209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561092d5780601f106109025761010080835404028352916020019161092d565b600083828114610d11576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600460205260408120549080805b848114610f235760008a8a83818110610d4357fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415610dbd576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b6000898984818110610dcb57fe5b90506020020135905080600014610ece57848101858111610e33576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b031614610e72576001600160a01b0383166000908152600460205260409020805483019055610ecc565b86821115610ec7576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101610d2e565b508115801590610f335750808214155b15610fad57818303838110610f8f576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260046020526040902090820190555b6000610fb7611cc2565b9050806001600160a01b03168b6001600160a01b031614610fdd57610fdd8b8285611e3c565b5060019a9950505050505050505050565b6000333014611044576040805162461bcd60e51b815260206004820152601860248201527f4368696c6445524332303a2077726f6e672073656e6465720000000000000000604482015290519081900360640190fd5b604080516001600160a01b03871681526020810186905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a150634fc3585960e01b95945050505050565b6001600160a01b031660009081526004602052604090205490565b60006020819052908152604090205481565b60008382811461111e576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000611128611cc2565b6001600160a01b03811660009081526004602052604081205491925080805b85811461133c5760008b8b8381811061115c57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b031614156111d6576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a848181106111e457fe5b905060200201359050806000146112e75784810185811161124c576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b03161461128b576001600160a01b03831660009081526004602052604090208054830190556112e5565b868211156112e0576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101611147565b50811580159061134c5750808214155b156113c6578183038381106113a8576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260046020526040902090820190555b5060019998505050505050505050565b60028054604080516020601f600019610100600187161502019094168590049384018190048102820181019092528281526060939092909183018282801561092d5780601f106109025761010080835404028352916020019161092d565b60006001600160a01b038316611491576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b61094b61149c611cc2565b8484611e3c565b600061094b6114b0611cc2565b8484611f4b565b6000806114c2611cc2565b90506114d081888888611d83565b6114e2866001600160a01b03166120b2565b1561163257634fc3585960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b1580156115aa57600080fd5b505af11580156115be573d6000803e3d6000fd5b505050506040513d60208110156115d457600080fd5b50516001600160e01b03191614611632576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b6007546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b61168261167d611cc2565b6120b8565b60008282602081101561169457600080fd5b503590506116a3308583611f4b565b50505050565b6001600160a01b038716611704576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b83421115611759576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526020818152604080832080546001810190915581517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a084019490945260c08084018990528451808503909101815260e090930190935281519190920120906117eb6109fd565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561189f573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b031614611911576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b61191c8a8a8a611cc6565b50505050505050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60008061195e611cc2565b905061196b818787611f4b565b61197d866001600160a01b03166120b2565b15611acd57634fc3585960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015611a4557600080fd5b505af1158015611a59573d6000803e3d6000fd5b505050506040513d6020811015611a6f57600080fd5b50516001600160e01b03191614611acd576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b60006001600160e01b031982167f01ffc9a7000000000000000000000000000000000000000000000000000000001480611b3c57506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b80611b7057506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b80611ba457506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b80611bd857506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b80611c0c57506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b80611c4057506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b8061089c5750506001600160e01b0319167f9d8ff7da000000000000000000000000000000000000000000000000000000001490565b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061089c5750506001600160e01b031916634fc3585960e01b1490565b3390565b6001600160a01b038216611d21576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b611d8e838383611f4b565b836001600160a01b0316836001600160a01b0316146116a3576116a3838583611e3c565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b038084166000908152600560209081526040808320938616835292905220546000198114801590611e7357508115155b15611efa57818103818110611ecf576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b6001600160a01b038216611fa6576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b8015612062576001600160a01b03831660009081526004602052604090205481810381811061201c576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03161461205f576001600160a01b038086166000908152600460205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b151590565b6007546001600160a01b0382811691161461211a576040805162461bcd60e51b815260206004820152601a60248201527f4368696c6445524332303a206f6e6c79206465706f7369746f72000000000000604482015290519081900360640190fd5b5056fea26469706673582212201010570c21a7c14134e8d251bde0a5bfde5e8b5343299497cb649ee1ca2af24f64736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xCF2C52CB GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xCF2C52CB EQ PUSH2 0x6FE JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x77E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x7CF JUMPI DUP1 PUSH4 0xEB795549 EQ PUSH2 0x7FD JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x642 JUMPI DUP1 PUSH4 0xC8291D84 EQ PUSH2 0x6D2 JUMPI DUP1 PUSH4 0xCD0D0096 EQ PUSH2 0x6F6 JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5E2 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x5EA JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x616 JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4D4 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0x88D695B2 EQ PUSH2 0x520 JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x150 JUMPI DUP1 PUSH4 0x3C130D90 GT PUSH2 0x12A JUMPI DUP1 PUSH4 0x3C130D90 EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0x4885B254 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x4FC35859 EQ PUSH2 0x427 JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x321 JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x181 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2A6 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x2DC JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x260 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x882 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1EB PUSH2 0x8A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x225 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x20D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x252 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x937 JUMP JUMPDEST PUSH2 0x294 PUSH2 0x954 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x95A JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x979 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x303 PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x294 PUSH2 0x9FD JUMP JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAEB JUMP JUMPDEST PUSH2 0x1EB PUSH2 0xC59 JUMP JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x36B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xCBA JUMP JUMPDEST PUSH2 0x4B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x48A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xFEE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x294 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x109A JUMP JUMPDEST PUSH2 0x294 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10B5 JUMP JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x551 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0x1EB PUSH2 0x13D6 JUMP JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x600 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1434 JUMP JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x62C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x14A3 JUMP JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x693 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x14B7 JUMP JUMPDEST PUSH2 0x6DA PUSH2 0x163F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x294 PUSH2 0x164E JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x73F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x751 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1672 JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x794 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x16A9 JUMP JUMPDEST PUSH2 0x294 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1928 JUMP JUMPDEST PUSH2 0x1CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x813 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x843 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x877 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1953 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x88D DUP3 PUSH2 0x1AD9 JUMP JUMPDEST DUP1 PUSH2 0x89C JUMPI POP PUSH2 0x89C DUP3 PUSH2 0x1C76 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x92D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x902 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x92D 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 0x910 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x94B PUSH2 0x944 PUSH2 0x1CC2 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1CC6 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x96F PUSH2 0x967 PUSH2 0x1CC2 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x1D83 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x983 PUSH2 0x1CC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x991 DUP2 DUP3 ADDRESS DUP6 PUSH2 0x1D83 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 DUP2 EQ PUSH2 0xAC3 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE PUSH2 0xABE SWAP4 DUP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xAB4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA89 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAB4 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 0xA97 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x1DB2 JUMP JUMPDEST PUSH2 0xAE5 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xB48 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB52 PUSH2 0x1CC2 JUMP JUMPDEST 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 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP4 ISZERO PUSH2 0xC03 JUMPI DUP1 DUP5 ADD DUP2 DUP2 GT PUSH2 0xBD8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20616C6C6F77616E6365206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x92D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x902 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x92D JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0xD11 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP1 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0xF23 JUMPI PUSH1 0x0 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0xD43 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xDBD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0xDCB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0xECE JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0xE33 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xE72 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0xECC JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0xEC7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0xD2E JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xF33 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0xFAD JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0xF8F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0xFB7 PUSH2 0x1CC2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xFDD JUMPI PUSH2 0xFDD DUP12 DUP3 DUP6 PUSH2 0x1E3C JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0x1044 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4368696C6445524332303A2077726F6E672073656E6465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH4 0x4FC35859 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x111E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1128 PUSH2 0x1CC2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP DUP1 DUP1 JUMPDEST DUP6 DUP2 EQ PUSH2 0x133C JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x115C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x11D6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x11E4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x12E7 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x124C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x128B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x12E5 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x12E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x1147 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x134C JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x13C6 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x13A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x92D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x902 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x92D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1491 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x94B PUSH2 0x149C PUSH2 0x1CC2 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1E3C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x94B PUSH2 0x14B0 PUSH2 0x1CC2 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1F4B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x14C2 PUSH2 0x1CC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x14D0 DUP2 DUP9 DUP9 DUP9 PUSH2 0x1D83 JUMP JUMPDEST PUSH2 0x14E2 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x20B2 JUMP JUMPDEST ISZERO PUSH2 0x1632 JUMPI PUSH4 0x4FC35859 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1632 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1682 PUSH2 0x167D PUSH2 0x1CC2 JUMP JUMPDEST PUSH2 0x20B8 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP1 POP PUSH2 0x16A3 ADDRESS DUP6 DUP4 PUSH2 0x1F4B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x1704 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373206F776E657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x1759 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2065787069726564207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP2 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP6 ADD MSTORE DUP1 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP5 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0xC0 DUP1 DUP5 ADD DUP10 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 SWAP1 SWAP4 ADD SWAP1 SWAP4 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 SWAP1 PUSH2 0x17EB PUSH2 0x9FD JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x189F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1911 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E76616C6964207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x191C DUP11 DUP11 DUP11 PUSH2 0x1CC6 JUMP JUMPDEST POP POP POP POP POP POP POP 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 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x195E PUSH2 0x1CC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x196B DUP2 DUP8 DUP8 PUSH2 0x1F4B JUMP JUMPDEST PUSH2 0x197D DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x20B2 JUMP JUMPDEST ISZERO PUSH2 0x1ACD JUMPI PUSH4 0x4FC35859 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP5 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A59 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1ACD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x1B3C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x36372B0700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1B70 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xA219A02500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1BA4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x3C130D9000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1BD8 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D07518600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1C0C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xC05327E600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1C40 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x53F41A9700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x89C JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0x9D8FF7DA00000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x89C JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0x4FC35859 PUSH1 0xE0 SHL EQ SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D21 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 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 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x1D8E DUP4 DUP4 DUP4 PUSH2 0x1F4B JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x16A3 JUMPI PUSH2 0x16A3 DUP4 DUP6 DUP4 PUSH2 0x1E3C JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x1E73 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1EFA JUMPI DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x1ECF JUMPI PUSH1 0x40 DUP1 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 SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 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 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1FA6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x2062 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x201C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x205F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP7 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE JUMPDEST POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x211A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4368696C6445524332303A206F6E6C79206465706F7369746F72000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LT LT JUMPI 0xC 0x21 0xA7 0xC1 COINBASE CALLVALUE 0xE8 0xD2 MLOAD 0xBD 0xE0 0xA5 0xBF 0xDE 0x5E DUP12 MSTORE8 NUMBER 0x29 SWAP5 SWAP8 0xCB PUSH5 0x9EE1CA2AF2 0x4F PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "636:2680:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1078:221;;;;;;;;;;;;;;;;-1:-1:-1;1078:221:54;-1:-1:-1;;;;;;1078:221:54;;:::i;:::-;;;;;;;;;;;;;;;;;;4506:92:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3730:166;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3730:166:38;;;;;;;;:::i;3263:100::-;;;:::i;:::-;;;;;;;;;;;;;;;;4120:216;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4120:216:38;;;;;;;;;;;;;;;;;:::i;2302:197:54:-;;;;;;;;;;;;;;;;-1:-1:-1;2302:197:54;;:::i;:::-;;4776:92:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11199:354;;;:::i;5309:625::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5309:625:38;;;;;;;;:::i;5038:100::-;;;:::i;8089:1756::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8089:1756:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8089:1756:38;;-1:-1:-1;8089:1756:38;-1:-1:-1;8089:1756:38;:::i;2982:332:54:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2982:332:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2982:332:54;;-1:-1:-1;2982:332:54;-1:-1:-1;2982:332:54;:::i;:::-;;;;-1:-1:-1;;;;;;2982:332:54;;;;;;;;;;;;;;3396:119:38;;;;;;;;;;;;;;;;-1:-1:-1;3396:119:38;-1:-1:-1;;;;;3396:119:38;;:::i;1587:50::-;;;;;;;;;;;;;;;;-1:-1:-1;1587:50:38;-1:-1:-1;;;;;1587:50:38;;:::i;6429:1613::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6429:1613:38;;-1:-1:-1;6429:1613:38;-1:-1:-1;6429:1613:38;:::i;4639:96::-;;;:::i;5976:277::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5976:277:38;;;;;;;;:::i;3929:158::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3929:158:38;;;;;;;;:::i;10505:473::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10505:473:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10505:473:38;;-1:-1:-1;10505:473:38;-1:-1:-1;10505:473:38;:::i;1003:32:55:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1003:32:55;;;;;;;;;;;;;;1402:42:38;;;:::i;1770:244:54:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1770:244:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1770:244:54;;-1:-1:-1;1770:244:54;-1:-1:-1;1770:244:54;:::i;11592:711:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11592:711:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3548:149::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3548:149:38;;;;;;;;;;:::i;10020:439::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10020:439:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10020:439:38;;-1:-1:-1;10020:439:38;-1:-1:-1;10020:439:38;:::i;1078:221:54:-;1185:4;1208:36;1232:11;1208:23;:36::i;:::-;:84;;;;1248:44;1280:11;1248:31;:44::i;:::-;1201:91;1078:221;-1:-1:-1;;1078:221:54:o;4506:92:38:-;4586:5;4579:12;;;;;;;;-1:-1:-1;;4579:12:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4554:13;;4579:12;;4586:5;;4579:12;;4586:5;4579:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4506:92;:::o;3730:166::-;3814:4;3830:38;3839:12;:10;:12::i;:::-;3853:7;3862:5;3830:8;:38::i;:::-;-1:-1:-1;3885:4:38;3730:166;;;;:::o;3263:100::-;3344:12;;3263:100;:::o;4120:216::-;4248:4;4264:44;4278:12;:10;:12::i;:::-;4292:4;4298:2;4302:5;4264:13;:44::i;:::-;-1:-1:-1;4325:4:38;4120:216;;;;;:::o;2302:197:54:-;2361:14;2378:12;:10;:12::i;:::-;2361:29;;2400:52;2414:6;2422;2438:4;2445:6;2400:13;:52::i;:::-;2467:25;;;-1:-1:-1;;;;;2467:25:54;;;;;;;;;;;;;;;;;;;;;;;2302:197;;:::o;4776:92:38:-;4852:9;4776:92;:::o;11199:354::-;11257:7;11335:9;11458:17;11447:28;;:99;;11539:5;11498:48;;;;;;;;;;;;;-1:-1:-1;;11498:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;11524:7;;11498:48;;11539:5;;11498:48;;11539:5;11498:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:25;:48::i;:::-;11447:99;;;11478:17;11447:99;11440:106;;;11199:354;:::o;5309:625::-;5408:4;-1:-1:-1;;;;;5432:21:38;;5424:61;;;;;-1:-1:-1;;;5424:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;5495:13;5511:12;:10;:12::i;:::-;-1:-1:-1;;;;;5554:18:38;;;5533;5554;;;:11;:18;;;;;;;;:27;;;;;;;;;;5495:28;;-1:-1:-1;5595:15:38;;5591:264;;5649:23;;;5694:25;;;5686:63;;;;;-1:-1:-1;;;5686:63:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5763:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:42;;;5793:12;-1:-1:-1;5591:264:38;5885:7;-1:-1:-1;;;;;5869:36:38;5878:5;-1:-1:-1;;;;;5869:36:38;;5894:10;5869:36;;;;;;;;;;;;;;;;;;-1:-1:-1;5923:4:38;;5309:625;-1:-1:-1;;;;5309:625:38:o;5038:100::-;5122:9;5115:16;;;;;;;;-1:-1:-1;;5115:16:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5090:13;;5115:16;;5122:9;;5115:16;;5122:9;5115:16;;;;;;;;;;;;;;;;;;;;;;;;8089:1756;8253:4;8286:10;8321:23;;;8313:62;;;;;-1:-1:-1;;;8313:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8404:15:38;;8386;8404;;;:9;:15;;;;;;;8386;;8498:791;8519:6;8514:1;:11;8498:791;;8546:10;8559;;8570:1;8559:13;;;;;;;;;;;;;-1:-1:-1;;;;;8559:13:38;8546:26;;8608:1;-1:-1:-1;;;;;8594:16:38;:2;-1:-1:-1;;;;;8594:16:38;;;8586:51;;;;;-1:-1:-1;;;8586:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8652:13;8668:6;;8675:1;8668:9;;;;;;;;;;;;;8652:25;;8696:5;8705:1;8696:10;8692:542;;8750:18;;;8794:26;;;8786:61;;;;;-1:-1:-1;;;8786:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8878:13;8865:26;;8921:2;-1:-1:-1;;;;;8913:10:38;:4;-1:-1:-1;;;;;8913:10:38;;8909:311;;-1:-1:-1;;;;;8947:13:38;;;;;;:9;:13;;;;;:22;;;;;;8909:311;;;9033:7;9024:5;:16;;9016:56;;;;;-1:-1:-1;;;9016:56:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;9094:31;;;;8909:311;8692:542;;9268:2;-1:-1:-1;;;;;9253:25:38;9262:4;-1:-1:-1;;;;;9253:25:38;;9272:5;9253:25;;;;;;;;;;;;;;;;;;-1:-1:-1;;8527:3:38;;8498:791;;;-1:-1:-1;9303:15:38;;;;;:55;;;9336:22;9322:10;:36;;9303:55;9299:380;;;9395:20;;;9437;;;9429:60;;;;;-1:-1:-1;;;9429:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9559:15:38;;;;;;:9;:15;;;;;9577:35;;;9559:53;;9299:380;9689:14;9706:12;:10;:12::i;:::-;9689:29;;9740:6;-1:-1:-1;;;;;9732:14:38;:4;-1:-1:-1;;;;;9732:14:38;;9728:89;;9762:44;9781:4;9787:6;9795:10;9762:18;:44::i;:::-;-1:-1:-1;9834:4:38;;8089:1756;-1:-1:-1;;;;;;;;;;8089:1756:38:o;2982:332:54:-;3155:6;3181:10;3203:4;3181:27;3173:64;;;;;-1:-1:-1;;;3173:64:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;3252:23;;;-1:-1:-1;;;;;3252:23:54;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2982:332:54;;;;;;;:::o;3396:119:38:-;-1:-1:-1;;;;;3490:18:38;3464:7;3490:18;;;:9;:18;;;;;;;3396:119::o;1587:50::-;;;;;;;;;;;;;;:::o;6429:1613::-;6545:4;6578:10;6613:23;;;6605:62;;;;;-1:-1:-1;;;6605:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6677:14;6694:12;:10;:12::i;:::-;-1:-1:-1;;;;;6734:17:38;;6716:15;6734:17;;;:9;:17;;;;;;6677:29;;-1:-1:-1;6716:15:38;;6830:793;6851:6;6846:1;:11;6830:793;;6878:10;6891;;6902:1;6891:13;;;;;;;;;;;;;-1:-1:-1;;;;;6891:13:38;6878:26;;6940:1;-1:-1:-1;;;;;6926:16:38;:2;-1:-1:-1;;;;;6926:16:38;;;6918:51;;;;;-1:-1:-1;;;6918:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6984:13;7000:6;;7007:1;7000:9;;;;;;;;;;;;;6984:25;;7027:5;7036:1;7027:10;7023:544;;7081:18;;;7125:26;;;7117:61;;;;;-1:-1:-1;;;7117:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;7209:13;7196:26;;7254:2;-1:-1:-1;;;;;7244:12:38;:6;-1:-1:-1;;;;;7244:12:38;;7240:313;;-1:-1:-1;;;;;7280:13:38;;;;;;:9;:13;;;;;:22;;;;;;7240:313;;;7366:7;7357:5;:16;;7349:56;;;;;-1:-1:-1;;;7349:56:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;7427:31;;;;7240:313;7023:544;;7602:2;-1:-1:-1;;;;;7585:27:38;7594:6;-1:-1:-1;;;;;7585:27:38;;7606:5;7585:27;;;;;;;;;;;;;;;;;;-1:-1:-1;;6859:3:38;;6830:793;;;-1:-1:-1;7637:15:38;;;;;:55;;;7670:22;7656:10;:36;;7637:55;7633:382;;;7729:20;;;7771;;;7763:60;;;;;-1:-1:-1;;;7763:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7893:17:38;;;;;;:9;:17;;;;;7913:35;;;7893:55;;7633:382;-1:-1:-1;8031:4:38;;6429:1613;-1:-1:-1;;;;;;;;;6429:1613:38:o;4639:96::-;4721:7;4714:14;;;;;;;-1:-1:-1;;4714:14:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4689:13;;4714:14;;4721:7;;4714:14;;4721:7;4714:14;;;;;;;;;;;;;;;;;;;;;;;;5976:277;6080:4;-1:-1:-1;;;;;6104:21:38;;6096:61;;;;;-1:-1:-1;;;6096:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6167:58;6186:12;:10;:12::i;:::-;6200:7;6209:15;6167:18;:58::i;3929:158::-;4009:4;4025:34;4035:12;:10;:12::i;:::-;4049:2;4053:5;4025:9;:34::i;10505:473::-;10667:4;10683:14;10700:12;:10;:12::i;:::-;10683:29;;10722:39;10736:6;10744:4;10750:2;10754:6;10722:13;:39::i;:::-;10775:15;:2;-1:-1:-1;;;;;10775:13:38;;:15::i;:::-;10771:180;;;-1:-1:-1;;;10814:98:38;;;10829:2;-1:-1:-1;;;;;10814:34:38;;10849:6;10857:4;10863:6;10871:4;;10814:62;;;;;;;;;;;;;-1:-1:-1;;;;;10814:62:38;;;;;;-1:-1:-1;;;;;10814:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10814:62:38;-1:-1:-1;;;;;;10814:98:38;;10806:134;;;;;-1:-1:-1;;;10806:134:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10967:4:38;;10505:473;-1:-1:-1;;;;;;10505:473:38:o;1003:32:55:-;;;-1:-1:-1;;;;;1003:32:55;;:::o;1402:42:38:-;;;:::o;1770:244:54:-;1863:35;1885:12;:10;:12::i;:::-;1863:21;:35::i;:::-;1908:14;1936:11;;1925:34;;;;;;;;;;-1:-1:-1;1925:34:54;;-1:-1:-1;1969:38:54;1987:4;1994;1925:34;1969:9;:38::i;:::-;1770:244;;;;:::o;11592:711:38:-;-1:-1:-1;;;;;11810:19:38;;11802:57;;;;;-1:-1:-1;;;11802:57:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;11896:8;11877:15;:27;;11869:61;;;;;-1:-1:-1;;;11869:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12022:13:38;;;11940:18;12022:13;;;;;;;;;;;:15;;;;;;;;11971:77;;1329:66;11971:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11961:88;;;;;;;;12113:18;:16;:18::i;:::-;12133:10;12084:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12074:71;;;;;;12059:86;;12155:14;12172:24;12182:4;12188:1;12191;12194;12172:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12155:41;;12224:5;-1:-1:-1;;;;;12214:15:38;:6;-1:-1:-1;;;;;12214:15:38;;12206:49;;;;;-1:-1:-1;;;12206:49:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;12265:31;12274:5;12281:7;12290:5;12265:8;:31::i;:::-;11592:711;;;;;;;;;;:::o;3548:149::-;-1:-1:-1;;;;;3663:18:38;;;3637:7;3663:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3548:149::o;10020:439::-;10156:4;10172:14;10189:12;:10;:12::i;:::-;10172:29;;10211;10221:6;10229:2;10233:6;10211:9;:29::i;:::-;10254:15;:2;-1:-1:-1;;;;;10254:13:38;;:15::i;:::-;10250:182;;;-1:-1:-1;;;10293:100:38;;;10308:2;-1:-1:-1;;;;;10293:34:38;;10328:6;10336;10344;10352:4;;10293:64;;;;;;;;;;;;;-1:-1:-1;;;;;10293:64:38;;;;;;-1:-1:-1;;;;;10293:64:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10293:64:38;-1:-1:-1;;;;;;10293:100:38;;10285:136;;;;;-1:-1:-1;;;10285:136:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10448:4:38;;10020:439;-1:-1:-1;;;;;10020:439:38:o;2491:610::-;2576:4;-1:-1:-1;;;;;;2611:40:38;;2626:25;2611:40;;:95;;-1:-1:-1;;;;;;;2667:39:38;;2682:24;2667:39;2611:95;:158;;;-1:-1:-1;;;;;;;2722:47:38;;2737:32;2722:47;2611:158;:221;;;-1:-1:-1;;;;;;;2785:47:38;;2800:32;2785:47;2611:221;:285;;;-1:-1:-1;;;;;;;2848:48:38;;2863:33;2848:48;2611:285;:354;;;-1:-1:-1;;;;;;;2912:53:38;;2927:38;2912:53;2611:354;:422;;;-1:-1:-1;;;;;;;2981:52:38;;2996:37;2981:52;2611:422;:483;;;-1:-1:-1;;;;;;;;3049:45:38;3064:30;3049:45;;2491:610::o;761:206:40:-;846:4;-1:-1:-1;;;;;;869:40:40;;884:25;869:40;;:91;;-1:-1:-1;;;;;;;;913:47:40;-1:-1:-1;;;913:47:40;;761:206::o;355:104:5:-;442:10;355:104;:::o;12438:273:38:-;-1:-1:-1;;;;;12560:21:38;;12552:61;;;;;-1:-1:-1;;;12552:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12623:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:35;;;12673:31;;;;;;;;;;;;;;;;;12438:273;;;:::o;13965:263::-;14102:26;14112:4;14118:2;14122:5;14102:9;:26::i;:::-;14150:6;-1:-1:-1;;;;;14142:14:38;:4;-1:-1:-1;;;;;14142:14:38;;14138:84;;14172:39;14191:4;14197:6;14205:5;14172:18;:39::i;17687:463::-;17995:16;;;;;;;17846:283;;;17878:95;17846:283;;;;;;;;;;;18033:14;17846:283;;;;;;;;;;;18106:4;17846:283;;;;;;;;;;;;;;;;;;;;;;;;;17819:324;;;;;;17687:463::o;12717:682::-;-1:-1:-1;;;;;12872:18:38;;;12851;12872;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;12914:31:38;;;;;:55;;-1:-1:-1;12949:20:38;;;12914:55;12910:432;;;13127:28;;;13177:25;;;13169:67;;;;;-1:-1:-1;;;13169:67:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13250:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:42;;;13280:12;-1:-1:-1;12910:432:38;13372:7;-1:-1:-1;;;;;13356:36:38;13365:5;-1:-1:-1;;;;;13356:36:38;;13381:10;13356:36;;;;;;;;;;;;;;;;;;12717:682;;;;:::o;13405:554::-;-1:-1:-1;;;;;13530:16:38;;13522:51;;;;;-1:-1:-1;;;13522:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;13588:10;;13584:328;;-1:-1:-1;;;;;13632:15:38;;13614;13632;;;:9;:15;;;;;;13682;;;13719:20;;;13711:60;;;;;-1:-1:-1;;;13711:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;13797:2;-1:-1:-1;;;;;13789:10:38;:4;-1:-1:-1;;;;;13789:10:38;;13785:117;;-1:-1:-1;;;;;13819:15:38;;;;;;;:9;:15;;;;;;:28;;;13865:13;;;;;;:22;;;;;;13785:117;13584:328;;;13942:2;-1:-1:-1;;;;;13927:25:38;13936:4;-1:-1:-1;;;;;13927:25:38;;13946:5;13927:25;;;;;;;;;;;;;;;;;;13405:554;;;:::o;913:377:9:-;1229:20;1275:8;;;913:377::o;1391:146:55:-;1482:17;;-1:-1:-1;;;;;1471:28:55;;;1482:17;;1471:28;1463:67;;;;;-1:-1:-1;;;1463:67:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;1391:146;:::o"
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "batchTransfer(address[],uint256[])": "88d695b2",
              "batchTransferFrom(address,address[],uint256[])": "4885b254",
              "childChainManager()": "c8291d84",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "deploymentChainId()": "cd0d0096",
              "deposit(address,bytes)": "cf2c52cb",
              "increaseAllowance(address,uint256)": "39509351",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "onERC20Received(address,address,uint256,bytes)": "4fc35859",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "safeTransfer(address,uint256,bytes)": "eb795549",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI()": "3c130d90",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "withdraw(uint256)": "2e1a7d4d"
            }
          }
        }
      },
      "contracts/token/ERC20/polygon/child/PolygonChildERC20Base.sol": {
        "PolygonChildERC20Base": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Withdrawn",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "childChainManager",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "depositData",
                  "type": "bytes"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC20Received",
              "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "childChainManager()": "c8291d84",
              "deposit(address,bytes)": "cf2c52cb",
              "onERC20Received(address,address,uint256,bytes)": "4fc35859",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "contracts/token/ERC20/polygon/child/PolygonChildERC20Burnable.sol": {
        "PolygonChildERC20Burnable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name_",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol_",
                  "type": "string"
                },
                {
                  "internalType": "uint8",
                  "name": "decimals_",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "childChainManager",
                  "type": "address"
                }
              ],
              "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"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Withdrawn",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "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": "value",
                  "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": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "childChainManager",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "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": [],
              "name": "deploymentChainId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "depositData",
                  "type": "bytes"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "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": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC20Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransfer",
              "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"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "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": [],
              "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": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60e06040523480156200001157600080fd5b5060405162002b2638038062002b26833981810160405260808110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060409081526020828101519290910151865192945092508291869186918691849184918491620001d09160019190860190620002e3565b508151620001e6906002906020850190620002e3565b507fff0000000000000000000000000000000000000000000000000000000000000060f882901b1660c05246608081905262000223818562000259565b60a0525050600780546001600160a01b0319166001600160a01b039790971696909617909555506200038f975050505050505050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200031b576000855562000366565b82601f106200033657805160ff191683800117855562000366565b8280016001018555821562000366579182015b828111156200036657825182559160200191906001019062000349565b506200037492915062000378565b5090565b5b8082111562000374576000815560010162000379565b60805160a05160c05160f81c612762620003c460003980610b7f525080610c69525080610ba6528061182552506127626000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063b88d4fde11610097578063cf2c52cb11610071578063cf2c52cb1461082a578063d505accf146108aa578063dd62ed3e146108fb578063eb79554914610929576101c4565b8063b88d4fde1461076e578063c8291d84146107fe578063cd0d009614610822576101c4565b806388d695b2116100d357806388d695b21461064c57806395d89b411461070e578063a457c2d714610716578063a9059cbb14610742576101c4565b806370a08231146105d457806379cc6790146105fa5780637ecebe0014610626576101c4565b8063313ce567116101665780633c130d90116101405780633c130d901461043057806342966c68146104385780634885b254146104555780634fc3585914610527576101c4565b8063313ce567146103de5780633644e515146103fc5780633950935114610404576101c4565b806318160ddd116101a257806318160ddd146102ad5780631b9a7529146102c757806323b872dd146103895780632e1a7d4d146103bf576101c4565b806301ffc9a7146101c957806306fdde0314610204578063095ea7b314610281575b600080fd5b6101f0600480360360208110156101df57600080fd5b50356001600160e01b0319166109ae565b604080519115158252519081900360200190f35b61020c6109ce565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024657818101518382015260200161022e565b50505050905090810190601f1680156102735780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f06004803603604081101561029757600080fd5b506001600160a01b038135169060200135610a63565b6102b5610a80565b60408051918252519081900360200190f35b6101f0600480360360408110156102dd57600080fd5b8101906020810181356401000000008111156102f857600080fd5b82018360208201111561030a57600080fd5b8035906020019184602083028401116401000000008311171561032c57600080fd5b91939092909160208101903564010000000081111561034a57600080fd5b82018360208201111561035c57600080fd5b8035906020019184602083028401116401000000008311171561037e57600080fd5b509092509050610a86565b6101f06004803603606081101561039f57600080fd5b506001600160a01b03813581169160208101359091169060400135610b00565b6103dc600480360360208110156103d557600080fd5b5035610b1f565b005b6103e6610b7d565b6040805160ff9092168252519081900360200190f35b6102b5610ba1565b6101f06004803603604081101561041a57600080fd5b506001600160a01b038135169060200135610c8f565b61020c610dfd565b6101f06004803603602081101561044e57600080fd5b5035610e5e565b6101f06004803603606081101561046b57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561049657600080fd5b8201836020820111156104a857600080fd5b803590602001918460208302840111640100000000831117156104ca57600080fd5b9193909290916020810190356401000000008111156104e857600080fd5b8201836020820111156104fa57600080fd5b8035906020019184602083028401116401000000008311171561051c57600080fd5b509092509050610e79565b6105b76004803603608081101561053d57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561057857600080fd5b82018360208201111561058a57600080fd5b803590602001918460018302840111640100000000831117156105ac57600080fd5b5090925090506111ad565b604080516001600160e01b03199092168252519081900360200190f35b6102b5600480360360208110156105ea57600080fd5b50356001600160a01b0316611263565b6101f06004803603604081101561061057600080fd5b506001600160a01b03813516906020013561127e565b6102b56004803603602081101561063c57600080fd5b50356001600160a01b031661128a565b6101f06004803603604081101561066257600080fd5b81019060208101813564010000000081111561067d57600080fd5b82018360208201111561068f57600080fd5b803590602001918460208302840111640100000000831117156106b157600080fd5b9193909290916020810190356401000000008111156106cf57600080fd5b8201836020820111156106e157600080fd5b8035906020019184602083028401116401000000008311171561070357600080fd5b50909250905061129c565b61020c6115ab565b6101f06004803603604081101561072c57600080fd5b506001600160a01b038135169060200135611609565b6101f06004803603604081101561075857600080fd5b506001600160a01b038135169060200135611678565b6101f06004803603608081101561078457600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156107bf57600080fd5b8201836020820111156107d157600080fd5b803590602001918460018302840111640100000000831117156107f357600080fd5b50909250905061168c565b610806611814565b604080516001600160a01b039092168252519081900360200190f35b6102b5611823565b6103dc6004803603604081101561084057600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561086b57600080fd5b82018360208201111561087d57600080fd5b8035906020019184600183028401116401000000008311171561089f57600080fd5b509092509050611847565b6103dc600480360360e08110156108c057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561187d565b6102b56004803603604081101561091157600080fd5b506001600160a01b0381358116916020013516611afc565b6101f06004803603606081101561093f57600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561096f57600080fd5b82018360208201111561098157600080fd5b803590602001918460018302840111640100000000831117156109a357600080fd5b509092509050611b27565b60006109b982611cad565b806109c857506109c882611ceb565b92915050565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a595780601f10610a2e57610100808354040283529160200191610a59565b820191906000526020600020905b815481529060010190602001808311610a3c57829003601f168201915b5050505050905090565b6000610a77610a70611d37565b8484611d3b565b50600192915050565b60065490565b6000610af585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808902828101820190935288825290935088925087918291850190849080828437600092019190915250611df892505050565b506001949350505050565b6000610b15610b0d611d37565b858585611fb4565b5060019392505050565b6000610b29611d37565b9050610b358183611fe3565b604080516001600160a01b03831681526020810184905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a15050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610c675760018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152610c6293859391929091830182828015610c585780601f10610c2d57610100808354040283529160200191610c58565b820191906000526020600020905b815481529060010190602001808311610c3b57829003601f168201915b5050505050612022565b610c89565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b60006001600160a01b038316610cec576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6000610cf6611d37565b6001600160a01b038082166000908152600560209081526040808320938916835292905220549091508315610da757808401818111610d7c576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600560209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a595780601f10610a2e57610100808354040283529160200191610a59565b6000610e71610e6b611d37565b836120ac565b506001919050565b600083828114610ed0576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600460205260408120549080805b8481146110e25760008a8a83818110610f0257fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415610f7c576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b6000898984818110610f8a57fe5b9050602002013590508060001461108d57848101858111610ff2576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b031614611031576001600160a01b038316600090815260046020526040902080548301905561108b565b86821115611086576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101610eed565b5081158015906110f25750808214155b1561116c5781830383811061114e576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260046020526040902090820190555b6000611176611d37565b9050806001600160a01b03168b6001600160a01b03161461119c5761119c8b828561218b565b5060019a9950505050505050505050565b6000333014611203576040805162461bcd60e51b815260206004820152601860248201527f4368696c6445524332303a2077726f6e672073656e6465720000000000000000604482015290519081900360640190fd5b61120d30856120ac565b604080516001600160a01b03871681526020810186905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a150634fc3585960e01b95945050505050565b6001600160a01b031660009081526004602052604090205490565b6000610a778383611fe3565b60006020819052908152604090205481565b6000838281146112f3576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60006112fd611d37565b6001600160a01b03811660009081526004602052604081205491925080805b8581146115115760008b8b8381811061133157fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b031614156113ab576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a848181106113b957fe5b905060200201359050806000146114bc57848101858111611421576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b031614611460576001600160a01b03831660009081526004602052604090208054830190556114ba565b868211156114b5576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505060010161131c565b5081158015906115215750808214155b1561159b5781830383811061157d576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260046020526040902090820190555b5060019998505050505050505050565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610a595780601f10610a2e57610100808354040283529160200191610a59565b60006001600160a01b038316611666576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b610a77611671611d37565b848461218b565b6000610a77611685611d37565b848461229a565b600080611697611d37565b90506116a581888888611fb4565b6116b7866001600160a01b0316612401565b1561180757634fc3585960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561177f57600080fd5b505af1158015611793573d6000803e3d6000fd5b505050506040513d60208110156117a957600080fd5b50516001600160e01b03191614611807576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b6007546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b611857611852611d37565b612407565b60008282602081101561186957600080fd5b50359050611877848261246c565b50505050565b6001600160a01b0387166118d8576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b8342111561192d576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526020818152604080832080546001810190915581517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a084019490945260c08084018990528451808503909101815260e090930190935281519190920120906119bf610ba1565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611a73573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b031614611ae5576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b611af08a8a8a611d3b565b50505050505050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b600080611b32611d37565b9050611b3f81878761229a565b611b51866001600160a01b0316612401565b15611ca157634fc3585960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015611c1957600080fd5b505af1158015611c2d573d6000803e3d6000fd5b505050506040513d6020811015611c4357600080fd5b50516001600160e01b03191614611ca1576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b60006001600160e01b031982167f20c07ed10000000000000000000000000000000000000000000000000000000014806109c857506109c88261258f565b60006001600160e01b031982167f01ffc9a70000000000000000000000000000000000000000000000000000000014806109c85750506001600160e01b031916634fc3585960e01b1490565b3390565b6001600160a01b038216611d96576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b815181518114611e4f576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000611e59611d37565b90506000805b838114611f9c576000868281518110611e7457fe5b602002602001015190506000868381518110611e8c57fe5b6020026020010151905080600014611f2d576001600160a01b038216600090815260046020526040902054818103818110611f0e576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205550928301925b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3846001600160a01b0316826001600160a01b031614611f9257611f9282868361218b565b5050600101611e5f565b508015611fad576006805482900390555b5050505050565b611fbf83838361229a565b836001600160a01b0316836001600160a01b0316146118775761187783858361218b565b611fed82826120ac565b6000611ff7611d37565b9050806001600160a01b0316836001600160a01b03161461201d5761201d83828461218b565b505050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b8015612146576001600160a01b038216600090815260046020526040902054818103818110612122576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902055506006805482900390555b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b0380841660009081526005602090815260408083209386168352929052205460001981148015906121c257508115155b156122495781810381811061221e576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b6001600160a01b0382166122f5576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b80156123b1576001600160a01b03831660009081526004602052604090205481810381811061236b576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b0316146123ae576001600160a01b038086166000908152600460205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b151590565b6007546001600160a01b03828116911614612469576040805162461bcd60e51b815260206004820152601a60248201527f4368696c6445524332303a206f6e6c79206465706f7369746f72000000000000604482015290519081900360640190fd5b50565b6001600160a01b0382166124c7576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b600654811561254957808201818111612527576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6006556001600160a01b03831660009081526004602052604090208054830190555b6040805183815290516001600160a01b038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b60006001600160e01b031982167f01ffc9a70000000000000000000000000000000000000000000000000000000014806125f257506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b8061262657506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b8061265a57506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b8061268e57506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b806126c257506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b806126f657506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b806109c85750506001600160e01b0319167f9d8ff7da00000000000000000000000000000000000000000000000000000000149056fea2646970667358221220d0a01a35125f846d62b34a80bc7343b91a493240f573450971819ba9b1e9631164736f6c63430007060033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2B26 CODESIZE SUB DUP1 PUSH3 0x2B26 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD MLOAD SWAP3 SWAP1 SWAP2 ADD MLOAD DUP7 MLOAD SWAP3 SWAP5 POP SWAP3 POP DUP3 SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP5 SWAP2 DUP5 SWAP2 DUP5 SWAP2 PUSH3 0x1D0 SWAP2 PUSH1 0x1 SWAP2 SWAP1 DUP7 ADD SWAP1 PUSH3 0x2E3 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x1E6 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x2E3 JUMP JUMPDEST POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF8 DUP3 SWAP1 SHL AND PUSH1 0xC0 MSTORE CHAINID PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH3 0x223 DUP2 DUP6 PUSH3 0x259 JUMP JUMPDEST PUSH1 0xA0 MSTORE POP POP PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP6 SSTORE POP PUSH3 0x38F SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x31B JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x366 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x336 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x366 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x366 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x366 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x349 JUMP JUMPDEST POP PUSH3 0x374 SWAP3 SWAP2 POP PUSH3 0x378 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x374 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x379 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xF8 SHR PUSH2 0x2762 PUSH3 0x3C4 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xB7F MSTORE POP DUP1 PUSH2 0xC69 MSTORE POP DUP1 PUSH2 0xBA6 MSTORE DUP1 PUSH2 0x1825 MSTORE POP PUSH2 0x2762 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 0x1C4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xCF2C52CB GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xCF2C52CB EQ PUSH2 0x82A JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x8AA JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x8FB JUMPI DUP1 PUSH4 0xEB795549 EQ PUSH2 0x929 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x76E JUMPI DUP1 PUSH4 0xC8291D84 EQ PUSH2 0x7FE JUMPI DUP1 PUSH4 0xCD0D0096 EQ PUSH2 0x822 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x88D695B2 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x88D695B2 EQ PUSH2 0x64C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x70E JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x716 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x742 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x5D4 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x5FA JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x626 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x3C130D90 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x3C130D90 EQ PUSH2 0x430 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0x4885B254 EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0x4FC35859 EQ PUSH2 0x527 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x3FC JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x404 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0x1B9A7529 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x3BF JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x281 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH2 0x9CE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x246 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x22E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x273 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x297 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA63 JUMP JUMPDEST PUSH2 0x2B5 PUSH2 0xA80 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x30A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x35C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xA86 JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x3DC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB1F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E6 PUSH2 0xB7D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2B5 PUSH2 0xBA1 JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC8F JUMP JUMPDEST PUSH2 0x20C PUSH2 0xDFD JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xE5E JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x51C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xE79 JUMP JUMPDEST PUSH2 0x5B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x578 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x58A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1263 JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x127E JUMP JUMPDEST PUSH2 0x2B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x63C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x128A JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x662 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x703 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x129C JUMP JUMPDEST PUSH2 0x20C PUSH2 0x15AB JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1609 JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x758 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1678 JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x784 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x168C JUMP JUMPDEST PUSH2 0x806 PUSH2 0x1814 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2B5 PUSH2 0x1823 JUMP JUMPDEST PUSH2 0x3DC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x86B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x87D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x89F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1847 JUMP JUMPDEST PUSH2 0x3DC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x8C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x187D JUMP JUMPDEST PUSH2 0x2B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x911 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1AFC JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x93F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x96F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x981 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1B27 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B9 DUP3 PUSH2 0x1CAD JUMP JUMPDEST DUP1 PUSH2 0x9C8 JUMPI POP PUSH2 0x9C8 DUP3 PUSH2 0x1CEB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA59 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA2E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA59 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 0xA3C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA77 PUSH2 0xA70 PUSH2 0x1D37 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1D3B JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF5 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE SWAP1 SWAP4 POP DUP9 SWAP3 POP DUP8 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1DF8 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB15 PUSH2 0xB0D PUSH2 0x1D37 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x1FB4 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB29 PUSH2 0x1D37 JUMP JUMPDEST SWAP1 POP PUSH2 0xB35 DUP2 DUP4 PUSH2 0x1FE3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 DUP2 EQ PUSH2 0xC67 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE PUSH2 0xC62 SWAP4 DUP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xC58 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC2D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC58 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 0xC3B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x2022 JUMP JUMPDEST PUSH2 0xC89 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xCEC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xCF6 PUSH2 0x1D37 JUMP JUMPDEST 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 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP4 ISZERO PUSH2 0xDA7 JUMPI DUP1 DUP5 ADD DUP2 DUP2 GT PUSH2 0xD7C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20616C6C6F77616E6365206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA59 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA2E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA59 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE71 PUSH2 0xE6B PUSH2 0x1D37 JUMP JUMPDEST DUP4 PUSH2 0x20AC JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0xED0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP1 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0x10E2 JUMPI PUSH1 0x0 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0xF02 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xF7C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0xF8A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x108D JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0xFF2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1031 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x108B JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x1086 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0xEED JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x10F2 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x116C JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x114E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0x1176 PUSH2 0x1D37 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x119C JUMPI PUSH2 0x119C DUP12 DUP3 DUP6 PUSH2 0x218B JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0x1203 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4368696C6445524332303A2077726F6E672073656E6465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x120D ADDRESS DUP6 PUSH2 0x20AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH4 0x4FC35859 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA77 DUP4 DUP4 PUSH2 0x1FE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x12F3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12FD PUSH2 0x1D37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP DUP1 DUP1 JUMPDEST DUP6 DUP2 EQ PUSH2 0x1511 JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x1331 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x13AB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x13B9 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x14BC JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x1421 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1460 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x14BA JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x14B5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x131C JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1521 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x159B JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x157D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA59 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA2E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA59 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1666 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xA77 PUSH2 0x1671 PUSH2 0x1D37 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x218B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA77 PUSH2 0x1685 PUSH2 0x1D37 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x229A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1697 PUSH2 0x1D37 JUMP JUMPDEST SWAP1 POP PUSH2 0x16A5 DUP2 DUP9 DUP9 DUP9 PUSH2 0x1FB4 JUMP JUMPDEST PUSH2 0x16B7 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2401 JUMP JUMPDEST ISZERO PUSH2 0x1807 JUMPI PUSH4 0x4FC35859 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x177F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1793 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1857 PUSH2 0x1852 PUSH2 0x1D37 JUMP JUMPDEST PUSH2 0x2407 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP1 POP PUSH2 0x1877 DUP5 DUP3 PUSH2 0x246C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x18D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373206F776E657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x192D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2065787069726564207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP2 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP6 ADD MSTORE DUP1 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP5 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0xC0 DUP1 DUP5 ADD DUP10 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 SWAP1 SWAP4 ADD SWAP1 SWAP4 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 SWAP1 PUSH2 0x19BF PUSH2 0xBA1 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A73 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1AE5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E76616C6964207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1AF0 DUP11 DUP11 DUP11 PUSH2 0x1D3B JUMP JUMPDEST POP POP POP POP POP POP POP 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 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B32 PUSH2 0x1D37 JUMP JUMPDEST SWAP1 POP PUSH2 0x1B3F DUP2 DUP8 DUP8 PUSH2 0x229A JUMP JUMPDEST PUSH2 0x1B51 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2401 JUMP JUMPDEST ISZERO PUSH2 0x1CA1 JUMPI PUSH4 0x4FC35859 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP5 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1CA1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x20C07ED100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x9C8 JUMPI POP PUSH2 0x9C8 DUP3 PUSH2 0x258F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x9C8 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0x4FC35859 PUSH1 0xE0 SHL EQ SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 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 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x1E4F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1E59 PUSH2 0x1D37 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 EQ PUSH2 0x1F9C JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1E74 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1E8C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x1F2D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x1F0E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP SWAP3 DUP4 ADD SWAP3 JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1F92 JUMPI PUSH2 0x1F92 DUP3 DUP7 DUP4 PUSH2 0x218B JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1E5F JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x1FAD JUMPI PUSH1 0x6 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1FBF DUP4 DUP4 DUP4 PUSH2 0x229A JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1877 JUMPI PUSH2 0x1877 DUP4 DUP6 DUP4 PUSH2 0x218B JUMP JUMPDEST PUSH2 0x1FED DUP3 DUP3 PUSH2 0x20AC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FF7 PUSH2 0x1D37 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x201D JUMPI PUSH2 0x201D DUP4 DUP3 DUP5 PUSH2 0x218B JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2146 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x2122 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP PUSH1 0x6 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x21C2 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2249 JUMPI DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x221E JUMPI PUSH1 0x40 DUP1 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 SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 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 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x22F5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x23B1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x236B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x23AE JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP7 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE JUMPDEST POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x2469 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4368696C6445524332303A206F6E6C79206465706F7369746F72000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x24C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD DUP2 ISZERO PUSH2 0x2549 JUMPI DUP1 DUP3 ADD DUP2 DUP2 GT PUSH2 0x2527 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x25F2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x36372B0700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x2626 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xA219A02500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x265A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x3C130D9000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x268E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D07518600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x26C2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xC05327E600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x26F6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x53F41A9700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x9C8 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0x9D8FF7DA00000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD0 LOG0 BYTE CALLDATALOAD SLT 0x5F DUP5 PUSH14 0x62B34A80BC7343B91A493240F573 GASLIMIT MULMOD PUSH18 0x819BA9B1E9631164736F6C63430007060033 ",
              "sourceMap": "659:2696:56:-:0;;;740:222;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;740:222:56;;;;;;;;;;-1:-1:-1;740:222:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;740:222:56;;;;;;;;;;-1:-1:-1;740:222:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;740:222:56;;;;;;;;;;;;;;2047:13:38;;740:222:56;;-1:-1:-1;740:222:56;-1:-1:-1;740:222:56;;892:5;;899:7;;740:222;;892:5;;899:7;;740:222;;2047:13:38;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;2070:17:38;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;2097:21:38;;;;;;;;2188:9;2216:27;;;;2273:48;2188:9;2314:5;2273:25;:48::i;:::-;2253:68;;-1:-1:-1;;1211:17:55;:38;;-1:-1:-1;;;;;;1211:38:55;-1:-1:-1;;;;;1211:38:55;;;;;;;;;;;-1:-1:-1;659:2696:56;;-1:-1:-1;;;;;;;;659:2696:56;17687:463:38;17995:16;;;;;;;17846:283;;;17878:95;17846:283;;;;;;;;;;;18033:14;17846:283;;;;;;;;;;;18106:4;17846:283;;;;;;;;;;;;;;;;;;;;;;;;;17819:324;;;;;;17687:463::o;659:2696:56:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;659:2696:56;;;-1:-1:-1;659:2696:56;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {
                "8178": [
                  {
                    "length": 32,
                    "start": 2982
                  },
                  {
                    "length": 32,
                    "start": 6181
                  }
                ],
                "8180": [
                  {
                    "length": 32,
                    "start": 3177
                  }
                ],
                "8192": [
                  {
                    "length": 32,
                    "start": 2943
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063b88d4fde11610097578063cf2c52cb11610071578063cf2c52cb1461082a578063d505accf146108aa578063dd62ed3e146108fb578063eb79554914610929576101c4565b8063b88d4fde1461076e578063c8291d84146107fe578063cd0d009614610822576101c4565b806388d695b2116100d357806388d695b21461064c57806395d89b411461070e578063a457c2d714610716578063a9059cbb14610742576101c4565b806370a08231146105d457806379cc6790146105fa5780637ecebe0014610626576101c4565b8063313ce567116101665780633c130d90116101405780633c130d901461043057806342966c68146104385780634885b254146104555780634fc3585914610527576101c4565b8063313ce567146103de5780633644e515146103fc5780633950935114610404576101c4565b806318160ddd116101a257806318160ddd146102ad5780631b9a7529146102c757806323b872dd146103895780632e1a7d4d146103bf576101c4565b806301ffc9a7146101c957806306fdde0314610204578063095ea7b314610281575b600080fd5b6101f0600480360360208110156101df57600080fd5b50356001600160e01b0319166109ae565b604080519115158252519081900360200190f35b61020c6109ce565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024657818101518382015260200161022e565b50505050905090810190601f1680156102735780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f06004803603604081101561029757600080fd5b506001600160a01b038135169060200135610a63565b6102b5610a80565b60408051918252519081900360200190f35b6101f0600480360360408110156102dd57600080fd5b8101906020810181356401000000008111156102f857600080fd5b82018360208201111561030a57600080fd5b8035906020019184602083028401116401000000008311171561032c57600080fd5b91939092909160208101903564010000000081111561034a57600080fd5b82018360208201111561035c57600080fd5b8035906020019184602083028401116401000000008311171561037e57600080fd5b509092509050610a86565b6101f06004803603606081101561039f57600080fd5b506001600160a01b03813581169160208101359091169060400135610b00565b6103dc600480360360208110156103d557600080fd5b5035610b1f565b005b6103e6610b7d565b6040805160ff9092168252519081900360200190f35b6102b5610ba1565b6101f06004803603604081101561041a57600080fd5b506001600160a01b038135169060200135610c8f565b61020c610dfd565b6101f06004803603602081101561044e57600080fd5b5035610e5e565b6101f06004803603606081101561046b57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561049657600080fd5b8201836020820111156104a857600080fd5b803590602001918460208302840111640100000000831117156104ca57600080fd5b9193909290916020810190356401000000008111156104e857600080fd5b8201836020820111156104fa57600080fd5b8035906020019184602083028401116401000000008311171561051c57600080fd5b509092509050610e79565b6105b76004803603608081101561053d57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561057857600080fd5b82018360208201111561058a57600080fd5b803590602001918460018302840111640100000000831117156105ac57600080fd5b5090925090506111ad565b604080516001600160e01b03199092168252519081900360200190f35b6102b5600480360360208110156105ea57600080fd5b50356001600160a01b0316611263565b6101f06004803603604081101561061057600080fd5b506001600160a01b03813516906020013561127e565b6102b56004803603602081101561063c57600080fd5b50356001600160a01b031661128a565b6101f06004803603604081101561066257600080fd5b81019060208101813564010000000081111561067d57600080fd5b82018360208201111561068f57600080fd5b803590602001918460208302840111640100000000831117156106b157600080fd5b9193909290916020810190356401000000008111156106cf57600080fd5b8201836020820111156106e157600080fd5b8035906020019184602083028401116401000000008311171561070357600080fd5b50909250905061129c565b61020c6115ab565b6101f06004803603604081101561072c57600080fd5b506001600160a01b038135169060200135611609565b6101f06004803603604081101561075857600080fd5b506001600160a01b038135169060200135611678565b6101f06004803603608081101561078457600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156107bf57600080fd5b8201836020820111156107d157600080fd5b803590602001918460018302840111640100000000831117156107f357600080fd5b50909250905061168c565b610806611814565b604080516001600160a01b039092168252519081900360200190f35b6102b5611823565b6103dc6004803603604081101561084057600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561086b57600080fd5b82018360208201111561087d57600080fd5b8035906020019184600183028401116401000000008311171561089f57600080fd5b509092509050611847565b6103dc600480360360e08110156108c057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561187d565b6102b56004803603604081101561091157600080fd5b506001600160a01b0381358116916020013516611afc565b6101f06004803603606081101561093f57600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561096f57600080fd5b82018360208201111561098157600080fd5b803590602001918460018302840111640100000000831117156109a357600080fd5b509092509050611b27565b60006109b982611cad565b806109c857506109c882611ceb565b92915050565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a595780601f10610a2e57610100808354040283529160200191610a59565b820191906000526020600020905b815481529060010190602001808311610a3c57829003601f168201915b5050505050905090565b6000610a77610a70611d37565b8484611d3b565b50600192915050565b60065490565b6000610af585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808902828101820190935288825290935088925087918291850190849080828437600092019190915250611df892505050565b506001949350505050565b6000610b15610b0d611d37565b858585611fb4565b5060019392505050565b6000610b29611d37565b9050610b358183611fe3565b604080516001600160a01b03831681526020810184905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a15050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610c675760018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152610c6293859391929091830182828015610c585780601f10610c2d57610100808354040283529160200191610c58565b820191906000526020600020905b815481529060010190602001808311610c3b57829003601f168201915b5050505050612022565b610c89565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b60006001600160a01b038316610cec576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6000610cf6611d37565b6001600160a01b038082166000908152600560209081526040808320938916835292905220549091508315610da757808401818111610d7c576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600560209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a595780601f10610a2e57610100808354040283529160200191610a59565b6000610e71610e6b611d37565b836120ac565b506001919050565b600083828114610ed0576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600460205260408120549080805b8481146110e25760008a8a83818110610f0257fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415610f7c576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b6000898984818110610f8a57fe5b9050602002013590508060001461108d57848101858111610ff2576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b031614611031576001600160a01b038316600090815260046020526040902080548301905561108b565b86821115611086576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101610eed565b5081158015906110f25750808214155b1561116c5781830383811061114e576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260046020526040902090820190555b6000611176611d37565b9050806001600160a01b03168b6001600160a01b03161461119c5761119c8b828561218b565b5060019a9950505050505050505050565b6000333014611203576040805162461bcd60e51b815260206004820152601860248201527f4368696c6445524332303a2077726f6e672073656e6465720000000000000000604482015290519081900360640190fd5b61120d30856120ac565b604080516001600160a01b03871681526020810186905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a150634fc3585960e01b95945050505050565b6001600160a01b031660009081526004602052604090205490565b6000610a778383611fe3565b60006020819052908152604090205481565b6000838281146112f3576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60006112fd611d37565b6001600160a01b03811660009081526004602052604081205491925080805b8581146115115760008b8b8381811061133157fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b031614156113ab576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a848181106113b957fe5b905060200201359050806000146114bc57848101858111611421576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b031614611460576001600160a01b03831660009081526004602052604090208054830190556114ba565b868211156114b5576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505060010161131c565b5081158015906115215750808214155b1561159b5781830383811061157d576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260046020526040902090820190555b5060019998505050505050505050565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610a595780601f10610a2e57610100808354040283529160200191610a59565b60006001600160a01b038316611666576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b610a77611671611d37565b848461218b565b6000610a77611685611d37565b848461229a565b600080611697611d37565b90506116a581888888611fb4565b6116b7866001600160a01b0316612401565b1561180757634fc3585960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561177f57600080fd5b505af1158015611793573d6000803e3d6000fd5b505050506040513d60208110156117a957600080fd5b50516001600160e01b03191614611807576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b6007546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b611857611852611d37565b612407565b60008282602081101561186957600080fd5b50359050611877848261246c565b50505050565b6001600160a01b0387166118d8576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b8342111561192d576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526020818152604080832080546001810190915581517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a084019490945260c08084018990528451808503909101815260e090930190935281519190920120906119bf610ba1565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611a73573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b031614611ae5576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b611af08a8a8a611d3b565b50505050505050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b600080611b32611d37565b9050611b3f81878761229a565b611b51866001600160a01b0316612401565b15611ca157634fc3585960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015611c1957600080fd5b505af1158015611c2d573d6000803e3d6000fd5b505050506040513d6020811015611c4357600080fd5b50516001600160e01b03191614611ca1576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b60006001600160e01b031982167f20c07ed10000000000000000000000000000000000000000000000000000000014806109c857506109c88261258f565b60006001600160e01b031982167f01ffc9a70000000000000000000000000000000000000000000000000000000014806109c85750506001600160e01b031916634fc3585960e01b1490565b3390565b6001600160a01b038216611d96576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b815181518114611e4f576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000611e59611d37565b90506000805b838114611f9c576000868281518110611e7457fe5b602002602001015190506000868381518110611e8c57fe5b6020026020010151905080600014611f2d576001600160a01b038216600090815260046020526040902054818103818110611f0e576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205550928301925b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3846001600160a01b0316826001600160a01b031614611f9257611f9282868361218b565b5050600101611e5f565b508015611fad576006805482900390555b5050505050565b611fbf83838361229a565b836001600160a01b0316836001600160a01b0316146118775761187783858361218b565b611fed82826120ac565b6000611ff7611d37565b9050806001600160a01b0316836001600160a01b03161461201d5761201d83828461218b565b505050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b8015612146576001600160a01b038216600090815260046020526040902054818103818110612122576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902055506006805482900390555b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b0380841660009081526005602090815260408083209386168352929052205460001981148015906121c257508115155b156122495781810381811061221e576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b6001600160a01b0382166122f5576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b80156123b1576001600160a01b03831660009081526004602052604090205481810381811061236b576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b0316146123ae576001600160a01b038086166000908152600460205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b151590565b6007546001600160a01b03828116911614612469576040805162461bcd60e51b815260206004820152601a60248201527f4368696c6445524332303a206f6e6c79206465706f7369746f72000000000000604482015290519081900360640190fd5b50565b6001600160a01b0382166124c7576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b600654811561254957808201818111612527576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6006556001600160a01b03831660009081526004602052604090208054830190555b6040805183815290516001600160a01b038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b60006001600160e01b031982167f01ffc9a70000000000000000000000000000000000000000000000000000000014806125f257506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b8061262657506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b8061265a57506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b8061268e57506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b806126c257506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b806126f657506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b806109c85750506001600160e01b0319167f9d8ff7da00000000000000000000000000000000000000000000000000000000149056fea2646970667358221220d0a01a35125f846d62b34a80bc7343b91a493240f573450971819ba9b1e9631164736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xCF2C52CB GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xCF2C52CB EQ PUSH2 0x82A JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x8AA JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x8FB JUMPI DUP1 PUSH4 0xEB795549 EQ PUSH2 0x929 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x76E JUMPI DUP1 PUSH4 0xC8291D84 EQ PUSH2 0x7FE JUMPI DUP1 PUSH4 0xCD0D0096 EQ PUSH2 0x822 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x88D695B2 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x88D695B2 EQ PUSH2 0x64C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x70E JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x716 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x742 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x5D4 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x5FA JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x626 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x3C130D90 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x3C130D90 EQ PUSH2 0x430 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0x4885B254 EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0x4FC35859 EQ PUSH2 0x527 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x3FC JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x404 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0x1B9A7529 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x3BF JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x281 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH2 0x9CE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x246 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x22E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x273 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x297 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA63 JUMP JUMPDEST PUSH2 0x2B5 PUSH2 0xA80 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x30A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x35C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xA86 JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x3DC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB1F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E6 PUSH2 0xB7D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2B5 PUSH2 0xBA1 JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC8F JUMP JUMPDEST PUSH2 0x20C PUSH2 0xDFD JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xE5E JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x51C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xE79 JUMP JUMPDEST PUSH2 0x5B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x578 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x58A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1263 JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x127E JUMP JUMPDEST PUSH2 0x2B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x63C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x128A JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x662 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x703 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x129C JUMP JUMPDEST PUSH2 0x20C PUSH2 0x15AB JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1609 JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x758 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1678 JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x784 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x168C JUMP JUMPDEST PUSH2 0x806 PUSH2 0x1814 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2B5 PUSH2 0x1823 JUMP JUMPDEST PUSH2 0x3DC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x86B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x87D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x89F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1847 JUMP JUMPDEST PUSH2 0x3DC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x8C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x187D JUMP JUMPDEST PUSH2 0x2B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x911 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1AFC JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x93F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x96F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x981 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1B27 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B9 DUP3 PUSH2 0x1CAD JUMP JUMPDEST DUP1 PUSH2 0x9C8 JUMPI POP PUSH2 0x9C8 DUP3 PUSH2 0x1CEB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA59 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA2E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA59 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 0xA3C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA77 PUSH2 0xA70 PUSH2 0x1D37 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1D3B JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF5 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE SWAP1 SWAP4 POP DUP9 SWAP3 POP DUP8 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1DF8 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB15 PUSH2 0xB0D PUSH2 0x1D37 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x1FB4 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB29 PUSH2 0x1D37 JUMP JUMPDEST SWAP1 POP PUSH2 0xB35 DUP2 DUP4 PUSH2 0x1FE3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 DUP2 EQ PUSH2 0xC67 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE PUSH2 0xC62 SWAP4 DUP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xC58 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC2D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC58 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 0xC3B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x2022 JUMP JUMPDEST PUSH2 0xC89 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xCEC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xCF6 PUSH2 0x1D37 JUMP JUMPDEST 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 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP4 ISZERO PUSH2 0xDA7 JUMPI DUP1 DUP5 ADD DUP2 DUP2 GT PUSH2 0xD7C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20616C6C6F77616E6365206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA59 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA2E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA59 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE71 PUSH2 0xE6B PUSH2 0x1D37 JUMP JUMPDEST DUP4 PUSH2 0x20AC JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0xED0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP1 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0x10E2 JUMPI PUSH1 0x0 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0xF02 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xF7C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0xF8A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x108D JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0xFF2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1031 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x108B JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x1086 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0xEED JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x10F2 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x116C JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x114E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0x1176 PUSH2 0x1D37 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x119C JUMPI PUSH2 0x119C DUP12 DUP3 DUP6 PUSH2 0x218B JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0x1203 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4368696C6445524332303A2077726F6E672073656E6465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x120D ADDRESS DUP6 PUSH2 0x20AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH4 0x4FC35859 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA77 DUP4 DUP4 PUSH2 0x1FE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x12F3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12FD PUSH2 0x1D37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP DUP1 DUP1 JUMPDEST DUP6 DUP2 EQ PUSH2 0x1511 JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x1331 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x13AB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x13B9 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x14BC JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x1421 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1460 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x14BA JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x14B5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x131C JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1521 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x159B JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x157D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA59 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA2E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA59 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1666 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xA77 PUSH2 0x1671 PUSH2 0x1D37 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x218B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA77 PUSH2 0x1685 PUSH2 0x1D37 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x229A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1697 PUSH2 0x1D37 JUMP JUMPDEST SWAP1 POP PUSH2 0x16A5 DUP2 DUP9 DUP9 DUP9 PUSH2 0x1FB4 JUMP JUMPDEST PUSH2 0x16B7 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2401 JUMP JUMPDEST ISZERO PUSH2 0x1807 JUMPI PUSH4 0x4FC35859 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x177F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1793 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1857 PUSH2 0x1852 PUSH2 0x1D37 JUMP JUMPDEST PUSH2 0x2407 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP1 POP PUSH2 0x1877 DUP5 DUP3 PUSH2 0x246C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x18D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373206F776E657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x192D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2065787069726564207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP2 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP6 ADD MSTORE DUP1 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP5 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0xC0 DUP1 DUP5 ADD DUP10 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 SWAP1 SWAP4 ADD SWAP1 SWAP4 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 SWAP1 PUSH2 0x19BF PUSH2 0xBA1 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A73 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1AE5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E76616C6964207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1AF0 DUP11 DUP11 DUP11 PUSH2 0x1D3B JUMP JUMPDEST POP POP POP POP POP POP POP 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 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B32 PUSH2 0x1D37 JUMP JUMPDEST SWAP1 POP PUSH2 0x1B3F DUP2 DUP8 DUP8 PUSH2 0x229A JUMP JUMPDEST PUSH2 0x1B51 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2401 JUMP JUMPDEST ISZERO PUSH2 0x1CA1 JUMPI PUSH4 0x4FC35859 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP5 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1CA1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x20C07ED100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x9C8 JUMPI POP PUSH2 0x9C8 DUP3 PUSH2 0x258F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x9C8 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0x4FC35859 PUSH1 0xE0 SHL EQ SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 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 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x1E4F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1E59 PUSH2 0x1D37 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 EQ PUSH2 0x1F9C JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1E74 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1E8C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x1F2D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x1F0E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP SWAP3 DUP4 ADD SWAP3 JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1F92 JUMPI PUSH2 0x1F92 DUP3 DUP7 DUP4 PUSH2 0x218B JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1E5F JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x1FAD JUMPI PUSH1 0x6 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1FBF DUP4 DUP4 DUP4 PUSH2 0x229A JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1877 JUMPI PUSH2 0x1877 DUP4 DUP6 DUP4 PUSH2 0x218B JUMP JUMPDEST PUSH2 0x1FED DUP3 DUP3 PUSH2 0x20AC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FF7 PUSH2 0x1D37 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x201D JUMPI PUSH2 0x201D DUP4 DUP3 DUP5 PUSH2 0x218B JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2146 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x2122 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP PUSH1 0x6 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x21C2 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2249 JUMPI DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x221E JUMPI PUSH1 0x40 DUP1 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 SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 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 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x22F5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x23B1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x236B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x23AE JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP7 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE JUMPDEST POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x2469 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4368696C6445524332303A206F6E6C79206465706F7369746F72000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x24C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD DUP2 ISZERO PUSH2 0x2549 JUMPI DUP1 DUP3 ADD DUP2 DUP2 GT PUSH2 0x2527 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x25F2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x36372B0700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x2626 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xA219A02500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x265A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x3C130D9000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x268E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D07518600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x26C2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xC05327E600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x26F6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x53F41A9700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x9C8 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0x9D8FF7DA00000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD0 LOG0 BYTE CALLDATALOAD SLT 0x5F DUP5 PUSH14 0x62B34A80BC7343B91A493240F573 GASLIMIT MULMOD PUSH18 0x819BA9B1E9631164736F6C63430007060033 ",
              "sourceMap": "659:2696:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1125:237;;;;;;;;;;;;;;;;-1:-1:-1;1125:237:56;-1:-1:-1;;;;;;1125:237:56;;:::i;:::-;;;;;;;;;;;;;;;;;;4506:92:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3730:166;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3730:166:38;;;;;;;;:::i;3263:100::-;;;:::i;:::-;;;;;;;;;;;;;;;;1414:186:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1414:186:39;;-1:-1:-1;1414:186:39;-1:-1:-1;1414:186:39;:::i;4120:216:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4120:216:38;;;;;;;;;;;;;;;;;:::i;2336:164:56:-;;;;;;;;;;;;;;;;-1:-1:-1;2336:164:56;;:::i;:::-;;4776:92:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11199:354;;;:::i;5309:625::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5309:625:38;;;;;;;;:::i;5038:100::-;;;:::i;1048:136:39:-;;;;;;;;;;;;;;;;-1:-1:-1;1048:136:39;;:::i;8089:1756:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8089:1756:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8089:1756:38;;-1:-1:-1;8089:1756:38;-1:-1:-1;8089:1756:38;:::i;2981:372:56:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2981:372:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2981:372:56;;-1:-1:-1;2981:372:56;-1:-1:-1;2981:372:56;:::i;:::-;;;;-1:-1:-1;;;;;;2981:372:56;;;;;;;;;;;;;;3396:119:38;;;;;;;;;;;;;;;;-1:-1:-1;3396:119:38;-1:-1:-1;;;;;3396:119:38;;:::i;1225:148:39:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1225:148:39;;;;;;;;:::i;1587:50:38:-;;;;;;;;;;;;;;;;-1:-1:-1;1587:50:38;-1:-1:-1;;;;;1587:50:38;;:::i;6429:1613::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6429:1613:38;;-1:-1:-1;6429:1613:38;-1:-1:-1;6429:1613:38;:::i;4639:96::-;;;:::i;5976:277::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5976:277:38;;;;;;;;:::i;3929:158::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3929:158:38;;;;;;;;:::i;10505:473::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10505:473:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10505:473:38;;-1:-1:-1;10505:473:38;-1:-1:-1;10505:473:38;:::i;1003:32:55:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1003:32:55;;;;;;;;;;;;;;1402:42:38;;;:::i;1828:219:56:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1828:219:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1828:219:56;;-1:-1:-1;1828:219:56;-1:-1:-1;1828:219:56;:::i;11592:711:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11592:711:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3548:149::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3548:149:38;;;;;;;;;;:::i;10020:439::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10020:439:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10020:439:38;;-1:-1:-1;10020:439:38;-1:-1:-1;10020:439:38;:::i;1125:237:56:-;1240:4;1263:44;1295:11;1263:31;:44::i;:::-;:92;;;;1311:44;1343:11;1311:31;:44::i;:::-;1256:99;1125:237;-1:-1:-1;;1125:237:56:o;4506:92:38:-;4586:5;4579:12;;;;;;;;-1:-1:-1;;4579:12:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4554:13;;4579:12;;4586:5;;4579:12;;4586:5;4579:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4506:92;:::o;3730:166::-;3814:4;3830:38;3839:12;:10;:12::i;:::-;3853:7;3862:5;3830:8;:38::i;:::-;-1:-1:-1;3885:4:38;3730:166;;;;:::o;3263:100::-;3344:12;;3263:100;:::o;1414:186:39:-;1526:4;1542:30;1557:6;;1542:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1542:30:39;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1565:6:39;;-1:-1:-1;1565:6:39;;;;1542:30;;;1565:6;;1542:30;1565:6;1542:30;;;;;;;;;-1:-1:-1;1542:14:39;;-1:-1:-1;;;1542:30:39:i;:::-;-1:-1:-1;1589:4:39;1414:186;;;;;;:::o;4120:216:38:-;4248:4;4264:44;4278:12;:10;:12::i;:::-;4292:4;4298:2;4302:5;4264:13;:44::i;:::-;-1:-1:-1;4325:4:38;4120:216;;;;;:::o;2336:164:56:-;2389:14;2406:12;:10;:12::i;:::-;2389:29;;2428:25;2438:6;2446;2428:9;:25::i;:::-;2468;;;-1:-1:-1;;;;;2468:25:56;;;;;;;;;;;;;;;;;;;;;;;2336:164;;:::o;4776:92:38:-;4852:9;4776:92;:::o;11199:354::-;11257:7;11335:9;11458:17;11447:28;;:99;;11539:5;11498:48;;;;;;;;;;;;;-1:-1:-1;;11498:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;11524:7;;11498:48;;11539:5;;11498:48;;11539:5;11498:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:25;:48::i;:::-;11447:99;;;11478:17;11447:99;11440:106;;;11199:354;:::o;5309:625::-;5408:4;-1:-1:-1;;;;;5432:21:38;;5424:61;;;;;-1:-1:-1;;;5424:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;5495:13;5511:12;:10;:12::i;:::-;-1:-1:-1;;;;;5554:18:38;;;5533;5554;;;:11;:18;;;;;;;;:27;;;;;;;;;;5495:28;;-1:-1:-1;5595:15:38;;5591:264;;5649:23;;;5694:25;;;5686:63;;;;;-1:-1:-1;;;5686:63:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5763:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:42;;;5793:12;-1:-1:-1;5591:264:38;5885:7;-1:-1:-1;;;;;5869:36:38;5878:5;-1:-1:-1;;;;;5869:36:38;;5894:10;5869:36;;;;;;;;;;;;;;;;;;-1:-1:-1;5923:4:38;;5309:625;-1:-1:-1;;;;5309:625:38:o;5038:100::-;5122:9;5115:16;;;;;;;;-1:-1:-1;;5115:16:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5090:13;;5115:16;;5122:9;;5115:16;;5122:9;5115:16;;;;;;;;;;;;;;;;;;;;;;;;1048:136:39;1113:4;1129:27;1135:12;:10;:12::i;:::-;1149:6;1129:5;:27::i;:::-;-1:-1:-1;1173:4:39;1048:136;;;:::o;8089:1756:38:-;8253:4;8286:10;8321:23;;;8313:62;;;;;-1:-1:-1;;;8313:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8404:15:38;;8386;8404;;;:9;:15;;;;;;;8386;;8498:791;8519:6;8514:1;:11;8498:791;;8546:10;8559;;8570:1;8559:13;;;;;;;;;;;;;-1:-1:-1;;;;;8559:13:38;8546:26;;8608:1;-1:-1:-1;;;;;8594:16:38;:2;-1:-1:-1;;;;;8594:16:38;;;8586:51;;;;;-1:-1:-1;;;8586:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8652:13;8668:6;;8675:1;8668:9;;;;;;;;;;;;;8652:25;;8696:5;8705:1;8696:10;8692:542;;8750:18;;;8794:26;;;8786:61;;;;;-1:-1:-1;;;8786:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8878:13;8865:26;;8921:2;-1:-1:-1;;;;;8913:10:38;:4;-1:-1:-1;;;;;8913:10:38;;8909:311;;-1:-1:-1;;;;;8947:13:38;;;;;;:9;:13;;;;;:22;;;;;;8909:311;;;9033:7;9024:5;:16;;9016:56;;;;;-1:-1:-1;;;9016:56:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;9094:31;;;;8909:311;8692:542;;9268:2;-1:-1:-1;;;;;9253:25:38;9262:4;-1:-1:-1;;;;;9253:25:38;;9272:5;9253:25;;;;;;;;;;;;;;;;;;-1:-1:-1;;8527:3:38;;8498:791;;;-1:-1:-1;9303:15:38;;;;;:55;;;9336:22;9322:10;:36;;9303:55;9299:380;;;9395:20;;;9437;;;9429:60;;;;;-1:-1:-1;;;9429:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9559:15:38;;;;;;:9;:15;;;;;9577:35;;;9559:53;;9299:380;9689:14;9706:12;:10;:12::i;:::-;9689:29;;9740:6;-1:-1:-1;;;;;9732:14:38;:4;-1:-1:-1;;;;;9732:14:38;;9728:89;;9762:44;9781:4;9787:6;9795:10;9762:18;:44::i;:::-;-1:-1:-1;9834:4:38;;8089:1756;-1:-1:-1;;;;;;;;;;8089:1756:38:o;2981:372:56:-;3156:6;3182:10;3204:4;3182:27;3174:64;;;;;-1:-1:-1;;;3174:64:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;3248:28;3262:4;3269:6;3248:5;:28::i;:::-;3291:23;;;-1:-1:-1;;;;;3291:23:56;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2981:372:56;;;;;;;:::o;3396:119:38:-;-1:-1:-1;;;;;3490:18:38;3464:7;3490:18;;;:9;:18;;;;;;;3396:119::o;1225:148:39:-;1307:4;1323:22;1333:4;1339:5;1323:9;:22::i;1587:50:38:-;;;;;;;;;;;;;;:::o;6429:1613::-;6545:4;6578:10;6613:23;;;6605:62;;;;;-1:-1:-1;;;6605:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6677:14;6694:12;:10;:12::i;:::-;-1:-1:-1;;;;;6734:17:38;;6716:15;6734:17;;;:9;:17;;;;;;6677:29;;-1:-1:-1;6716:15:38;;6830:793;6851:6;6846:1;:11;6830:793;;6878:10;6891;;6902:1;6891:13;;;;;;;;;;;;;-1:-1:-1;;;;;6891:13:38;6878:26;;6940:1;-1:-1:-1;;;;;6926:16:38;:2;-1:-1:-1;;;;;6926:16:38;;;6918:51;;;;;-1:-1:-1;;;6918:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6984:13;7000:6;;7007:1;7000:9;;;;;;;;;;;;;6984:25;;7027:5;7036:1;7027:10;7023:544;;7081:18;;;7125:26;;;7117:61;;;;;-1:-1:-1;;;7117:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;7209:13;7196:26;;7254:2;-1:-1:-1;;;;;7244:12:38;:6;-1:-1:-1;;;;;7244:12:38;;7240:313;;-1:-1:-1;;;;;7280:13:38;;;;;;:9;:13;;;;;:22;;;;;;7240:313;;;7366:7;7357:5;:16;;7349:56;;;;;-1:-1:-1;;;7349:56:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;7427:31;;;;7240:313;7023:544;;7602:2;-1:-1:-1;;;;;7585:27:38;7594:6;-1:-1:-1;;;;;7585:27:38;;7606:5;7585:27;;;;;;;;;;;;;;;;;;-1:-1:-1;;6859:3:38;;6830:793;;;-1:-1:-1;7637:15:38;;;;;:55;;;7670:22;7656:10;:36;;7637:55;7633:382;;;7729:20;;;7771;;;7763:60;;;;;-1:-1:-1;;;7763:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7893:17:38;;;;;;:9;:17;;;;;7913:35;;;7893:55;;7633:382;-1:-1:-1;8031:4:38;;6429:1613;-1:-1:-1;;;;;;;;;6429:1613:38:o;4639:96::-;4721:7;4714:14;;;;;;;-1:-1:-1;;4714:14:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4689:13;;4714:14;;4721:7;;4714:14;;4721:7;4714:14;;;;;;;;;;;;;;;;;;;;;;;;5976:277;6080:4;-1:-1:-1;;;;;6104:21:38;;6096:61;;;;;-1:-1:-1;;;6096:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6167:58;6186:12;:10;:12::i;:::-;6200:7;6209:15;6167:18;:58::i;3929:158::-;4009:4;4025:34;4035:12;:10;:12::i;:::-;4049:2;4053:5;4025:9;:34::i;10505:473::-;10667:4;10683:14;10700:12;:10;:12::i;:::-;10683:29;;10722:39;10736:6;10744:4;10750:2;10754:6;10722:13;:39::i;:::-;10775:15;:2;-1:-1:-1;;;;;10775:13:38;;:15::i;:::-;10771:180;;;-1:-1:-1;;;10814:98:38;;;10829:2;-1:-1:-1;;;;;10814:34:38;;10849:6;10857:4;10863:6;10871:4;;10814:62;;;;;;;;;;;;;-1:-1:-1;;;;;10814:62:38;;;;;;-1:-1:-1;;;;;10814:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10814:62:38;-1:-1:-1;;;;;;10814:98:38;;10806:134;;;;;-1:-1:-1;;;10806:134:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10967:4:38;;10505:473;-1:-1:-1;;;;;;10505:473:38:o;1003:32:55:-;;;-1:-1:-1;;;;;1003:32:55;;:::o;1402:42:38:-;;;:::o;1828:219:56:-;1915:35;1937:12;:10;:12::i;:::-;1915:21;:35::i;:::-;1960:14;1988:11;;1977:34;;;;;;;;;;-1:-1:-1;1977:34:56;;-1:-1:-1;2021:19:56;2027:4;1977:34;2021:5;:19::i;:::-;1828:219;;;;:::o;11592:711:38:-;-1:-1:-1;;;;;11810:19:38;;11802:57;;;;;-1:-1:-1;;;11802:57:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;11896:8;11877:15;:27;;11869:61;;;;;-1:-1:-1;;;11869:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12022:13:38;;;11940:18;12022:13;;;;;;;;;;;:15;;;;;;;;11971:77;;1329:66;11971:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11961:88;;;;;;;;12113:18;:16;:18::i;:::-;12133:10;12084:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12074:71;;;;;;12059:86;;12155:14;12172:24;12182:4;12188:1;12191;12194;12172:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12155:41;;12224:5;-1:-1:-1;;;;;12214:15:38;:6;-1:-1:-1;;;;;12214:15:38;;12206:49;;;;;-1:-1:-1;;;12206:49:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;12265:31;12274:5;12281:7;12290:5;12265:8;:31::i;:::-;11592:711;;;;;;;;;;:::o;3548:149::-;-1:-1:-1;;;;;3663:18:38;;;3637:7;3663:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3548:149::o;10020:439::-;10156:4;10172:14;10189:12;:10;:12::i;:::-;10172:29;;10211;10221:6;10229:2;10233:6;10211:9;:29::i;:::-;10254:15;:2;-1:-1:-1;;;;;10254:13:38;;:15::i;:::-;10250:182;;;-1:-1:-1;;;10293:100:38;;;10308:2;-1:-1:-1;;;;;10293:34:38;;10328:6;10336;10344;10352:4;;10293:64;;;;;;;;;;;;;-1:-1:-1;;;;;10293:64:38;;;;;;-1:-1:-1;;;;;10293:64:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10293:64:38;-1:-1:-1;;;;;;10293:100:38;;10285:136;;;;;-1:-1:-1;;;10285:136:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10448:4:38;;10020:439;-1:-1:-1;;;;;10020:439:38:o;676:202:39:-;761:4;-1:-1:-1;;;;;;784:47:39;;799:32;784:47;;:87;;;835:36;859:11;835:23;:36::i;761:206:40:-;846:4;-1:-1:-1;;;;;;869:40:40;;884:25;869:40;;:91;;-1:-1:-1;;;;;;;;913:47:40;-1:-1:-1;;;913:47:40;;761:206::o;355:104:5:-;442:10;355:104;:::o;12438:273:38:-;-1:-1:-1;;;;;12560:21:38;;12552:61;;;;;-1:-1:-1;;;12552:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12623:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:35;;;12673:31;;;;;;;;;;;;;;;;;12438:273;;;:::o;16457:1095::-;16575:13;;16616;;16606:23;;16598:62;;;;;-1:-1:-1;;;16598:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;16671:14;16688:12;:10;:12::i;:::-;16671:29;;16711:18;16744:9;16739:664;16760:6;16755:1;:11;16739:664;;16787:12;16802:6;16809:1;16802:9;;;;;;;;;;;;;;16787:24;;16825:13;16841:6;16848:1;16841:9;;;;;;;;;;;;;;16825:25;;16868:5;16877:1;16868:10;16864:371;;-1:-1:-1;;;;;16916:15:38;;16898;16916;;;:9;:15;;;;;;16970;;;17011:20;;;17003:60;;;;;-1:-1:-1;;;17003:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17081:15:38;;;;;;:9;:15;;;;;:28;-1:-1:-1;17127:19:38;;;;16864:371;17253:33;;;;;;;;17276:1;;-1:-1:-1;;;;;17253:33:38;;;;;;;;;;;;17313:6;-1:-1:-1;;;;;17305:14:38;:4;-1:-1:-1;;;;;17305:14:38;;17301:92;;17339:39;17358:4;17364:6;17372:5;17339:18;:39::i;:::-;-1:-1:-1;;16768:3:38;;16739:664;;;-1:-1:-1;17417:15:38;;17413:133;;17448:12;:26;;;;;;;17413:133;16457:1095;;;;;:::o;13965:263::-;14102:26;14112:4;14118:2;14122:5;14102:9;:26::i;:::-;14150:6;-1:-1:-1;;;;;14142:14:38;:4;-1:-1:-1;;;;;14142:14:38;;14138:84;;14172:39;14191:4;14197:6;14205:5;14172:18;:39::i;16219:232::-;16294:18;16300:4;16306:5;16294;:18::i;:::-;16322:14;16339:12;:10;:12::i;:::-;16322:29;;16373:6;-1:-1:-1;;;;;16365:14:38;:4;-1:-1:-1;;;;;16365:14:38;;16361:84;;16395:39;16414:4;16420:6;16428:5;16395:18;:39::i;:::-;16219:232;;;:::o;17687:463::-;17995:16;;;;;;;17846:283;;;17878:95;17846:283;;;;;;;;;;;18033:14;17846:283;;;;;;;;;;;18106:4;17846:283;;;;;;;;;;;;;;;;;;;;;;;;;17819:324;;;;;;17687:463::o;15771:442::-;15846:10;;15842:317;;-1:-1:-1;;;;;15890:15:38;;15872;15890;;;:9;:15;;;;;;15940;;;15977:20;;;15969:60;;;;;-1:-1:-1;;;15969:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16043:15:38;;;;;;:9;:15;;;;;:28;-1:-1:-1;16085:12:38;:21;;;;;;;15842:317;16173:33;;;;;;;;16196:1;;-1:-1:-1;;;;;16173:33:38;;;;;;;;;;;;15771:442;;:::o;12717:682::-;-1:-1:-1;;;;;12872:18:38;;;12851;12872;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;12914:31:38;;;;;:55;;-1:-1:-1;12949:20:38;;;12914:55;12910:432;;;13127:28;;;13177:25;;;13169:67;;;;;-1:-1:-1;;;13169:67:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13250:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:42;;;13280:12;-1:-1:-1;12910:432:38;13372:7;-1:-1:-1;;;;;13356:36:38;13365:5;-1:-1:-1;;;;;13356:36:38;;13381:10;13356:36;;;;;;;;;;;;;;;;;;12717:682;;;;:::o;13405:554::-;-1:-1:-1;;;;;13530:16:38;;13522:51;;;;;-1:-1:-1;;;13522:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;13588:10;;13584:328;;-1:-1:-1;;;;;13632:15:38;;13614;13632;;;:9;:15;;;;;;13682;;;13719:20;;;13711:60;;;;;-1:-1:-1;;;13711:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;13797:2;-1:-1:-1;;;;;13789:10:38;:4;-1:-1:-1;;;;;13789:10:38;;13785:117;;-1:-1:-1;;;;;13819:15:38;;;;;;;:9;:15;;;;;;:28;;;13865:13;;;;;;:22;;;;;;13785:117;13584:328;;;13942:2;-1:-1:-1;;;;;13927:25:38;13936:4;-1:-1:-1;;;;;13927:25:38;;13946:5;13927:25;;;;;;;;;;;;;;;;;;13405:554;;;:::o;913:377:9:-;1229:20;1275:8;;;913:377::o;1391:146:55:-;1482:17;;-1:-1:-1;;;;;1471:28:55;;;1482:17;;1471:28;1463:67;;;;;-1:-1:-1;;;1463:67:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;1391:146;:::o;14234:480:38:-;-1:-1:-1;;;;;14311:16:38;;14303:48;;;;;-1:-1:-1;;;14303:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14378:12;;14404:10;;14400:262;;14450:14;;;14486:18;;;14478:53;;;;;-1:-1:-1;;;14478:53:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14545:12;:24;-1:-1:-1;;;;;14583:13:38;;;;;;:9;:13;;;;;:22;;;;;;14400:262;14676:31;;;;;;;;-1:-1:-1;;;;;14676:31:38;;;14693:1;;14676:31;;;;;;;;;14234:480;;;:::o;2491:610::-;2576:4;-1:-1:-1;;;;;;2611:40:38;;2626:25;2611:40;;:95;;-1:-1:-1;;;;;;;2667:39:38;;2682:24;2667:39;2611:95;:158;;;-1:-1:-1;;;;;;;2722:47:38;;2737:32;2722:47;2611:158;:221;;;-1:-1:-1;;;;;;;2785:47:38;;2800:32;2785:47;2611:221;:285;;;-1:-1:-1;;;;;;;2848:48:38;;2863:33;2848:48;2611:285;:354;;;-1:-1:-1;;;;;;;2912:53:38;;2927:38;2912:53;2611:354;:422;;;-1:-1:-1;;;;;;;2981:52:38;;2996:37;2981:52;2611:422;:483;;;-1:-1:-1;;;;;;;;3049:45:38;3064:30;3049:45;;2491:610::o"
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "batchBurnFrom(address[],uint256[])": "1b9a7529",
              "batchTransfer(address[],uint256[])": "88d695b2",
              "batchTransferFrom(address,address[],uint256[])": "4885b254",
              "burn(uint256)": "42966c68",
              "burnFrom(address,uint256)": "79cc6790",
              "childChainManager()": "c8291d84",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "deploymentChainId()": "cd0d0096",
              "deposit(address,bytes)": "cf2c52cb",
              "increaseAllowance(address,uint256)": "39509351",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "onERC20Received(address,address,uint256,bytes)": "4fc35859",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "safeTransfer(address,uint256,bytes)": "eb795549",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI()": "3c130d90",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "withdraw(uint256)": "2e1a7d4d"
            }
          }
        }
      },
      "contracts/token/ERC20/polygon/child/mocks/PolygonChildERC20BurnableMock.sol": {
        "PolygonChildERC20BurnableMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "address",
                  "name": "childChainManager",
                  "type": "address"
                },
                {
                  "internalType": "contract IForwarderRegistry",
                  "name": "forwarderRegistry",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "universalForwarder",
                  "type": "address"
                }
              ],
              "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": "account",
                  "type": "address"
                }
              ],
              "name": "MinterAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterRemoved",
              "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"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Withdrawn",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "addMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "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": "value",
                  "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": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "childChainManager",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "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": [],
              "name": "deploymentChainId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "depositData",
                  "type": "bytes"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "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": "",
                  "type": "address"
                }
              ],
              "name": "isMinter",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "forwarder",
                  "type": "address"
                }
              ],
              "name": "isTrustedForwarder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "msgData",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "ret",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC20Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC20s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "contracts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC721s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransfer",
              "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"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "tokenURI_",
                  "type": "string"
                }
              ],
              "name": "setTokenURI",
              "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": [],
              "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": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "value",
                  "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"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "6101206040523480156200001257600080fd5b506040516200424438038062004244833981810160405260a08110156200003857600080fd5b81019080805160405193929190846401000000008211156200005957600080fd5b9083019060208201858111156200006f57600080fd5b82518660208202830111640100000000821117156200008d57600080fd5b82525081516020918201928201910280838360005b83811015620000bc578181015183820152602001620000a2565b5050505090500160405260200180516040519392919084640100000000821115620000e657600080fd5b908301906020820185811115620000fc57600080fd5b82518660208202830111640100000000821117156200011a57600080fd5b82525081516020918201928201910280838360005b83811015620001495781810151838201526020016200012f565b50505050919091016040818152602084810151858301516060909601518385018452601085526f4368696c64204552433230204d6f636b60801b838601528351808501855260048152630434532360e41b93810193909352600080546001600160a01b0319163390811782559451929950969750959294509091601291889182918691869186918491849184918f918f918f9182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606091821b811660a05291901b16608052825162000233906002906020860190620005ed565b50815162000249906003906020850190620005ed565b507fff0000000000000000000000000000000000000000000000000000000000000060f882901b16610100524660c0819052620002878185620002dc565b60e0525050600880546001600160a01b0319166001600160a01b03979097169690961790955550620002c497508896506200036695505050505050565b50620002d18585620003b2565b505050505062000699565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b038116600081815260096020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b8151815181146200040a576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000805b8281146200057f5760008582815181106200042557fe5b6020026020010151905060006001600160a01b0316816001600160a01b0316141562000498576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b6000858381518110620004a757fe5b6020026020010151905080600014620005335783810184811162000512576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600090815260056020526040902080548301905593505b6040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350506001016200040e565b508015620005e757600754818101818111620005e2576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b600755505b50505050565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000625576000855562000670565b82601f106200064057805160ff191683800117855562000670565b8280016001018555821562000670579182015b828111156200067057825182559160200191906001019062000653565b506200067e92915062000682565b5090565b5b808211156200067e576000815560010162000683565b60805160601c60a05160601c60c05160e0516101005160f81c613b3f620007056000398061111d525080611205525080611144528061215252508061182152806135a052806138ee52508061185c528061356552806135f852806138c4528061394f5250613b3f6000f3fe608060405234801561001057600080fd5b50600436106102c85760003560e01c80637ecebe001161017b578063c3666c36116100d8578063d505accf1161008c578063e0df5b6f11610071578063e0df5b6f14610e32578063eb79554914610ea2578063f2fde38b14610f27576102c8565b8063d505accf14610db3578063dd62ed3e14610e04576102c8565b8063c8291d84116100bd578063c8291d8414610d23578063cd0d009614610d2b578063cf2c52cb14610d33576102c8565b8063c3666c3614610c07578063c4c2bfdc14610d1b576102c8565b8063986502751161012f578063a9059cbb11610114578063a9059cbb14610b25578063aa271e1a14610b51578063b88d4fde14610b77576102c8565b80639865027514610af1578063a457c2d714610af9576102c8565b80638da5cb5b116101605780638da5cb5b14610a9f57806395d89b4114610ac3578063983b2d5614610acb576102c8565b80637ecebe00146109b757806388d695b2146109dd576102c8565b80633c130d9011610229578063572b6c05116101dd57806370a08231116101c257806370a082311461085157806373c8a9581461087757806379cc67901461098b576102c8565b8063572b6c0514610704578063685731071461072a576102c8565b806342966c681161020e57806342966c68146105685780634885b254146105855780634fc3585914610657576102c8565b80633c130d901461053457806340c10f191461053c576102c8565b806323b872dd11610280578063313ce56711610265578063313ce567146104e25780633644e515146105005780633950935114610508576102c8565b806323b872dd1461048d5780632e1a7d4d146104c3576102c8565b8063095ea7b3116102b1578063095ea7b31461038557806318160ddd146103b15780631b9a7529146103cb576102c8565b806301ffc9a7146102cd57806306fdde0314610308575b600080fd5b6102f4600480360360208110156102e357600080fd5b50356001600160e01b031916610f4d565b604080519115158252519081900360200190f35b610310610f6d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561034a578181015183820152602001610332565b50505050905090810190601f1680156103775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102f46004803603604081101561039b57600080fd5b506001600160a01b038135169060200135611001565b6103b961101e565b60408051918252519081900360200190f35b6102f4600480360360408110156103e157600080fd5b8101906020810181356401000000008111156103fc57600080fd5b82018360208201111561040e57600080fd5b8035906020019184602083028401116401000000008311171561043057600080fd5b91939092909160208101903564010000000081111561044e57600080fd5b82018360208201111561046057600080fd5b8035906020019184602083028401116401000000008311171561048257600080fd5b509092509050611024565b6102f4600480360360608110156104a357600080fd5b506001600160a01b0381358116916020810135909116906040013561109e565b6104e0600480360360208110156104d957600080fd5b50356110bd565b005b6104ea61111b565b6040805160ff9092168252519081900360200190f35b6103b961113f565b6102f46004803603604081101561051e57600080fd5b506001600160a01b03813516906020013561122b565b610310611399565b6104e06004803603604081101561055257600080fd5b506001600160a01b0381351690602001356113fa565b6102f46004803603602081101561057e57600080fd5b5035611418565b6102f46004803603606081101561059b57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156105c657600080fd5b8201836020820111156105d857600080fd5b803590602001918460208302840111640100000000831117156105fa57600080fd5b91939092909160208101903564010000000081111561061857600080fd5b82018360208201111561062a57600080fd5b8035906020019184602083028401116401000000008311171561064c57600080fd5b509092509050611433565b6106e76004803603608081101561066d57600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156106a857600080fd5b8201836020820111156106ba57600080fd5b803590602001918460018302840111640100000000831117156106dc57600080fd5b509092509050611767565b604080516001600160e01b03199092168252519081900360200190f35b6102f46004803603602081101561071a57600080fd5b50356001600160a01b031661181d565b6104e06004803603604081101561074057600080fd5b81019060208101813564010000000081111561075b57600080fd5b82018360208201111561076d57600080fd5b8035906020019184602083028401116401000000008311171561078f57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156107df57600080fd5b8201836020820111156107f157600080fd5b8035906020019184602083028401116401000000008311171561081357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611896945050505050565b6103b96004803603602081101561086757600080fd5b50356001600160a01b03166118ab565b6104e06004803603606081101561088d57600080fd5b8101906020810181356401000000008111156108a857600080fd5b8201836020820111156108ba57600080fd5b803590602001918460208302840111640100000000831117156108dc57600080fd5b9193909290916020810190356401000000008111156108fa57600080fd5b82018360208201111561090c57600080fd5b8035906020019184602083028401116401000000008311171561092e57600080fd5b91939092909160208101903564010000000081111561094c57600080fd5b82018360208201111561095e57600080fd5b8035906020019184602083028401116401000000008311171561098057600080fd5b5090925090506118c6565b6102f4600480360360408110156109a157600080fd5b506001600160a01b0381351690602001356119b8565b6103b9600480360360208110156109cd57600080fd5b50356001600160a01b03166119c4565b6102f4600480360360408110156109f357600080fd5b810190602081018135640100000000811115610a0e57600080fd5b820183602082011115610a2057600080fd5b80359060200191846020830284011164010000000083111715610a4257600080fd5b919390929091602081019035640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b5090925090506119d6565b610aa7611ce5565b604080516001600160a01b039092168252519081900360200190f35b610310611cf4565b6104e060048036036020811015610ae157600080fd5b50356001600160a01b0316611d55565b6104e0611d6c565b6102f460048036036040811015610b0f57600080fd5b506001600160a01b038135169060200135611dca565b6102f460048036036040811015610b3b57600080fd5b506001600160a01b038135169060200135611e39565b6102f460048036036020811015610b6757600080fd5b50356001600160a01b0316611e4d565b6102f460048036036080811015610b8d57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135640100000000811115610bc857600080fd5b820183602082011115610bda57600080fd5b80359060200191846001830284011164010000000083111715610bfc57600080fd5b509092509050611e62565b6104e060048036036060811015610c1d57600080fd5b810190602081018135640100000000811115610c3857600080fd5b820183602082011115610c4a57600080fd5b80359060200191846020830284011164010000000083111715610c6c57600080fd5b919390929091602081019035640100000000811115610c8a57600080fd5b820183602082011115610c9c57600080fd5b80359060200191846020830284011164010000000083111715610cbe57600080fd5b919390929091602081019035640100000000811115610cdc57600080fd5b820183602082011115610cee57600080fd5b80359060200191846020830284011164010000000083111715610d1057600080fd5b509092509050611fea565b610310612132565b610aa7612141565b6103b9612150565b6104e060048036036040811015610d4957600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115610d7457600080fd5b820183602082011115610d8657600080fd5b80359060200191846001830284011164010000000083111715610da857600080fd5b509092509050612174565b6104e0600480360360e0811015610dc957600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356121aa565b6103b960048036036040811015610e1a57600080fd5b506001600160a01b0381358116916020013516612429565b6104e060048036036020811015610e4857600080fd5b810190602081018135640100000000811115610e6357600080fd5b820183602082011115610e7557600080fd5b80359060200191846001830284011164010000000083111715610e9757600080fd5b509092509050612454565b6102f460048036036060811015610eb857600080fd5b6001600160a01b0382351691602081013591810190606081016040820135640100000000811115610ee857600080fd5b820183602082011115610efa57600080fd5b80359060200191846001830284011164010000000083111715610f1c57600080fd5b509092509050612470565b6104e060048036036020811015610f3d57600080fd5b50356001600160a01b03166125f6565b6000610f5882612667565b80610f675750610f67826126a5565b92915050565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610ff65780601f10610fcb57610100808354040283529160200191610ff6565b820191906000526020600020905b815481529060010190602001808311610fd957829003601f168201915b505050505090505b90565b600061101561100e6126f1565b84846126fb565b50600192915050565b60075490565b6000611093858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805160208089028281018201909352888252909350889250879182918501908490808284376000920191909152506127b892505050565b506001949350505050565b60006110b36110ab6126f1565b858585612974565b5060019392505050565b60006110c76126f1565b90506110d381836129a3565b604080516001600160a01b03831681526020810184905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a15050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000467f00000000000000000000000000000000000000000000000000000000000000008114611203576002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181526111fe938593919290918301828280156111f45780601f106111c9576101008083540402835291602001916111f4565b820191906000526020600020905b8154815290600101906020018083116111d757829003601f168201915b50505050506129dd565b611225565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b60006001600160a01b038316611288576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b60006112926126f1565b6001600160a01b03808216600090815260066020908152604080832093891683529290522054909150831561134357808401818111611318576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600660209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ff65780601f10610fcb57610100808354040283529160200191610ff6565b61140a6114056126f1565b612a67565b6114148282612ad4565b5050565b600061142b6114256126f1565b83612bf7565b506001919050565b60008382811461148a576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600560205260408120549080805b84811461169c5760008a8a838181106114bc57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415611536576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600089898481811061154457fe5b90506020020135905080600014611647578481018581116115ac576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b0316146115eb576001600160a01b0383166000908152600560205260409020805483019055611645565b86821115611640576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350506001016114a7565b5081158015906116ac5750808214155b1561172657818303838110611708576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260056020526040902090820190555b60006117306126f1565b9050806001600160a01b03168b6001600160a01b031614611756576117568b8285612cd6565b5060019a9950505050505050505050565b60003330146117bd576040805162461bcd60e51b815260206004820152601860248201527f4368696c6445524332303a2077726f6e672073656e6465720000000000000000604482015290519081900360640190fd5b6117c73085612bf7565b604080516001600160a01b03871681526020810186905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a150634fc3585960e01b95945050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610f6757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6118a16114056126f1565b6114148282612de5565b6001600160a01b031660009081526005602052604090205490565b6118d66118d16126f1565b613015565b8483811480156118e557508082145b611936576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b8181146119ae576119a688888381811061194f57fe5b905060200201356001600160a01b031685858481811061196b57fe5b9050602002013588888581811061197e57fe5b905060200201356001600160a01b03166001600160a01b03166130d99092919063ffffffff16565b600101611939565b5050505050505050565b600061101583836129a3565b60016020526000908152604090205481565b600083828114611a2d576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000611a376126f1565b6001600160a01b03811660009081526005602052604081205491925080805b858114611c4b5760008b8b83818110611a6b57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415611ae5576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a84818110611af357fe5b90506020020135905080600014611bf657848101858111611b5b576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b031614611b9a576001600160a01b0383166000908152600560205260409020805483019055611bf4565b86821115611bef576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101611a56565b508115801590611c5b5750808214155b15611cd557818303838110611cb7576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260056020526040902090820190555b5060019998505050505050505050565b6000546001600160a01b031690565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ff65780601f10610fcb57610100808354040283529160200191610ff6565b611d606118d16126f1565b611d6981613159565b50565b6000611d766126f1565b9050611d8181612a67565b6001600160a01b038116600081815260096020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b60006001600160a01b038316611e27576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b611015611e326126f1565b8484612cd6565b6000611015611e466126f1565b84846131a5565b60096020526000908152604090205460ff1681565b600080611e6d6126f1565b9050611e7b81888888612974565b611e8d866001600160a01b031661330c565b15611fdd57634fc3585960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015611f5557600080fd5b505af1158015611f69573d6000803e3d6000fd5b505050506040513d6020811015611f7f57600080fd5b50516001600160e01b03191614611fdd576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b611ff56118d16126f1565b84838114801561200457508082145b612055576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b8181146119ae5785858281811061206b57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a8581811061209657fe5b905060200201356001600160a01b03168787868181106120b257fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561210f57600080fd5b505af1158015612123573d6000803e3d6000fd5b50505050806001019050612058565b606061213c613312565b905090565b6008546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b61218461217f6126f1565b613356565b60008282602081101561219657600080fd5b503590506121a48482612ad4565b50505050565b6001600160a01b038716612205576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b8342111561225a576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526001602081815260408084208054938401905580517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280820195909552948b166060850152608084018a905260a084019190915260c08084018990528451808503909101815260e090930190935281519190920120906122ec61113f565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156123a0573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b031614612412576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b61241d8a8a8a6126fb565b50505050505050505050565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b61245f6118d16126f1565b61246b60048383613a40565b505050565b60008061247b6126f1565b90506124888187876131a5565b61249a866001600160a01b031661330c565b156125ea57634fc3585960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561256257600080fd5b505af1158015612576573d6000803e3d6000fd5b505050506040513d602081101561258c57600080fd5b50516001600160e01b031916146125ea576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b6126016118d16126f1565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006001600160e01b031982167f20c07ed1000000000000000000000000000000000000000000000000000000001480610f675750610f67826133b8565b60006001600160e01b031982167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610f675750506001600160e01b031916634fc3585960e01b1490565b600061213c613555565b6001600160a01b038216612756576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b81518151811461280f576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60006128196126f1565b90506000805b83811461295c57600086828151811061283457fe5b60200260200101519050600086838151811061284c57fe5b60200260200101519050806000146128ed576001600160a01b0382166000908152600560205260409020548181038181106128ce576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b03841660009081526005602052604090205550928301925b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3846001600160a01b0316826001600160a01b03161461295257612952828683612cd6565b505060010161281f565b50801561296d576007805482900390555b5050505050565b61297f8383836131a5565b836001600160a01b0316836001600160a01b0316146121a4576121a4838583612cd6565b6129ad8282612bf7565b60006129b76126f1565b9050806001600160a01b0316836001600160a01b03161461246b5761246b838284612cd6565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b03811660009081526009602052604090205460ff16611d69576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038216612b2f576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b6007548115612bb157808201818111612b8f576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6007556001600160a01b03831660009081526005602052604090208054830190555b6040805183815290516001600160a01b038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b8015612c91576001600160a01b038216600090815260056020526040902054818103818110612c6d576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038416600090815260056020526040902055506007805482900390555b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b038084166000908152600660209081526040808320938616835292905220546000198114801590612d0d57508115155b15612d9457818103818110612d69576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260066020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b815181518114612e3c576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000805b828114612faa576000858281518110612e5557fe5b6020026020010151905060006001600160a01b0316816001600160a01b03161415612ec7576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b6000858381518110612ed557fe5b6020026020010151905080600014612f5f57838101848111612f3e576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600090815260056020526040902080548301905593505b6040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050600101612e40565b5080156121a45760075481810181811161300b576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6007555050505050565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561304e57600080fd5b505afa158015613062573d6000803e3d6000fd5b505050506040513d602081101561307857600080fd5b50516001600160a01b03828116911614611d69576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261246b9084906136b5565b6001600160a01b038116600081815260096020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6001600160a01b038216613200576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b80156132bc576001600160a01b038316600090815260056020526040902054818103818110613276576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b0316146132b9576001600160a01b038086166000908152600560205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b151590565b606061331c6138b6565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b6008546001600160a01b03828116911614611d69576040805162461bcd60e51b815260206004820152601a60248201527f4368696c6445524332303a206f6e6c79206465706f7369746f72000000000000604482015290519081900360640190fd5b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061341b57506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b8061344f57506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b8061348357506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b806134b757506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b806134eb57506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b8061351f57506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b80610f675750506001600160e01b0319167f9d8ff7da000000000000000000000000000000000000000000000000000000001490565b60003381613561613a19565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806135d457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b156135e2579150610ffe9050565b6001600160a01b03821632148015906136a157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561367457600080fd5b505afa158015613688573d6000803e3d6000fd5b505050506040513d602081101561369e57600080fd5b50515b156136af579150610ffe9050565b50905090565b816136c86001600160a01b03821661330c565b613719576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b6020831061377457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613737565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146137d6576040519150601f19603f3d011682016040523d82523d6000602084013e6137db565b606091505b5091509150811561385a578051156138555780806020019051602081101561380257600080fd5b5051613855576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b61296d565b80516138ad576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681148061392257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156139395761392f613a25565b9250925050613a15565b6001600160a01b03811632148015906139ff57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6613984613a19565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156139d257600080fd5b505afa1580156139e6573d6000803e3d6000fd5b505050506040513d60208110156139fc57600080fd5b50515b15613a0c5761392f613a25565b60003692509250505b9091565b60131936013560601c90565b366000613a386013198301828481613ae1565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282613a765760008555613abc565b82601f10613a8f5782800160ff19823516178555613abc565b82800160010185558215613abc579182015b82811115613abc578235825591602001919060010190613aa1565b50613ac8929150613acc565b5090565b5b80821115613ac85760008155600101613acd565b60008085851115613af0578182fd5b83861115613afc578182fd5b505082019391909203915056fea26469706673582212206e0953319be4a511c845fa886deb881ae4daf2f18d28506917112ac91720659464736f6c63430007060033",
              "opcodes": "PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x4244 CODESIZE SUB DUP1 PUSH3 0x4244 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xA0 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xBC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0xE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x11A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x149 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x12F JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 DUP5 DUP2 ADD MLOAD DUP6 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD DUP4 DUP6 ADD DUP5 MSTORE PUSH1 0x10 DUP6 MSTORE PUSH16 0x4368696C64204552433230204D6F636B PUSH1 0x80 SHL DUP4 DUP7 ADD MSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x4345323 PUSH1 0xE4 SHL SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE SWAP5 MLOAD SWAP3 SWAP10 POP SWAP7 SWAP8 POP SWAP6 SWAP3 SWAP5 POP SWAP1 SWAP2 PUSH1 0x12 SWAP2 DUP9 SWAP2 DUP3 SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP5 SWAP2 DUP5 SWAP2 DUP5 SWAP2 DUP16 SWAP2 DUP16 SWAP2 DUP16 SWAP2 DUP3 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0x80 MSTORE DUP3 MLOAD PUSH3 0x233 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP7 ADD SWAP1 PUSH3 0x5ED JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x249 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x5ED JUMP JUMPDEST POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF8 DUP3 SWAP1 SHL AND PUSH2 0x100 MSTORE CHAINID PUSH1 0xC0 DUP2 SWAP1 MSTORE PUSH3 0x287 DUP2 DUP6 PUSH3 0x2DC JUMP JUMPDEST PUSH1 0xE0 MSTORE POP POP PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP6 SSTORE POP PUSH3 0x2C4 SWAP8 POP DUP9 SWAP7 POP PUSH3 0x366 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST POP PUSH3 0x2D1 DUP6 DUP6 PUSH3 0x3B2 JUMP JUMPDEST POP POP POP POP POP PUSH3 0x699 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH3 0x40A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 EQ PUSH3 0x57F JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x425 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x498 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x4A7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH3 0x533 JUMPI DUP4 DUP2 ADD DUP5 DUP2 GT PUSH3 0x512 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE SWAP4 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH3 0x40E JUMP JUMPDEST POP DUP1 ISZERO PUSH3 0x5E7 JUMPI PUSH1 0x7 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH3 0x5E2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE POP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x625 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x670 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x640 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x670 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x670 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x670 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x653 JUMP JUMPDEST POP PUSH3 0x67E SWAP3 SWAP2 POP PUSH3 0x682 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x67E JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x683 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH1 0xF8 SHR PUSH2 0x3B3F PUSH3 0x705 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x111D MSTORE POP DUP1 PUSH2 0x1205 MSTORE POP DUP1 PUSH2 0x1144 MSTORE DUP1 PUSH2 0x2152 MSTORE POP DUP1 PUSH2 0x1821 MSTORE DUP1 PUSH2 0x35A0 MSTORE DUP1 PUSH2 0x38EE MSTORE POP DUP1 PUSH2 0x185C MSTORE DUP1 PUSH2 0x3565 MSTORE DUP1 PUSH2 0x35F8 MSTORE DUP1 PUSH2 0x38C4 MSTORE DUP1 PUSH2 0x394F MSTORE POP PUSH2 0x3B3F 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 0x2C8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x17B JUMPI DUP1 PUSH4 0xC3666C36 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE0DF5B6F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE0DF5B6F EQ PUSH2 0xE32 JUMPI DUP1 PUSH4 0xEB795549 EQ PUSH2 0xEA2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xF27 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xD505ACCF EQ PUSH2 0xDB3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xE04 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xC8291D84 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xC8291D84 EQ PUSH2 0xD23 JUMPI DUP1 PUSH4 0xCD0D0096 EQ PUSH2 0xD2B JUMPI DUP1 PUSH4 0xCF2C52CB EQ PUSH2 0xD33 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xC07 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0xD1B JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x98650275 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xB25 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xB51 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0xB77 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x98650275 EQ PUSH2 0xAF1 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0xAF9 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA9F JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xAC3 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0xACB JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x9B7 JUMPI DUP1 PUSH4 0x88D695B2 EQ PUSH2 0x9DD JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x3C130D90 GT PUSH2 0x229 JUMPI DUP1 PUSH4 0x572B6C05 GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x851 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x877 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x98B JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x704 JUMPI DUP1 PUSH4 0x68573107 EQ PUSH2 0x72A JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x42966C68 GT PUSH2 0x20E JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x568 JUMPI DUP1 PUSH4 0x4885B254 EQ PUSH2 0x585 JUMPI DUP1 PUSH4 0x4FC35859 EQ PUSH2 0x657 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x3C130D90 EQ PUSH2 0x534 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x53C JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x280 JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0x265 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x4E2 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x500 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x508 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x48D JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x4C3 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0x1B9A7529 EQ PUSH2 0x3CB JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x308 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xF4D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x310 PUSH2 0xF6D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x34A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x332 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x377 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1001 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x101E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x40E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1024 JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x109E JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x10BD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4EA PUSH2 0x111B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3B9 PUSH2 0x113F JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x122B JUMP JUMPDEST PUSH2 0x310 PUSH2 0x1399 JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x13FA JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1418 JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1433 JUMP JUMPDEST PUSH2 0x6E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x66D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1767 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x71A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x181D JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x740 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x75B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x76D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x78F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x7DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x813 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1896 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3B9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x867 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18AB JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x88D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x8DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x90C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x92E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x94C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x95E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x980 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x18C6 JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x19B8 JUMP JUMPDEST PUSH2 0x3B9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19C4 JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x19D6 JUMP JUMPDEST PUSH2 0xAA7 PUSH2 0x1CE5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x310 PUSH2 0x1CF4 JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D55 JUMP JUMPDEST PUSH2 0x4E0 PUSH2 0x1D6C JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1DCA JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1E39 JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E4D JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xB8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1E62 JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xC6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xCBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1FEA JUMP JUMPDEST PUSH2 0x310 PUSH2 0x2132 JUMP JUMPDEST PUSH2 0xAA7 PUSH2 0x2141 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x2150 JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2174 JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xDC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x21AA JUMP JUMPDEST PUSH2 0x3B9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x2429 JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xE63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xE97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xEB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xEE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xEFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xF1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2470 JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x25F6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF58 DUP3 PUSH2 0x2667 JUMP JUMPDEST DUP1 PUSH2 0xF67 JUMPI POP PUSH2 0xF67 DUP3 PUSH2 0x26A5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xFF6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xFCB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xFF6 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 0xFD9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1015 PUSH2 0x100E PUSH2 0x26F1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x26FB JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1093 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE SWAP1 SWAP4 POP DUP9 SWAP3 POP DUP8 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x27B8 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B3 PUSH2 0x10AB PUSH2 0x26F1 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x2974 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10C7 PUSH2 0x26F1 JUMP JUMPDEST SWAP1 POP PUSH2 0x10D3 DUP2 DUP4 PUSH2 0x29A3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 DUP2 EQ PUSH2 0x1203 JUMPI PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE PUSH2 0x11FE SWAP4 DUP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x11F4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11C9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x11F4 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 0x11D7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x29DD JUMP JUMPDEST PUSH2 0x1225 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1288 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1292 PUSH2 0x26F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP4 ISZERO PUSH2 0x1343 JUMPI DUP1 DUP5 ADD DUP2 DUP2 GT PUSH2 0x1318 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20616C6C6F77616E6365206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xFF6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xFCB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xFF6 JUMP JUMPDEST PUSH2 0x140A PUSH2 0x1405 PUSH2 0x26F1 JUMP JUMPDEST PUSH2 0x2A67 JUMP JUMPDEST PUSH2 0x1414 DUP3 DUP3 PUSH2 0x2AD4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x142B PUSH2 0x1425 PUSH2 0x26F1 JUMP JUMPDEST DUP4 PUSH2 0x2BF7 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x148A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP1 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0x169C JUMPI PUSH1 0x0 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0x14BC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1536 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0x1544 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x1647 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x15AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x15EB JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x1645 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x1640 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x14A7 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x16AC JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x1726 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x1708 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0x1730 PUSH2 0x26F1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1756 JUMPI PUSH2 0x1756 DUP12 DUP3 DUP6 PUSH2 0x2CD6 JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0x17BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4368696C6445524332303A2077726F6E672073656E6465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17C7 ADDRESS DUP6 PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH4 0x4FC35859 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xF67 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x18A1 PUSH2 0x1405 PUSH2 0x26F1 JUMP JUMPDEST PUSH2 0x1414 DUP3 DUP3 PUSH2 0x2DE5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x18D6 PUSH2 0x18D1 PUSH2 0x26F1 JUMP JUMPDEST PUSH2 0x3015 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x18E5 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1936 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x19AE JUMPI PUSH2 0x19A6 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x194F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x196B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x197E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x30D9 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1939 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1015 DUP4 DUP4 PUSH2 0x29A3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x1A2D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1A37 PUSH2 0x26F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP DUP1 DUP1 JUMPDEST DUP6 DUP2 EQ PUSH2 0x1C4B JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x1A6B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1AE5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x1AF3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x1BF6 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x1B5B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1B9A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x1BF4 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x1BEF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x1A56 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1C5B JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x1CD5 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x1CB7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xFF6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xFCB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xFF6 JUMP JUMPDEST PUSH2 0x1D60 PUSH2 0x18D1 PUSH2 0x26F1 JUMP JUMPDEST PUSH2 0x1D69 DUP2 PUSH2 0x3159 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D76 PUSH2 0x26F1 JUMP JUMPDEST SWAP1 POP PUSH2 0x1D81 DUP2 PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1E27 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1015 PUSH2 0x1E32 PUSH2 0x26F1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2CD6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1015 PUSH2 0x1E46 PUSH2 0x26F1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x31A5 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E6D PUSH2 0x26F1 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E7B DUP2 DUP9 DUP9 DUP9 PUSH2 0x2974 JUMP JUMPDEST PUSH2 0x1E8D DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x330C JUMP JUMPDEST ISZERO PUSH2 0x1FDD JUMPI PUSH4 0x4FC35859 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F69 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1FDD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1FF5 PUSH2 0x18D1 PUSH2 0x26F1 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x2004 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x2055 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x19AE JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x206B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x2096 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x20B2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x210F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2123 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x2058 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x213C PUSH2 0x3312 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x2184 PUSH2 0x217F PUSH2 0x26F1 JUMP JUMPDEST PUSH2 0x3356 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP1 POP PUSH2 0x21A4 DUP5 DUP3 PUSH2 0x2AD4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x2205 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373206F776E657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x225A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2065787069726564207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD SWAP4 DUP5 ADD SWAP1 SSTORE DUP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP5 ADD MSTORE DUP1 DUP3 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP5 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xC0 DUP1 DUP5 ADD DUP10 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 SWAP1 SWAP4 ADD SWAP1 SWAP4 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 SWAP1 PUSH2 0x22EC PUSH2 0x113F JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2412 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E76616C6964207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x241D DUP11 DUP11 DUP11 PUSH2 0x26FB JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 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 0x245F PUSH2 0x18D1 PUSH2 0x26F1 JUMP JUMPDEST PUSH2 0x246B PUSH1 0x4 DUP4 DUP4 PUSH2 0x3A40 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x247B PUSH2 0x26F1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2488 DUP2 DUP8 DUP8 PUSH2 0x31A5 JUMP JUMPDEST PUSH2 0x249A DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x330C JUMP JUMPDEST ISZERO PUSH2 0x25EA JUMPI PUSH4 0x4FC35859 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP5 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2576 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x258C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x25EA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2601 PUSH2 0x18D1 PUSH2 0x26F1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x20C07ED100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xF67 JUMPI POP PUSH2 0xF67 DUP3 PUSH2 0x33B8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xF67 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0x4FC35859 PUSH1 0xE0 SHL EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x213C PUSH2 0x3555 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2756 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 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 DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x280F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2819 PUSH2 0x26F1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 EQ PUSH2 0x295C JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2834 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x284C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x28ED JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x28CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP SWAP3 DUP4 ADD SWAP3 JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2952 JUMPI PUSH2 0x2952 DUP3 DUP7 DUP4 PUSH2 0x2CD6 JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x281F JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x296D JUMPI PUSH1 0x7 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x297F DUP4 DUP4 DUP4 PUSH2 0x31A5 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x21A4 JUMPI PUSH2 0x21A4 DUP4 DUP6 DUP4 PUSH2 0x2CD6 JUMP JUMPDEST PUSH2 0x29AD DUP3 DUP3 PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29B7 PUSH2 0x26F1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x246B JUMPI PUSH2 0x246B DUP4 DUP3 DUP5 PUSH2 0x2CD6 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1D69 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2B2F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD DUP2 ISZERO PUSH2 0x2BB1 JUMPI DUP1 DUP3 ADD DUP2 DUP2 GT PUSH2 0x2B8F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2C91 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x2C6D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP PUSH1 0x7 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2D0D JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2D94 JUMPI DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x2D69 JUMPI PUSH1 0x40 DUP1 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 SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x2E3C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 EQ PUSH2 0x2FAA JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2E55 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2EC7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2ED5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x2F5F JUMPI DUP4 DUP2 ADD DUP5 DUP2 GT PUSH2 0x2F3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE SWAP4 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x2E40 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x21A4 JUMPI PUSH1 0x7 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x300B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE POP POP POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x304E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3062 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3078 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1D69 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x246B SWAP1 DUP5 SWAP1 PUSH2 0x36B5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3200 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x32BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x3276 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x32B9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP7 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE JUMPDEST POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x331C PUSH2 0x38B6 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1D69 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4368696C6445524332303A206F6E6C79206465706F7369746F72000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x341B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x36372B0700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x344F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xA219A02500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x3483 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x3C130D9000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x34B7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D07518600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x34EB JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xC05327E600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x351F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x53F41A9700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xF67 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0x9D8FF7DA00000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x3561 PUSH2 0x3A19 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x35D4 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x35E2 JUMPI SWAP2 POP PUSH2 0xFFE SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x36A1 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3688 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x369E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x36AF JUMPI SWAP2 POP PUSH2 0xFFE SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x36C8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x330C JUMP JUMPDEST PUSH2 0x3719 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3774 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3737 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x37D6 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 0x37DB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x385A JUMPI DUP1 MLOAD ISZERO PUSH2 0x3855 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3855 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x296D JUMP JUMPDEST DUP1 MLOAD PUSH2 0x38AD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x3922 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x3939 JUMPI PUSH2 0x392F PUSH2 0x3A25 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x3A15 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x39FF JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x3984 PUSH2 0x3A19 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x39E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x39FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x3A0C JUMPI PUSH2 0x392F PUSH2 0x3A25 JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x3A38 PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x3AE1 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x3A76 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3ABC JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3A8F JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x3ABC JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3ABC JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3ABC JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3AA1 JUMP JUMPDEST POP PUSH2 0x3AC8 SWAP3 SWAP2 POP PUSH2 0x3ACC JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3AC8 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3ACD JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x3AF0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x3AFC JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x953319BE4A511C845FA886DEB881A 0xE4 0xDA CALLCODE CALL DUP14 0x28 POP PUSH10 0x17112AC9172065946473 PUSH16 0x6C634300070600330000000000000000 ",
              "sourceMap": "783:2385:57:-:0;;;924:444;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;924:444:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;924:444:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;924:444:57;;;;;;;;;;;;;;;;;;;;;;740:222:56;;;;;;;;-1:-1:-1;;;740:222:56;;;;;;;;;;;;;;-1:-1:-1;;;740:222:56;;;;;;;-1:-1:-1;960:15:2;;-1:-1:-1;;;;;;960:15:2;1233:10:57;960:15:2;;;;;990:40;;924:444:57;;-1:-1:-1;924:444:57;;-1:-1:-1;924:444:57;1233:10;;-1:-1:-1;740:222:56;;1191:2:57;;924:444;;;;;;740:222:56;;1191:2:57;;924:444;;740:222:56;;1191:2:57;;924:444;;;;1233:10;;;;990:40:2;;-1:-1:-1;;990:40:2;-1:-1:-1;;;;;;;443:40:85;;;;;;;;493:38;;;;;;2047:13:38;;;;:5;;-1:-1:-1;2047:13:38;;;;:::i;:::-;-1:-1:-1;2070:17:38;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;2097:21:38;;;;;;;;2188:9;2216:27;;;;2273:48;2188:9;2314:5;2273:25;:48::i;:::-;2253:68;;-1:-1:-1;;1211:17:55;:38;;-1:-1:-1;;;;;;1211:38:55;-1:-1:-1;;;;;1211:38:55;;;;;;;;;;;-1:-1:-1;476:18:1::1;::::0;-1:-1:-1;487:6:1;;-1:-1:-1;476:10:1::1;::::0;-1:-1:-1;;;;;;476:18:1:i:1;:::-;-1:-1:-1::0;1331:30:57::3;1342:10:::0;1354:6;1331:10:::3;:30::i;:::-;924:444:::0;;;;;783:2385;;17687:463:38;17995:16;;;;;;;17846:283;;;17878:95;17846:283;;;;;;;;;;;18033:14;17846:283;;;;;;;;;;;18106:4;17846:283;;;;;;;;;;;;;;;;;;;;;;;;;17819:324;;;;;;17687:463::o;1252:122:1:-;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;14720:1045:38:-;14838:17;;14883:13;;14873:23;;14865:62;;;;;-1:-1:-1;;;14865:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14938:18;14971:9;14966:550;14987:6;14982:1;:11;14966:550;;15014:10;15027;15038:1;15027:13;;;;;;;;;;;;;;15014:26;;15076:1;-1:-1:-1;;;;;15062:16:38;:2;-1:-1:-1;;;;;15062:16:38;;;15054:48;;;;;-1:-1:-1;;;15054:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;15117:13;15133:6;15140:1;15133:9;;;;;;;;;;;;;;15117:25;;15160:5;15169:1;15160:10;15156:300;;15214:18;;;15258:26;;;15250:61;;;;;-1:-1:-1;;;15250:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15373:13:38;;;;;;:9;:13;;;;;:22;;;;;;15342:13;-1:-1:-1;15156:300:38;15474:31;;;;;;;;-1:-1:-1;;;;;15474:31:38;;;15491:1;;15474:31;;;;;;;;;-1:-1:-1;;14995:3:38;;14966:550;;;-1:-1:-1;15530:15:38;;15526:233;;15578:12;;15624:19;;;15665:18;;;15657:53;;;;;-1:-1:-1;;;15657:53:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;15724:12;:24;-1:-1:-1;15526:233:38;14720:1045;;;;:::o;783:2385:57:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;783:2385:57;;;-1:-1:-1;783:2385:57;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:379:86",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:86",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "144:233:86",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "182:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "191:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "202:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "184:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "184:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "184:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "160:10:86"
                                  },
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "172:8:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "157:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "157:24:86"
                              },
                              "nodeType": "YulIf",
                              "src": "154:2:86"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "247:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "256:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "267:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "249:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "249:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "229:8:86"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "239:6:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "226:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "226:20:86"
                              },
                              "nodeType": "YulIf",
                              "src": "223:2:86"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "288:36:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "305:6:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "313:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "301:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "301:23:86"
                              },
                              "variableNames": [
                                {
                                  "name": "offsetOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "288:9:86"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "333:38:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "350:8:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "360:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "346:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "346:25:86"
                              },
                              "variableNames": [
                                {
                                  "name": "lengthOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:9:86"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "78:6:86",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "86:6:86",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "94:10:86",
                            "type": ""
                          },
                          {
                            "name": "endIndex",
                            "nodeType": "YulTypedName",
                            "src": "106:8:86",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "offsetOut",
                            "nodeType": "YulTypedName",
                            "src": "119:9:86",
                            "type": ""
                          },
                          {
                            "name": "lengthOut",
                            "nodeType": "YulTypedName",
                            "src": "130:9:86",
                            "type": ""
                          }
                        ],
                        "src": "14:363:86"
                      }
                    ]
                  },
                  "contents": "{\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(offsetOut, offsetOut) }\n        if gt(endIndex, length) { revert(offsetOut, offsetOut) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n}",
                  "id": 86,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "8178": [
                  {
                    "length": 32,
                    "start": 4420
                  },
                  {
                    "length": 32,
                    "start": 8530
                  }
                ],
                "8180": [
                  {
                    "length": 32,
                    "start": 4613
                  }
                ],
                "8192": [
                  {
                    "length": 32,
                    "start": 4381
                  }
                ],
                "15042": [
                  {
                    "length": 32,
                    "start": 6236
                  },
                  {
                    "length": 32,
                    "start": 13669
                  },
                  {
                    "length": 32,
                    "start": 13816
                  },
                  {
                    "length": 32,
                    "start": 14532
                  },
                  {
                    "length": 32,
                    "start": 14671
                  }
                ],
                "15044": [
                  {
                    "length": 32,
                    "start": 6177
                  },
                  {
                    "length": 32,
                    "start": 13728
                  },
                  {
                    "length": 32,
                    "start": 14574
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106102c85760003560e01c80637ecebe001161017b578063c3666c36116100d8578063d505accf1161008c578063e0df5b6f11610071578063e0df5b6f14610e32578063eb79554914610ea2578063f2fde38b14610f27576102c8565b8063d505accf14610db3578063dd62ed3e14610e04576102c8565b8063c8291d84116100bd578063c8291d8414610d23578063cd0d009614610d2b578063cf2c52cb14610d33576102c8565b8063c3666c3614610c07578063c4c2bfdc14610d1b576102c8565b8063986502751161012f578063a9059cbb11610114578063a9059cbb14610b25578063aa271e1a14610b51578063b88d4fde14610b77576102c8565b80639865027514610af1578063a457c2d714610af9576102c8565b80638da5cb5b116101605780638da5cb5b14610a9f57806395d89b4114610ac3578063983b2d5614610acb576102c8565b80637ecebe00146109b757806388d695b2146109dd576102c8565b80633c130d9011610229578063572b6c05116101dd57806370a08231116101c257806370a082311461085157806373c8a9581461087757806379cc67901461098b576102c8565b8063572b6c0514610704578063685731071461072a576102c8565b806342966c681161020e57806342966c68146105685780634885b254146105855780634fc3585914610657576102c8565b80633c130d901461053457806340c10f191461053c576102c8565b806323b872dd11610280578063313ce56711610265578063313ce567146104e25780633644e515146105005780633950935114610508576102c8565b806323b872dd1461048d5780632e1a7d4d146104c3576102c8565b8063095ea7b3116102b1578063095ea7b31461038557806318160ddd146103b15780631b9a7529146103cb576102c8565b806301ffc9a7146102cd57806306fdde0314610308575b600080fd5b6102f4600480360360208110156102e357600080fd5b50356001600160e01b031916610f4d565b604080519115158252519081900360200190f35b610310610f6d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561034a578181015183820152602001610332565b50505050905090810190601f1680156103775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102f46004803603604081101561039b57600080fd5b506001600160a01b038135169060200135611001565b6103b961101e565b60408051918252519081900360200190f35b6102f4600480360360408110156103e157600080fd5b8101906020810181356401000000008111156103fc57600080fd5b82018360208201111561040e57600080fd5b8035906020019184602083028401116401000000008311171561043057600080fd5b91939092909160208101903564010000000081111561044e57600080fd5b82018360208201111561046057600080fd5b8035906020019184602083028401116401000000008311171561048257600080fd5b509092509050611024565b6102f4600480360360608110156104a357600080fd5b506001600160a01b0381358116916020810135909116906040013561109e565b6104e0600480360360208110156104d957600080fd5b50356110bd565b005b6104ea61111b565b6040805160ff9092168252519081900360200190f35b6103b961113f565b6102f46004803603604081101561051e57600080fd5b506001600160a01b03813516906020013561122b565b610310611399565b6104e06004803603604081101561055257600080fd5b506001600160a01b0381351690602001356113fa565b6102f46004803603602081101561057e57600080fd5b5035611418565b6102f46004803603606081101561059b57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156105c657600080fd5b8201836020820111156105d857600080fd5b803590602001918460208302840111640100000000831117156105fa57600080fd5b91939092909160208101903564010000000081111561061857600080fd5b82018360208201111561062a57600080fd5b8035906020019184602083028401116401000000008311171561064c57600080fd5b509092509050611433565b6106e76004803603608081101561066d57600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156106a857600080fd5b8201836020820111156106ba57600080fd5b803590602001918460018302840111640100000000831117156106dc57600080fd5b509092509050611767565b604080516001600160e01b03199092168252519081900360200190f35b6102f46004803603602081101561071a57600080fd5b50356001600160a01b031661181d565b6104e06004803603604081101561074057600080fd5b81019060208101813564010000000081111561075b57600080fd5b82018360208201111561076d57600080fd5b8035906020019184602083028401116401000000008311171561078f57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156107df57600080fd5b8201836020820111156107f157600080fd5b8035906020019184602083028401116401000000008311171561081357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611896945050505050565b6103b96004803603602081101561086757600080fd5b50356001600160a01b03166118ab565b6104e06004803603606081101561088d57600080fd5b8101906020810181356401000000008111156108a857600080fd5b8201836020820111156108ba57600080fd5b803590602001918460208302840111640100000000831117156108dc57600080fd5b9193909290916020810190356401000000008111156108fa57600080fd5b82018360208201111561090c57600080fd5b8035906020019184602083028401116401000000008311171561092e57600080fd5b91939092909160208101903564010000000081111561094c57600080fd5b82018360208201111561095e57600080fd5b8035906020019184602083028401116401000000008311171561098057600080fd5b5090925090506118c6565b6102f4600480360360408110156109a157600080fd5b506001600160a01b0381351690602001356119b8565b6103b9600480360360208110156109cd57600080fd5b50356001600160a01b03166119c4565b6102f4600480360360408110156109f357600080fd5b810190602081018135640100000000811115610a0e57600080fd5b820183602082011115610a2057600080fd5b80359060200191846020830284011164010000000083111715610a4257600080fd5b919390929091602081019035640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b5090925090506119d6565b610aa7611ce5565b604080516001600160a01b039092168252519081900360200190f35b610310611cf4565b6104e060048036036020811015610ae157600080fd5b50356001600160a01b0316611d55565b6104e0611d6c565b6102f460048036036040811015610b0f57600080fd5b506001600160a01b038135169060200135611dca565b6102f460048036036040811015610b3b57600080fd5b506001600160a01b038135169060200135611e39565b6102f460048036036020811015610b6757600080fd5b50356001600160a01b0316611e4d565b6102f460048036036080811015610b8d57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135640100000000811115610bc857600080fd5b820183602082011115610bda57600080fd5b80359060200191846001830284011164010000000083111715610bfc57600080fd5b509092509050611e62565b6104e060048036036060811015610c1d57600080fd5b810190602081018135640100000000811115610c3857600080fd5b820183602082011115610c4a57600080fd5b80359060200191846020830284011164010000000083111715610c6c57600080fd5b919390929091602081019035640100000000811115610c8a57600080fd5b820183602082011115610c9c57600080fd5b80359060200191846020830284011164010000000083111715610cbe57600080fd5b919390929091602081019035640100000000811115610cdc57600080fd5b820183602082011115610cee57600080fd5b80359060200191846020830284011164010000000083111715610d1057600080fd5b509092509050611fea565b610310612132565b610aa7612141565b6103b9612150565b6104e060048036036040811015610d4957600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115610d7457600080fd5b820183602082011115610d8657600080fd5b80359060200191846001830284011164010000000083111715610da857600080fd5b509092509050612174565b6104e0600480360360e0811015610dc957600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356121aa565b6103b960048036036040811015610e1a57600080fd5b506001600160a01b0381358116916020013516612429565b6104e060048036036020811015610e4857600080fd5b810190602081018135640100000000811115610e6357600080fd5b820183602082011115610e7557600080fd5b80359060200191846001830284011164010000000083111715610e9757600080fd5b509092509050612454565b6102f460048036036060811015610eb857600080fd5b6001600160a01b0382351691602081013591810190606081016040820135640100000000811115610ee857600080fd5b820183602082011115610efa57600080fd5b80359060200191846001830284011164010000000083111715610f1c57600080fd5b509092509050612470565b6104e060048036036020811015610f3d57600080fd5b50356001600160a01b03166125f6565b6000610f5882612667565b80610f675750610f67826126a5565b92915050565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610ff65780601f10610fcb57610100808354040283529160200191610ff6565b820191906000526020600020905b815481529060010190602001808311610fd957829003601f168201915b505050505090505b90565b600061101561100e6126f1565b84846126fb565b50600192915050565b60075490565b6000611093858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805160208089028281018201909352888252909350889250879182918501908490808284376000920191909152506127b892505050565b506001949350505050565b60006110b36110ab6126f1565b858585612974565b5060019392505050565b60006110c76126f1565b90506110d381836129a3565b604080516001600160a01b03831681526020810184905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a15050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000467f00000000000000000000000000000000000000000000000000000000000000008114611203576002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181526111fe938593919290918301828280156111f45780601f106111c9576101008083540402835291602001916111f4565b820191906000526020600020905b8154815290600101906020018083116111d757829003601f168201915b50505050506129dd565b611225565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b60006001600160a01b038316611288576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b60006112926126f1565b6001600160a01b03808216600090815260066020908152604080832093891683529290522054909150831561134357808401818111611318576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600660209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ff65780601f10610fcb57610100808354040283529160200191610ff6565b61140a6114056126f1565b612a67565b6114148282612ad4565b5050565b600061142b6114256126f1565b83612bf7565b506001919050565b60008382811461148a576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600560205260408120549080805b84811461169c5760008a8a838181106114bc57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415611536576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600089898481811061154457fe5b90506020020135905080600014611647578481018581116115ac576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b0316146115eb576001600160a01b0383166000908152600560205260409020805483019055611645565b86821115611640576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350506001016114a7565b5081158015906116ac5750808214155b1561172657818303838110611708576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260056020526040902090820190555b60006117306126f1565b9050806001600160a01b03168b6001600160a01b031614611756576117568b8285612cd6565b5060019a9950505050505050505050565b60003330146117bd576040805162461bcd60e51b815260206004820152601860248201527f4368696c6445524332303a2077726f6e672073656e6465720000000000000000604482015290519081900360640190fd5b6117c73085612bf7565b604080516001600160a01b03871681526020810186905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a150634fc3585960e01b95945050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610f6757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6118a16114056126f1565b6114148282612de5565b6001600160a01b031660009081526005602052604090205490565b6118d66118d16126f1565b613015565b8483811480156118e557508082145b611936576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b8181146119ae576119a688888381811061194f57fe5b905060200201356001600160a01b031685858481811061196b57fe5b9050602002013588888581811061197e57fe5b905060200201356001600160a01b03166001600160a01b03166130d99092919063ffffffff16565b600101611939565b5050505050505050565b600061101583836129a3565b60016020526000908152604090205481565b600083828114611a2d576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000611a376126f1565b6001600160a01b03811660009081526005602052604081205491925080805b858114611c4b5760008b8b83818110611a6b57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415611ae5576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a84818110611af357fe5b90506020020135905080600014611bf657848101858111611b5b576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b031614611b9a576001600160a01b0383166000908152600560205260409020805483019055611bf4565b86821115611bef576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101611a56565b508115801590611c5b5750808214155b15611cd557818303838110611cb7576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260056020526040902090820190555b5060019998505050505050505050565b6000546001600160a01b031690565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ff65780601f10610fcb57610100808354040283529160200191610ff6565b611d606118d16126f1565b611d6981613159565b50565b6000611d766126f1565b9050611d8181612a67565b6001600160a01b038116600081815260096020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b60006001600160a01b038316611e27576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b611015611e326126f1565b8484612cd6565b6000611015611e466126f1565b84846131a5565b60096020526000908152604090205460ff1681565b600080611e6d6126f1565b9050611e7b81888888612974565b611e8d866001600160a01b031661330c565b15611fdd57634fc3585960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015611f5557600080fd5b505af1158015611f69573d6000803e3d6000fd5b505050506040513d6020811015611f7f57600080fd5b50516001600160e01b03191614611fdd576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b611ff56118d16126f1565b84838114801561200457508082145b612055576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b8181146119ae5785858281811061206b57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a8581811061209657fe5b905060200201356001600160a01b03168787868181106120b257fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561210f57600080fd5b505af1158015612123573d6000803e3d6000fd5b50505050806001019050612058565b606061213c613312565b905090565b6008546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b61218461217f6126f1565b613356565b60008282602081101561219657600080fd5b503590506121a48482612ad4565b50505050565b6001600160a01b038716612205576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b8342111561225a576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526001602081815260408084208054938401905580517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280820195909552948b166060850152608084018a905260a084019190915260c08084018990528451808503909101815260e090930190935281519190920120906122ec61113f565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156123a0573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b031614612412576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b61241d8a8a8a6126fb565b50505050505050505050565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b61245f6118d16126f1565b61246b60048383613a40565b505050565b60008061247b6126f1565b90506124888187876131a5565b61249a866001600160a01b031661330c565b156125ea57634fc3585960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561256257600080fd5b505af1158015612576573d6000803e3d6000fd5b505050506040513d602081101561258c57600080fd5b50516001600160e01b031916146125ea576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b6126016118d16126f1565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006001600160e01b031982167f20c07ed1000000000000000000000000000000000000000000000000000000001480610f675750610f67826133b8565b60006001600160e01b031982167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610f675750506001600160e01b031916634fc3585960e01b1490565b600061213c613555565b6001600160a01b038216612756576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b81518151811461280f576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60006128196126f1565b90506000805b83811461295c57600086828151811061283457fe5b60200260200101519050600086838151811061284c57fe5b60200260200101519050806000146128ed576001600160a01b0382166000908152600560205260409020548181038181106128ce576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b03841660009081526005602052604090205550928301925b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3846001600160a01b0316826001600160a01b03161461295257612952828683612cd6565b505060010161281f565b50801561296d576007805482900390555b5050505050565b61297f8383836131a5565b836001600160a01b0316836001600160a01b0316146121a4576121a4838583612cd6565b6129ad8282612bf7565b60006129b76126f1565b9050806001600160a01b0316836001600160a01b03161461246b5761246b838284612cd6565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b03811660009081526009602052604090205460ff16611d69576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038216612b2f576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b6007548115612bb157808201818111612b8f576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6007556001600160a01b03831660009081526005602052604090208054830190555b6040805183815290516001600160a01b038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b8015612c91576001600160a01b038216600090815260056020526040902054818103818110612c6d576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038416600090815260056020526040902055506007805482900390555b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b038084166000908152600660209081526040808320938616835292905220546000198114801590612d0d57508115155b15612d9457818103818110612d69576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260066020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b815181518114612e3c576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000805b828114612faa576000858281518110612e5557fe5b6020026020010151905060006001600160a01b0316816001600160a01b03161415612ec7576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b6000858381518110612ed557fe5b6020026020010151905080600014612f5f57838101848111612f3e576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600090815260056020526040902080548301905593505b6040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050600101612e40565b5080156121a45760075481810181811161300b576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6007555050505050565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561304e57600080fd5b505afa158015613062573d6000803e3d6000fd5b505050506040513d602081101561307857600080fd5b50516001600160a01b03828116911614611d69576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261246b9084906136b5565b6001600160a01b038116600081815260096020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6001600160a01b038216613200576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b80156132bc576001600160a01b038316600090815260056020526040902054818103818110613276576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b0316146132b9576001600160a01b038086166000908152600560205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b151590565b606061331c6138b6565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b6008546001600160a01b03828116911614611d69576040805162461bcd60e51b815260206004820152601a60248201527f4368696c6445524332303a206f6e6c79206465706f7369746f72000000000000604482015290519081900360640190fd5b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061341b57506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b8061344f57506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b8061348357506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b806134b757506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b806134eb57506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b8061351f57506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b80610f675750506001600160e01b0319167f9d8ff7da000000000000000000000000000000000000000000000000000000001490565b60003381613561613a19565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806135d457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b156135e2579150610ffe9050565b6001600160a01b03821632148015906136a157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561367457600080fd5b505afa158015613688573d6000803e3d6000fd5b505050506040513d602081101561369e57600080fd5b50515b156136af579150610ffe9050565b50905090565b816136c86001600160a01b03821661330c565b613719576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b6020831061377457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613737565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146137d6576040519150601f19603f3d011682016040523d82523d6000602084013e6137db565b606091505b5091509150811561385a578051156138555780806020019051602081101561380257600080fd5b5051613855576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b61296d565b80516138ad576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681148061392257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156139395761392f613a25565b9250925050613a15565b6001600160a01b03811632148015906139ff57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6613984613a19565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156139d257600080fd5b505afa1580156139e6573d6000803e3d6000fd5b505050506040513d60208110156139fc57600080fd5b50515b15613a0c5761392f613a25565b60003692509250505b9091565b60131936013560601c90565b366000613a386013198301828481613ae1565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282613a765760008555613abc565b82601f10613a8f5782800160ff19823516178555613abc565b82800160010185558215613abc579182015b82811115613abc578235825591602001919060010190613aa1565b50613ac8929150613acc565b5090565b5b80821115613ac85760008155600101613acd565b60008085851115613af0578182fd5b83861115613afc578182fd5b505082019391909203915056fea26469706673582212206e0953319be4a511c845fa886deb881ae4daf2f18d28506917112ac91720659464736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2C8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x17B JUMPI DUP1 PUSH4 0xC3666C36 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE0DF5B6F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE0DF5B6F EQ PUSH2 0xE32 JUMPI DUP1 PUSH4 0xEB795549 EQ PUSH2 0xEA2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xF27 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xD505ACCF EQ PUSH2 0xDB3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xE04 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xC8291D84 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xC8291D84 EQ PUSH2 0xD23 JUMPI DUP1 PUSH4 0xCD0D0096 EQ PUSH2 0xD2B JUMPI DUP1 PUSH4 0xCF2C52CB EQ PUSH2 0xD33 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xC07 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0xD1B JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x98650275 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xB25 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xB51 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0xB77 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x98650275 EQ PUSH2 0xAF1 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0xAF9 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA9F JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xAC3 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0xACB JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x9B7 JUMPI DUP1 PUSH4 0x88D695B2 EQ PUSH2 0x9DD JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x3C130D90 GT PUSH2 0x229 JUMPI DUP1 PUSH4 0x572B6C05 GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x851 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x877 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x98B JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x704 JUMPI DUP1 PUSH4 0x68573107 EQ PUSH2 0x72A JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x42966C68 GT PUSH2 0x20E JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x568 JUMPI DUP1 PUSH4 0x4885B254 EQ PUSH2 0x585 JUMPI DUP1 PUSH4 0x4FC35859 EQ PUSH2 0x657 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x3C130D90 EQ PUSH2 0x534 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x53C JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x280 JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0x265 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x4E2 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x500 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x508 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x48D JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x4C3 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0x1B9A7529 EQ PUSH2 0x3CB JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x308 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xF4D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x310 PUSH2 0xF6D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x34A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x332 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x377 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1001 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x101E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x40E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1024 JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x109E JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x10BD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4EA PUSH2 0x111B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3B9 PUSH2 0x113F JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x122B JUMP JUMPDEST PUSH2 0x310 PUSH2 0x1399 JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x13FA JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1418 JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1433 JUMP JUMPDEST PUSH2 0x6E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x66D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1767 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x71A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x181D JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x740 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x75B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x76D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x78F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x7DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x813 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1896 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3B9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x867 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18AB JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x88D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x8DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x90C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x92E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x94C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x95E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x980 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x18C6 JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x19B8 JUMP JUMPDEST PUSH2 0x3B9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19C4 JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x19D6 JUMP JUMPDEST PUSH2 0xAA7 PUSH2 0x1CE5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x310 PUSH2 0x1CF4 JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D55 JUMP JUMPDEST PUSH2 0x4E0 PUSH2 0x1D6C JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1DCA JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1E39 JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E4D JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xB8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1E62 JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xC6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xCBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1FEA JUMP JUMPDEST PUSH2 0x310 PUSH2 0x2132 JUMP JUMPDEST PUSH2 0xAA7 PUSH2 0x2141 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x2150 JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2174 JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xDC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x21AA JUMP JUMPDEST PUSH2 0x3B9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x2429 JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xE63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xE97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xEB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xEE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xEFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xF1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2470 JUMP JUMPDEST PUSH2 0x4E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x25F6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF58 DUP3 PUSH2 0x2667 JUMP JUMPDEST DUP1 PUSH2 0xF67 JUMPI POP PUSH2 0xF67 DUP3 PUSH2 0x26A5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xFF6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xFCB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xFF6 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 0xFD9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1015 PUSH2 0x100E PUSH2 0x26F1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x26FB JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1093 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE SWAP1 SWAP4 POP DUP9 SWAP3 POP DUP8 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x27B8 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B3 PUSH2 0x10AB PUSH2 0x26F1 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x2974 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10C7 PUSH2 0x26F1 JUMP JUMPDEST SWAP1 POP PUSH2 0x10D3 DUP2 DUP4 PUSH2 0x29A3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 DUP2 EQ PUSH2 0x1203 JUMPI PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE PUSH2 0x11FE SWAP4 DUP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x11F4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11C9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x11F4 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 0x11D7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x29DD JUMP JUMPDEST PUSH2 0x1225 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1288 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1292 PUSH2 0x26F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP4 ISZERO PUSH2 0x1343 JUMPI DUP1 DUP5 ADD DUP2 DUP2 GT PUSH2 0x1318 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20616C6C6F77616E6365206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xFF6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xFCB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xFF6 JUMP JUMPDEST PUSH2 0x140A PUSH2 0x1405 PUSH2 0x26F1 JUMP JUMPDEST PUSH2 0x2A67 JUMP JUMPDEST PUSH2 0x1414 DUP3 DUP3 PUSH2 0x2AD4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x142B PUSH2 0x1425 PUSH2 0x26F1 JUMP JUMPDEST DUP4 PUSH2 0x2BF7 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x148A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP1 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0x169C JUMPI PUSH1 0x0 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0x14BC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1536 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0x1544 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x1647 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x15AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x15EB JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x1645 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x1640 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x14A7 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x16AC JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x1726 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x1708 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0x1730 PUSH2 0x26F1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1756 JUMPI PUSH2 0x1756 DUP12 DUP3 DUP6 PUSH2 0x2CD6 JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0x17BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4368696C6445524332303A2077726F6E672073656E6465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17C7 ADDRESS DUP6 PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH4 0x4FC35859 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xF67 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x18A1 PUSH2 0x1405 PUSH2 0x26F1 JUMP JUMPDEST PUSH2 0x1414 DUP3 DUP3 PUSH2 0x2DE5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x18D6 PUSH2 0x18D1 PUSH2 0x26F1 JUMP JUMPDEST PUSH2 0x3015 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x18E5 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1936 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x19AE JUMPI PUSH2 0x19A6 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x194F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x196B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x197E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x30D9 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1939 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1015 DUP4 DUP4 PUSH2 0x29A3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x1A2D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1A37 PUSH2 0x26F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP DUP1 DUP1 JUMPDEST DUP6 DUP2 EQ PUSH2 0x1C4B JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x1A6B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1AE5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x1AF3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x1BF6 JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x1B5B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1B9A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x1BF4 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x1BEF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x1A56 JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1C5B JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x1CD5 JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x1CB7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xFF6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xFCB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xFF6 JUMP JUMPDEST PUSH2 0x1D60 PUSH2 0x18D1 PUSH2 0x26F1 JUMP JUMPDEST PUSH2 0x1D69 DUP2 PUSH2 0x3159 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D76 PUSH2 0x26F1 JUMP JUMPDEST SWAP1 POP PUSH2 0x1D81 DUP2 PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1E27 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1015 PUSH2 0x1E32 PUSH2 0x26F1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2CD6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1015 PUSH2 0x1E46 PUSH2 0x26F1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x31A5 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E6D PUSH2 0x26F1 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E7B DUP2 DUP9 DUP9 DUP9 PUSH2 0x2974 JUMP JUMPDEST PUSH2 0x1E8D DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x330C JUMP JUMPDEST ISZERO PUSH2 0x1FDD JUMPI PUSH4 0x4FC35859 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F69 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1FDD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1FF5 PUSH2 0x18D1 PUSH2 0x26F1 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x2004 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x2055 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x19AE JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x206B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x2096 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x20B2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x210F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2123 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x2058 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x213C PUSH2 0x3312 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x2184 PUSH2 0x217F PUSH2 0x26F1 JUMP JUMPDEST PUSH2 0x3356 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP1 POP PUSH2 0x21A4 DUP5 DUP3 PUSH2 0x2AD4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x2205 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373206F776E657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x225A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2065787069726564207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD SWAP4 DUP5 ADD SWAP1 SSTORE DUP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP5 ADD MSTORE DUP1 DUP3 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP5 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xC0 DUP1 DUP5 ADD DUP10 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 SWAP1 SWAP4 ADD SWAP1 SWAP4 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 SWAP1 PUSH2 0x22EC PUSH2 0x113F JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2412 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E76616C6964207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x241D DUP11 DUP11 DUP11 PUSH2 0x26FB JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 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 0x245F PUSH2 0x18D1 PUSH2 0x26F1 JUMP JUMPDEST PUSH2 0x246B PUSH1 0x4 DUP4 DUP4 PUSH2 0x3A40 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x247B PUSH2 0x26F1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2488 DUP2 DUP8 DUP8 PUSH2 0x31A5 JUMP JUMPDEST PUSH2 0x249A DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x330C JUMP JUMPDEST ISZERO PUSH2 0x25EA JUMPI PUSH4 0x4FC35859 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP5 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2576 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x258C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x25EA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2601 PUSH2 0x18D1 PUSH2 0x26F1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x20C07ED100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xF67 JUMPI POP PUSH2 0xF67 DUP3 PUSH2 0x33B8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xF67 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0x4FC35859 PUSH1 0xE0 SHL EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x213C PUSH2 0x3555 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2756 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 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 DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x280F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2819 PUSH2 0x26F1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 EQ PUSH2 0x295C JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2834 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x284C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x28ED JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x28CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP SWAP3 DUP4 ADD SWAP3 JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2952 JUMPI PUSH2 0x2952 DUP3 DUP7 DUP4 PUSH2 0x2CD6 JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x281F JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x296D JUMPI PUSH1 0x7 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x297F DUP4 DUP4 DUP4 PUSH2 0x31A5 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x21A4 JUMPI PUSH2 0x21A4 DUP4 DUP6 DUP4 PUSH2 0x2CD6 JUMP JUMPDEST PUSH2 0x29AD DUP3 DUP3 PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29B7 PUSH2 0x26F1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x246B JUMPI PUSH2 0x246B DUP4 DUP3 DUP5 PUSH2 0x2CD6 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1D69 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2B2F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD DUP2 ISZERO PUSH2 0x2BB1 JUMPI DUP1 DUP3 ADD DUP2 DUP2 GT PUSH2 0x2B8F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2C91 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x2C6D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP PUSH1 0x7 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2D0D JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2D94 JUMPI DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x2D69 JUMPI PUSH1 0x40 DUP1 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 SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x2E3C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 EQ PUSH2 0x2FAA JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2E55 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2EC7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2ED5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x2F5F JUMPI DUP4 DUP2 ADD DUP5 DUP2 GT PUSH2 0x2F3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE SWAP4 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x2E40 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x21A4 JUMPI PUSH1 0x7 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x300B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE POP POP POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x304E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3062 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3078 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1D69 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x246B SWAP1 DUP5 SWAP1 PUSH2 0x36B5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3200 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x32BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x3276 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x32B9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP7 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE JUMPDEST POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x331C PUSH2 0x38B6 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1D69 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4368696C6445524332303A206F6E6C79206465706F7369746F72000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x341B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x36372B0700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x344F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xA219A02500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x3483 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x3C130D9000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x34B7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D07518600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x34EB JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xC05327E600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x351F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x53F41A9700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xF67 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0x9D8FF7DA00000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x3561 PUSH2 0x3A19 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x35D4 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x35E2 JUMPI SWAP2 POP PUSH2 0xFFE SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x36A1 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3688 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x369E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x36AF JUMPI SWAP2 POP PUSH2 0xFFE SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x36C8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x330C JUMP JUMPDEST PUSH2 0x3719 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3774 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3737 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x37D6 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 0x37DB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x385A JUMPI DUP1 MLOAD ISZERO PUSH2 0x3855 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3855 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x296D JUMP JUMPDEST DUP1 MLOAD PUSH2 0x38AD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x3922 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x3939 JUMPI PUSH2 0x392F PUSH2 0x3A25 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x3A15 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x39FF JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x3984 PUSH2 0x3A19 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x39E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x39FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x3A0C JUMPI PUSH2 0x392F PUSH2 0x3A25 JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x3A38 PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x3AE1 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x3A76 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3ABC JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3A8F JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x3ABC JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3ABC JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3ABC JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3AA1 JUMP JUMPDEST POP PUSH2 0x3AC8 SWAP3 SWAP2 POP PUSH2 0x3ACC JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3AC8 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3ACD JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x3AF0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x3AFC JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x953319BE4A511C845FA886DEB881A 0xE4 0xDA CALLCODE CALL DUP14 0x28 POP PUSH10 0x17112AC9172065946473 PUSH16 0x6C634300070600330000000000000000 ",
              "sourceMap": "783:2385:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1125:237:56;;;;;;;;;;;;;;;;-1:-1:-1;1125:237:56;-1:-1:-1;;;;;;1125:237:56;;:::i;:::-;;;;;;;;;;;;;;;;;;4506:92:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3730:166;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3730:166:38;;;;;;;;:::i;3263:100::-;;;:::i;:::-;;;;;;;;;;;;;;;;1414:186:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1414:186:39;;-1:-1:-1;1414:186:39;-1:-1:-1;1414:186:39;:::i;4120:216:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4120:216:38;;;;;;;;;;;;;;;;;:::i;2336:164:56:-;;;;;;;;;;;;;;;;-1:-1:-1;2336:164:56;;:::i;:::-;;4776:92:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11199:354;;;:::i;5309:625::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5309:625:38;;;;;;;;:::i;5038:100::-;;;:::i;2022:136:57:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2022:136:57;;;;;;;;:::i;1048::39:-;;;;;;;;;;;;;;;;-1:-1:-1;1048:136:39;;:::i;8089:1756:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8089:1756:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8089:1756:38;;-1:-1:-1;8089:1756:38;-1:-1:-1;8089:1756:38;:::i;2981:372:56:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2981:372:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2981:372:56;;-1:-1:-1;2981:372:56;-1:-1:-1;2981:372:56;:::i;:::-;;;;-1:-1:-1;;;;;;2981:372:56;;;;;;;;;;;;;;544:193:85;;;;;;;;;;;;;;;;-1:-1:-1;544:193:85;-1:-1:-1;;;;;544:193:85;;:::i;2251:182:57:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2251:182:57;;;;;;;;-1:-1:-1;2251:182:57;;-1:-1:-1;;2251:182:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2251:182:57;;-1:-1:-1;2251:182:57;;-1:-1:-1;;;;;2251:182:57:i;3396:119:38:-;;;;;;;;;;;;;;;;-1:-1:-1;3396:119:38;-1:-1:-1;;;;;3396:119:38;;:::i;1137:481:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1137:481:8;;-1:-1:-1;1137:481:8;-1:-1:-1;1137:481:8;:::i;1225:148:39:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1225:148:39;;;;;;;;:::i;1587:50:38:-;;;;;;;;;;;;;;;;-1:-1:-1;1587:50:38;-1:-1:-1;;;;;1587:50:38;;:::i;6429:1613::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6429:1613:38;;-1:-1:-1;6429:1613:38;-1:-1:-1;6429:1613:38;:::i;1114:94:2:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1114:94:2;;;;;;;;;;;;;;4639:96:38;;;:::i;694:120:1:-;;;;;;;;;;;;;;;;-1:-1:-1;694:120:1;-1:-1:-1;;;;;694:120:1;;:::i;929:185::-;;;:::i;5976:277:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5976:277:38;;;;;;;;:::i;3929:158::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3929:158:38;;;;;;;;:::i;339:40:1:-;;;;;;;;;;;;;;;;-1:-1:-1;339:40:1;-1:-1:-1;;;;;339:40:1;;:::i;10505:473:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10505:473:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10505:473:38;;-1:-1:-1;10505:473:38;-1:-1:-1;10505:473:38;:::i;2430:511:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2430:511:8;;-1:-1:-1;2430:511:8;-1:-1:-1;2430:511:8;:::i;3072:94:57:-;;;:::i;1003:32:55:-;;;:::i;1402:42:38:-;;;:::i;1828:219:56:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1828:219:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1828:219:56;;-1:-1:-1;1828:219:56;-1:-1:-1;1828:219:56;:::i;11592:711:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11592:711:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3548:149::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3548:149:38;;;;;;;;;;:::i;1664:136:57:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1664:136:57;;-1:-1:-1;1664:136:57;-1:-1:-1;1664:136:57;:::i;10020:439:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10020:439:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10020:439:38;;-1:-1:-1;10020:439:38;-1:-1:-1;10020:439:38;:::i;1448:197:2:-;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;1125:237:56:-;1240:4;1263:44;1295:11;1263:31;:44::i;:::-;:92;;;;1311:44;1343:11;1311:31;:44::i;:::-;1256:99;1125:237;-1:-1:-1;;1125:237:56:o;4506:92:38:-;4586:5;4579:12;;;;;;;-1:-1:-1;;4579:12:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4554:13;;4579:12;;4586:5;;4579:12;;4586:5;4579:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4506:92;;:::o;3730:166::-;3814:4;3830:38;3839:12;:10;:12::i;:::-;3853:7;3862:5;3830:8;:38::i;:::-;-1:-1:-1;3885:4:38;3730:166;;;;:::o;3263:100::-;3344:12;;3263:100;:::o;1414:186:39:-;1526:4;1542:30;1557:6;;1542:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1542:30:39;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1565:6:39;;-1:-1:-1;1565:6:39;;;;1542:30;;;1565:6;;1542:30;1565:6;1542:30;;;;;;;;;-1:-1:-1;1542:14:39;;-1:-1:-1;;;1542:30:39:i;:::-;-1:-1:-1;1589:4:39;1414:186;;;;;;:::o;4120:216:38:-;4248:4;4264:44;4278:12;:10;:12::i;:::-;4292:4;4298:2;4302:5;4264:13;:44::i;:::-;-1:-1:-1;4325:4:38;4120:216;;;;;:::o;2336:164:56:-;2389:14;2406:12;:10;:12::i;:::-;2389:29;;2428:25;2438:6;2446;2428:9;:25::i;:::-;2468;;;-1:-1:-1;;;;;2468:25:56;;;;;;;;;;;;;;;;;;;;;;;2336:164;;:::o;4776:92:38:-;4852:9;4776:92;:::o;11199:354::-;11257:7;11335:9;11458:17;11447:28;;:99;;11539:5;11498:48;;;;;;;;;;;;-1:-1:-1;;11498:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;11524:7;;11498:48;;11539:5;;11498:48;;11539:5;11498:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:25;:48::i;:::-;11447:99;;;11478:17;11447:99;11440:106;;;11199:354;:::o;5309:625::-;5408:4;-1:-1:-1;;;;;5432:21:38;;5424:61;;;;;-1:-1:-1;;;5424:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;5495:13;5511:12;:10;:12::i;:::-;-1:-1:-1;;;;;5554:18:38;;;5533;5554;;;:11;:18;;;;;;;;:27;;;;;;;;;;5495:28;;-1:-1:-1;5595:15:38;;5591:264;;5649:23;;;5694:25;;;5686:63;;;;;-1:-1:-1;;;5686:63:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5763:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:42;;;5793:12;-1:-1:-1;5591:264:38;5885:7;-1:-1:-1;;;;;5869:36:38;5878:5;-1:-1:-1;;;;;5869:36:38;;5894:10;5869:36;;;;;;;;;;;;;;;;;;-1:-1:-1;5923:4:38;;5309:625;-1:-1:-1;;;;5309:625:38:o;5038:100::-;5122:9;5115:16;;;;;;;;-1:-1:-1;;5115:16:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5090:13;;5115:16;;5122:9;;5115:16;;5122:9;5115:16;;;;;;;;;;;;;;;;;;;;;;;;2022:136:57;2097:28;2112:12;:10;:12::i;:::-;2097:14;:28::i;:::-;2135:16;2141:2;2145:5;2135;:16::i;:::-;2022:136;;:::o;1048::39:-;1113:4;1129:27;1135:12;:10;:12::i;:::-;1149:6;1129:5;:27::i;:::-;-1:-1:-1;1173:4:39;1048:136;;;:::o;8089:1756:38:-;8253:4;8286:10;8321:23;;;8313:62;;;;;-1:-1:-1;;;8313:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8404:15:38;;8386;8404;;;:9;:15;;;;;;;8386;;8498:791;8519:6;8514:1;:11;8498:791;;8546:10;8559;;8570:1;8559:13;;;;;;;;;;;;;-1:-1:-1;;;;;8559:13:38;8546:26;;8608:1;-1:-1:-1;;;;;8594:16:38;:2;-1:-1:-1;;;;;8594:16:38;;;8586:51;;;;;-1:-1:-1;;;8586:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8652:13;8668:6;;8675:1;8668:9;;;;;;;;;;;;;8652:25;;8696:5;8705:1;8696:10;8692:542;;8750:18;;;8794:26;;;8786:61;;;;;-1:-1:-1;;;8786:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8878:13;8865:26;;8921:2;-1:-1:-1;;;;;8913:10:38;:4;-1:-1:-1;;;;;8913:10:38;;8909:311;;-1:-1:-1;;;;;8947:13:38;;;;;;:9;:13;;;;;:22;;;;;;8909:311;;;9033:7;9024:5;:16;;9016:56;;;;;-1:-1:-1;;;9016:56:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;9094:31;;;;8909:311;8692:542;;9268:2;-1:-1:-1;;;;;9253:25:38;9262:4;-1:-1:-1;;;;;9253:25:38;;9272:5;9253:25;;;;;;;;;;;;;;;;;;-1:-1:-1;;8527:3:38;;8498:791;;;-1:-1:-1;9303:15:38;;;;;:55;;;9336:22;9322:10;:36;;9303:55;9299:380;;;9395:20;;;9437;;;9429:60;;;;;-1:-1:-1;;;9429:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9559:15:38;;;;;;:9;:15;;;;;9577:35;;;9559:53;;9299:380;9689:14;9706:12;:10;:12::i;:::-;9689:29;;9740:6;-1:-1:-1;;;;;9732:14:38;:4;-1:-1:-1;;;;;9732:14:38;;9728:89;;9762:44;9781:4;9787:6;9795:10;9762:18;:44::i;:::-;-1:-1:-1;9834:4:38;;8089:1756;-1:-1:-1;;;;;;;;;;8089:1756:38:o;2981:372:56:-;3156:6;3182:10;3204:4;3182:27;3174:64;;;;;-1:-1:-1;;;3174:64:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;3248:28;3262:4;3269:6;3248:5;:28::i;:::-;3291:23;;;-1:-1:-1;;;;;3291:23:56;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2981:372:56;;;;;;;:::o;544:193:85:-;631:4;667:19;-1:-1:-1;;;;;654:32:85;:9;-1:-1:-1;;;;;654:32:85;;:76;;;;711:18;-1:-1:-1;;;;;690:40:85;:9;-1:-1:-1;;;;;690:40:85;;647:83;;544:193;;;:::o;2251:182:57:-;2358:28;2373:12;:10;:12::i;2358:28::-;2396:30;2407:10;2419:6;2396:10;:30::i;3396:119:38:-;-1:-1:-1;;;;;3490:18:38;3464:7;3490:18;;;:9;:18;;;;;;;3396:119::o;1137:481:8:-;1301:31;1319:12;:10;:12::i;:::-;1301:17;:31::i;:::-;1359:8;1392:23;;;:51;;;;-1:-1:-1;1419:24:8;;;1392:51;1384:90;;;;;-1:-1:-1;;;1384:90:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;1489:9;1484:128;1509:6;1504:1;:11;1484:128;;1536:65;1577:8;;1586:1;1577:11;;;;;;;;;;;;;-1:-1:-1;;;;;1577:11:8;1590:7;;1598:1;1590:10;;;;;;;;;;;;;1550:6;;1557:1;1550:9;;;;;;;;;;;;;-1:-1:-1;;;;;1550:9:8;-1:-1:-1;;;;;1536:40:8;;;:65;;;;;:::i;:::-;1517:3;;1484:128;;;;1137:481;;;;;;;:::o;1225:148:39:-;1307:4;1323:22;1333:4;1339:5;1323:9;:22::i;1587:50:38:-;;;;;;;;;;;;;:::o;6429:1613::-;6545:4;6578:10;6613:23;;;6605:62;;;;;-1:-1:-1;;;6605:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6677:14;6694:12;:10;:12::i;:::-;-1:-1:-1;;;;;6734:17:38;;6716:15;6734:17;;;:9;:17;;;;;;6677:29;;-1:-1:-1;6716:15:38;;6830:793;6851:6;6846:1;:11;6830:793;;6878:10;6891;;6902:1;6891:13;;;;;;;;;;;;;-1:-1:-1;;;;;6891:13:38;6878:26;;6940:1;-1:-1:-1;;;;;6926:16:38;:2;-1:-1:-1;;;;;6926:16:38;;;6918:51;;;;;-1:-1:-1;;;6918:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6984:13;7000:6;;7007:1;7000:9;;;;;;;;;;;;;6984:25;;7027:5;7036:1;7027:10;7023:544;;7081:18;;;7125:26;;;7117:61;;;;;-1:-1:-1;;;7117:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;7209:13;7196:26;;7254:2;-1:-1:-1;;;;;7244:12:38;:6;-1:-1:-1;;;;;7244:12:38;;7240:313;;-1:-1:-1;;;;;7280:13:38;;;;;;:9;:13;;;;;:22;;;;;;7240:313;;;7366:7;7357:5;:16;;7349:56;;;;;-1:-1:-1;;;7349:56:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;7427:31;;;;7240:313;7023:544;;7602:2;-1:-1:-1;;;;;7585:27:38;7594:6;-1:-1:-1;;;;;7585:27:38;;7606:5;7585:27;;;;;;;;;;;;;;;;;;-1:-1:-1;;6859:3:38;;6830:793;;;-1:-1:-1;7637:15:38;;;;;:55;;;7670:22;7656:10;:36;;7637:55;7633:382;;;7729:20;;;7771;;;7763:60;;;;;-1:-1:-1;;;7763:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7893:17:38;;;;;;:9;:17;;;;;7913:35;;;7893:55;;7633:382;-1:-1:-1;8031:4:38;;6429:1613;-1:-1:-1;;;;;;;;;6429:1613:38:o;1114:94:2:-;1169:7;1195:6;-1:-1:-1;;;;;1195:6:2;1114:94;:::o;4639:96:38:-;4721:7;4714:14;;;;;;;;-1:-1:-1;;4714:14:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4689:13;;4714:14;;4721:7;;4714:14;;4721:7;4714:14;;;;;;;;;;;;;;;;;;;;;;;;694:120:1;747:31;765:12;:10;:12::i;747:31::-;788:19;799:7;788:10;:19::i;:::-;694:120;:::o;929:185::-;972:15;990:12;:10;:12::i;:::-;972:30;;1012:23;1027:7;1012:14;:23::i;:::-;-1:-1:-1;;;;;1045:17:1;;1065:5;1045:17;;;:8;:17;;;;;;:25;;-1:-1:-1;;1045:25:1;;;1085:22;;;1065:5;1085:22;929:185;:::o;5976:277:38:-;6080:4;-1:-1:-1;;;;;6104:21:38;;6096:61;;;;;-1:-1:-1;;;6096:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6167:58;6186:12;:10;:12::i;:::-;6200:7;6209:15;6167:18;:58::i;3929:158::-;4009:4;4025:34;4035:12;:10;:12::i;:::-;4049:2;4053:5;4025:9;:34::i;339:40:1:-;;;;;;;;;;;;;;;:::o;10505:473:38:-;10667:4;10683:14;10700:12;:10;:12::i;:::-;10683:29;;10722:39;10736:6;10744:4;10750:2;10754:6;10722:13;:39::i;:::-;10775:15;:2;-1:-1:-1;;;;;10775:13:38;;:15::i;:::-;10771:180;;;-1:-1:-1;;;10814:98:38;;;10829:2;-1:-1:-1;;;;;10814:34:38;;10849:6;10857:4;10863:6;10871:4;;10814:62;;;;;;;;;;;;;-1:-1:-1;;;;;10814:62:38;;;;;;-1:-1:-1;;;;;10814:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10814:62:38;-1:-1:-1;;;;;;10814:98:38;;10806:134;;;;;-1:-1:-1;;;10806:134:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10967:4:38;;10505:473;-1:-1:-1;;;;;;10505:473:38:o;2430:511:8:-;2599:31;2617:12;:10;:12::i;2599:31::-;2657:8;2690:26;;;:55;;;;-1:-1:-1;2720:25:8;;;2690:55;2682:94;;;;;-1:-1:-1;;;2682:94:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:9;2786:149;2811:6;2806:1;:11;2786:149;;2857:9;;2867:1;2857:12;;;;;;;;;;;;;-1:-1:-1;;;;;2857:12:8;-1:-1:-1;;;;;2838:45:8;;2892:4;2899:8;;2908:1;2899:11;;;;;;;;;;;;;-1:-1:-1;;;;;2899:11:8;2912:8;;2921:1;2912:11;;;;;;;;;;;;;2838:86;;;;;;;;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:3;;;;;2786:149;;3072:94:57;3114:16;3149:10;:8;:10::i;:::-;3142:17;;3072:94;:::o;1003:32:55:-;;;-1:-1:-1;;;;;1003:32:55;;:::o;1402:42:38:-;;;:::o;1828:219:56:-;1915:35;1937:12;:10;:12::i;:::-;1915:21;:35::i;:::-;1960:14;1988:11;;1977:34;;;;;;;;;;-1:-1:-1;1977:34:56;;-1:-1:-1;2021:19:56;2027:4;1977:34;2021:5;:19::i;:::-;1828:219;;;;:::o;11592:711:38:-;-1:-1:-1;;;;;11810:19:38;;11802:57;;;;;-1:-1:-1;;;11802:57:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;11896:8;11877:15;:27;;11869:61;;;;;-1:-1:-1;;;11869:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12022:13:38;;;11940:18;12022:13;;;:6;:13;;;;;;;;:15;;;;;;;11971:77;;1329:66;11971:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11961:88;;;;;;;;12113:18;:16;:18::i;:::-;12133:10;12084:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12074:71;;;;;;12059:86;;12155:14;12172:24;12182:4;12188:1;12191;12194;12172:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12155:41;;12224:5;-1:-1:-1;;;;;12214:15:38;:6;-1:-1:-1;;;;;12214:15:38;;12206:49;;;;;-1:-1:-1;;;12206:49:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;12265:31;12274:5;12281:7;12290:5;12265:8;:31::i;:::-;11592:711;;;;;;;;;;:::o;3548:149::-;-1:-1:-1;;;;;3663:18:38;;;3637:7;3663:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3548:149::o;1664:136:57:-;1731:31;1749:12;:10;:12::i;1731:31::-;1772:21;:9;1784;;1772:21;:::i;:::-;;1664:136;;:::o;10020:439:38:-;10156:4;10172:14;10189:12;:10;:12::i;:::-;10172:29;;10211;10221:6;10229:2;10233:6;10211:9;:29::i;:::-;10254:15;:2;-1:-1:-1;;;;;10254:13:38;;:15::i;:::-;10250:182;;;-1:-1:-1;;;10293:100:38;;;10308:2;-1:-1:-1;;;;;10293:34:38;;10328:6;10336;10344;10352:4;;10293:64;;;;;;;;;;;;;-1:-1:-1;;;;;10293:64:38;;;;;;-1:-1:-1;;;;;10293:64:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10293:64:38;-1:-1:-1;;;;;;10293:100:38;;10285:136;;;;;-1:-1:-1;;;10285:136:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10448:4:38;;10020:439;-1:-1:-1;;;;;10020:439:38:o;1448:197:2:-;1527:31;1545:12;:10;:12::i;1527:31::-;1568:6;:17;;;;-1:-1:-1;;;;;1568:17:2;;;;;;;;;1600:38;;1568:17;;1621:6;;;1600:38;;1568:6;1600:38;1448:197;:::o;676:202:39:-;761:4;-1:-1:-1;;;;;;784:47:39;;799:32;784:47;;:87;;;835:36;859:11;835:23;:36::i;761:206:40:-;846:4;-1:-1:-1;;;;;;869:40:40;;884:25;869:40;;:91;;-1:-1:-1;;;;;;;;913:47:40;-1:-1:-1;;;913:47:40;;761:206::o;2568:183:57:-;2673:15;2707:37;:35;:37::i;12438:273:38:-;-1:-1:-1;;;;;12560:21:38;;12552:61;;;;;-1:-1:-1;;;12552:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12623:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:35;;;12673:31;;;;;;;;;;;;;;;;;12438:273;;;:::o;16457:1095::-;16575:13;;16616;;16606:23;;16598:62;;;;;-1:-1:-1;;;16598:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;16671:14;16688:12;:10;:12::i;:::-;16671:29;;16711:18;16744:9;16739:664;16760:6;16755:1;:11;16739:664;;16787:12;16802:6;16809:1;16802:9;;;;;;;;;;;;;;16787:24;;16825:13;16841:6;16848:1;16841:9;;;;;;;;;;;;;;16825:25;;16868:5;16877:1;16868:10;16864:371;;-1:-1:-1;;;;;16916:15:38;;16898;16916;;;:9;:15;;;;;;16970;;;17011:20;;;17003:60;;;;;-1:-1:-1;;;17003:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17081:15:38;;;;;;:9;:15;;;;;:28;-1:-1:-1;17127:19:38;;;;16864:371;17253:33;;;;;;;;17276:1;;-1:-1:-1;;;;;17253:33:38;;;;;;;;;;;;17313:6;-1:-1:-1;;;;;17305:14:38;:4;-1:-1:-1;;;;;17305:14:38;;17301:92;;17339:39;17358:4;17364:6;17372:5;17339:18;:39::i;:::-;-1:-1:-1;;16768:3:38;;16739:664;;;-1:-1:-1;17417:15:38;;17413:133;;17448:12;:26;;;;;;;17413:133;16457:1095;;;;;:::o;13965:263::-;14102:26;14112:4;14118:2;14122:5;14102:9;:26::i;:::-;14150:6;-1:-1:-1;;;;;14142:14:38;:4;-1:-1:-1;;;;;14142:14:38;;14138:84;;14172:39;14191:4;14197:6;14205:5;14172:18;:39::i;16219:232::-;16294:18;16300:4;16306:5;16294;:18::i;:::-;16322:14;16339:12;:10;:12::i;:::-;16322:29;;16373:6;-1:-1:-1;;;;;16365:14:38;:4;-1:-1:-1;;;;;16365:14:38;;16361:84;;16395:39;16414:4;16420:6;16428:5;16395:18;:39::i;17687:463::-;17995:16;;;;;;;17846:283;;;17878:95;17846:283;;;;;;;;;;;18033:14;17846:283;;;;;;;;;;;18106:4;17846:283;;;;;;;;;;;;;;;;;;;;;;;;;17819:324;;;;;;17687:463::o;1120:126:1:-;-1:-1:-1;;;;;1193:17:1;;;;;;:8;:17;;;;;;;;1185:54;;;;;-1:-1:-1;;;1185:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;14234:480:38;-1:-1:-1;;;;;14311:16:38;;14303:48;;;;;-1:-1:-1;;;14303:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14378:12;;14404:10;;14400:262;;14450:14;;;14486:18;;;14478:53;;;;;-1:-1:-1;;;14478:53:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14545:12;:24;-1:-1:-1;;;;;14583:13:38;;;;;;:9;:13;;;;;:22;;;;;;14400:262;14676:31;;;;;;;;-1:-1:-1;;;;;14676:31:38;;;14693:1;;14676:31;;;;;;;;;14234:480;;;:::o;15771:442::-;15846:10;;15842:317;;-1:-1:-1;;;;;15890:15:38;;15872;15890;;;:9;:15;;;;;;15940;;;15977:20;;;15969:60;;;;;-1:-1:-1;;;15969:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16043:15:38;;;;;;:9;:15;;;;;:28;-1:-1:-1;16085:12:38;:21;;;;;;;15842:317;16173:33;;;;;;;;16196:1;;-1:-1:-1;;;;;16173:33:38;;;;;;;;;;;;15771:442;;:::o;12717:682::-;-1:-1:-1;;;;;12872:18:38;;;12851;12872;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;12914:31:38;;;;;:55;;-1:-1:-1;12949:20:38;;;12914:55;12910:432;;;13127:28;;;13177:25;;;13169:67;;;;;-1:-1:-1;;;13169:67:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13250:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:42;;;13280:12;-1:-1:-1;12910:432:38;13372:7;-1:-1:-1;;;;;13356:36:38;13365:5;-1:-1:-1;;;;;13356:36:38;;13381:10;13356:36;;;;;;;;;;;;;;;;;;12717:682;;;;:::o;14720:1045::-;14838:17;;14883:13;;14873:23;;14865:62;;;;;-1:-1:-1;;;14865:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14938:18;14971:9;14966:550;14987:6;14982:1;:11;14966:550;;15014:10;15027;15038:1;15027:13;;;;;;;;;;;;;;15014:26;;15076:1;-1:-1:-1;;;;;15062:16:38;:2;-1:-1:-1;;;;;15062:16:38;;;15054:48;;;;;-1:-1:-1;;;15054:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;15117:13;15133:6;15140:1;15133:9;;;;;;;;;;;;;;15117:25;;15160:5;15169:1;15160:10;15156:300;;15214:18;;;15258:26;;;15250:61;;;;;-1:-1:-1;;;15250:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15373:13:38;;;;;;:9;:13;;;;;:22;;;;;;15342:13;-1:-1:-1;15156:300:38;15474:31;;;;;;;;-1:-1:-1;;;;;15474:31:38;;;15491:1;;15474:31;;;;;;;;;-1:-1:-1;;14995:3:38;;14966:550;;;-1:-1:-1;15530:15:38;;15526:233;;15578:12;;15624:19;;;15665:18;;;15657:53;;;;;-1:-1:-1;;;15657:53:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;15724:12;:24;-1:-1:-1;14720:1045:38;;;;:::o;1770:136:2:-;1860:4;-1:-1:-1;;;;;1860:10:2;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1860:12:2;-1:-1:-1;;;;;1849:23:2;;;;;;1841:58;;;;;-1:-1:-1;;;1841:58:2;;;;;;;;;;;;;;;;;;;;;;;;;;;416:223:6;573:58;;;-1:-1:-1;;;;;573:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;596:23;573:58;;;538:94;;566:5;;538:27;:94::i;1252:122:1:-;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;13405:554:38:-;-1:-1:-1;;;;;13530:16:38;;13522:51;;;;;-1:-1:-1;;;13522:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;13588:10;;13584:328;;-1:-1:-1;;;;;13632:15:38;;13614;13632;;;:9;:15;;;;;;13682;;;13719:20;;;13711:60;;;;;-1:-1:-1;;;13711:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;13797:2;-1:-1:-1;;;;;13789:10:38;:4;-1:-1:-1;;;;;13789:10:38;;13785:117;;-1:-1:-1;;;;;13819:15:38;;;;;;;:9;:15;;;;;;:28;;;13865:13;;;;;;:22;;;;;;13785:117;13584:328;;;13942:2;-1:-1:-1;;;;;13927:25:38;13936:4;-1:-1:-1;;;;;13927:25:38;;13946:5;13927:25;;;;;;;;;;;;;;;;;;13405:554;;;:::o;913:377:9:-;1229:20;1275:8;;;913:377::o;2757:180:57:-;2860:16;2895:35;:33;:35::i;:::-;2888:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2888:42:57;;-1:-1:-1;;;;2757:180:57;:::o;1391:146:55:-;1482:17;;-1:-1:-1;;;;;1471:28:55;;;1482:17;;1471:28;1463:67;;;;;-1:-1:-1;;;1463:67:55;;;;;;;;;;;;;;;;;;;;;;;;;;;2491:610:38;2576:4;-1:-1:-1;;;;;;2611:40:38;;2626:25;2611:40;;:95;;-1:-1:-1;;;;;;;2667:39:38;;2682:24;2667:39;2611:95;:158;;;-1:-1:-1;;;;;;;2722:47:38;;2737:32;2722:47;2611:158;:221;;;-1:-1:-1;;;;;;;2785:47:38;;2800:32;2785:47;2611:221;:285;;;-1:-1:-1;;;;;;;2848:48:38;;2863:33;2848:48;2611:285;:354;;;-1:-1:-1;;;;;;;2912:53:38;;2927:38;2912:53;2611:354;:422;;;-1:-1:-1;;;;;;;2981:52:38;;2996:37;2981:52;2611:422;:483;;;-1:-1:-1;;;;;;;;3049:45:38;3064:30;3049:45;;2491:610::o;743:904:85:-;796:15;851:10;796:15;896:27;:25;:27::i;:::-;871:52;;958:18;-1:-1:-1;;;;;937:40:85;:9;-1:-1:-1;;;;;937:40:85;;:76;;;;994:19;-1:-1:-1;;;;;981:32:85;:9;-1:-1:-1;;;;;981:32:85;;937:76;933:166;;;1082:6;-1:-1:-1;1075:13:85;;-1:-1:-1;1075:13:85;933:166;-1:-1:-1;;;;;1496:22:85;;1509:9;1496:22;;;;:78;;;1522:18;-1:-1:-1;;;;;1522:33:85;;1556:6;1564:9;1522:52;;;;;;;;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1522:52:85;1496:78;1492:122;;;1597:6;-1:-1:-1;1590:13:85;;-1:-1:-1;1590:13:85;1492:122;-1:-1:-1;1631:9:85;-1:-1:-1;743:904:85;:::o;1147:870:6:-;1272:5;1296:19;-1:-1:-1;;;;;1296:17:6;;;:19::i;:::-;1288:58;;;;;-1:-1:-1;;;1288:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:12;1431:17;1452:6;-1:-1:-1;;;;;1452:11:6;1464:8;1452:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:57;;;;1487:7;1483:528;;;1514:11;;:16;1510:122;;1569:4;1558:24;;;;;;;;;;;;;;;-1:-1:-1;1558:24:6;1550:67;;;;;-1:-1:-1;;;1550:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:528;;;1720:11;;1716:95;;1756:40;;;-1:-1:-1;;;1756:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:95;1938:4;1932:11;1982:4;1975;1971:2;1967:13;1960:27;1653:670:85;1704:14;;1758:10;-1:-1:-1;;;;;1803:18:85;1782:40;;;;:76;;;1839:19;-1:-1:-1;;;;;1826:32:85;:9;-1:-1:-1;;;;;1826:32:85;;1782:76;1778:197;;;1927:37;:35;:37::i;:::-;1920:44;;;;;;;1778:197;-1:-1:-1;;;;;2122:22:85;;2135:9;2122:22;;;;:99;;;2148:18;-1:-1:-1;;;;;2148:33:85;;2182:27;:25;:27::i;:::-;2211:9;2148:73;;;;;;;;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2148:73:85;2122:99;2118:174;;;2244:37;:35;:37::i;2118:174::-;2308:8;;2301:15;;;;;1653:670;;;:::o;103:519:84:-;-1:-1:-1;;585:14:84;581:23;568:37;564:2;560:46;;536:80::o;628:149::-;706:14;;739:31;-1:-1:-1;;749:20:84;;706:14;;;739:31;:::i;:::-;732:38;;;;628:149;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:363:86;;;172:8;160:10;157:24;154:2;;;202:9;191;184:28;154:2;239:6;229:8;226:20;223:2;;;267:9;256;249:28;223:2;-1:-1:-1;;301:23:86;;;346:25;;;;;-1:-1:-1;144:233:86:o"
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "addMinter(address)": "983b2d56",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "batchBurnFrom(address[],uint256[])": "1b9a7529",
              "batchMint(address[],uint256[])": "68573107",
              "batchTransfer(address[],uint256[])": "88d695b2",
              "batchTransferFrom(address,address[],uint256[])": "4885b254",
              "burn(uint256)": "42966c68",
              "burnFrom(address,uint256)": "79cc6790",
              "childChainManager()": "c8291d84",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "deploymentChainId()": "cd0d0096",
              "deposit(address,bytes)": "cf2c52cb",
              "increaseAllowance(address,uint256)": "39509351",
              "isMinter(address)": "aa271e1a",
              "isTrustedForwarder(address)": "572b6c05",
              "mint(address,uint256)": "40c10f19",
              "msgData()": "c4c2bfdc",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "onERC20Received(address,address,uint256,bytes)": "4fc35859",
              "owner()": "8da5cb5b",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "recoverERC20s(address[],address[],uint256[])": "73c8a958",
              "recoverERC721s(address[],address[],uint256[])": "c3666c36",
              "renounceMinter()": "98650275",
              "safeTransfer(address,uint256,bytes)": "eb795549",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setTokenURI(string)": "e0df5b6f",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI()": "3c130d90",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "withdraw(uint256)": "2e1a7d4d"
            }
          }
        }
      },
      "contracts/token/ERC20/polygon/child/mocks/PolygonChildERC20Mock.sol": {
        "PolygonChildERC20Mock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "address",
                  "name": "childChainManager",
                  "type": "address"
                },
                {
                  "internalType": "contract IForwarderRegistry",
                  "name": "forwarderRegistry",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "universalForwarder",
                  "type": "address"
                }
              ],
              "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": "account",
                  "type": "address"
                }
              ],
              "name": "MinterAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterRemoved",
              "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"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Withdrawn",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "addMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "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": "value",
                  "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": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "childChainManager",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "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": [],
              "name": "deploymentChainId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "depositData",
                  "type": "bytes"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "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": "",
                  "type": "address"
                }
              ],
              "name": "isMinter",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "forwarder",
                  "type": "address"
                }
              ],
              "name": "isTrustedForwarder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "msgData",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "ret",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC20Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC20s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "contracts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC721s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransfer",
              "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"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "tokenURI_",
                  "type": "string"
                }
              ],
              "name": "setTokenURI",
              "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": [],
              "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": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "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": "value",
                  "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"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "6101206040523480156200001257600080fd5b5060405162003e1638038062003e16833981810160405260a08110156200003857600080fd5b81019080805160405193929190846401000000008211156200005957600080fd5b9083019060208201858111156200006f57600080fd5b82518660208202830111640100000000821117156200008d57600080fd5b82525081516020918201928201910280838360005b83811015620000bc578181015183820152602001620000a2565b5050505090500160405260200180516040519392919084640100000000821115620000e657600080fd5b908301906020820185811115620000fc57600080fd5b82518660208202830111640100000000821117156200011a57600080fd5b82525081516020918201928201910280838360005b83811015620001495781810151838201526020016200012f565b50505050919091016040818152602084810151858301516060909601518385018452601085526f4368696c64204552433230204d6f636b60801b838601528351808501855260048152630434532360e41b93810193909352600080546001600160a01b0319163390811782559451929950969750959294509091601291889182918691869186918c918c918c918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606091821b811660a05291901b1660805282516200022e906002906020860190620005e5565b50815162000244906003906020850190620005e5565b507fff0000000000000000000000000000000000000000000000000000000000000060f882901b16610100524660c0819052620002828185620002d4565b60e0525050600880546001600160a01b0319166001600160a01b03949094169390931790925550620002bc94508593506200035e92505050565b50620002c98585620003aa565b505050505062000691565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b038116600081815260096020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b81518151811462000402576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000805b828114620005775760008582815181106200041d57fe5b6020026020010151905060006001600160a01b0316816001600160a01b0316141562000490576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b60008583815181106200049f57fe5b60200260200101519050806000146200052b578381018481116200050a576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600090815260056020526040902080548301905593505b6040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505060010162000406565b508015620005df57600754818101818111620005da576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b600755505b50505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200061d576000855562000668565b82601f106200063857805160ff191683800117855562000668565b8280016001018555821562000668579182015b82811115620006685782518255916020019190600101906200064b565b50620006769291506200067a565b5090565b5b808211156200067657600081556001016200067b565b60805160601c60a05160601c60c05160e0516101005160f81c613719620006fd60003980610efd525080610fe5525080610f245280611f045250806115515280613111528061346652508061158c52806130d65280613169528061343c52806134c752506137196000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c806388d695b211610160578063c3666c36116100d8578063d505accf1161008c578063e0df5b6f11610071578063e0df5b6f14610cd6578063eb79554914610d46578063f2fde38b14610dcb57610277565b8063d505accf14610c57578063dd62ed3e14610ca857610277565b8063c8291d84116100bd578063c8291d8414610bc7578063cd0d009614610bcf578063cf2c52cb14610bd757610277565b8063c3666c3614610aab578063c4c2bfdc14610bbf57610277565b8063986502751161012f578063a9059cbb11610114578063a9059cbb146109c9578063aa271e1a146109f5578063b88d4fde14610a1b57610277565b80639865027514610995578063a457c2d71461099d57610277565b806388d695b2146108815780638da5cb5b1461094357806395d89b4114610967578063983b2d561461096f57610277565b80633c130d90116101f3578063572b6c05116101c257806370a08231116101a757806370a082311461072157806373c8a958146107475780637ecebe001461085b57610277565b8063572b6c05146105d457806368573107146105fa57610277565b80633c130d901461042157806340c10f19146104295780634885b254146104555780634fc358591461052757610277565b806323b872dd1161024a578063313ce5671161022f578063313ce567146103cf5780633644e515146103ed57806339509351146103f557610277565b806323b872dd1461037a5780632e1a7d4d146103b057610277565b806301ffc9a71461027c57806306fdde03146102b7578063095ea7b31461033457806318160ddd14610360575b600080fd5b6102a36004803603602081101561029257600080fd5b50356001600160e01b031916610df1565b604080519115158252519081900360200190f35b6102bf610e11565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102f95781810151838201526020016102e1565b50505050905090810190601f1680156103265780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a36004803603604081101561034a57600080fd5b506001600160a01b038135169060200135610ea5565b610368610ec2565b60408051918252519081900360200190f35b6102a36004803603606081101561039057600080fd5b506001600160a01b03813581169160208101359091169060400135610ec8565b6103cd600480360360208110156103c657600080fd5b5035610ee7565b005b6103d7610efb565b6040805160ff9092168252519081900360200190f35b610368610f1f565b6102a36004803603604081101561040b57600080fd5b506001600160a01b03813516906020013561100b565b6102bf611179565b6103cd6004803603604081101561043f57600080fd5b506001600160a01b0381351690602001356111da565b6102a36004803603606081101561046b57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561049657600080fd5b8201836020820111156104a857600080fd5b803590602001918460208302840111640100000000831117156104ca57600080fd5b9193909290916020810190356401000000008111156104e857600080fd5b8201836020820111156104fa57600080fd5b8035906020019184602083028401116401000000008311171561051c57600080fd5b5090925090506111f8565b6105b76004803603608081101561053d57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561057857600080fd5b82018360208201111561058a57600080fd5b803590602001918460018302840111640100000000831117156105ac57600080fd5b50909250905061152c565b604080516001600160e01b03199092168252519081900360200190f35b6102a3600480360360208110156105ea57600080fd5b50356001600160a01b031661154d565b6103cd6004803603604081101561061057600080fd5b81019060208101813564010000000081111561062b57600080fd5b82018360208201111561063d57600080fd5b8035906020019184602083028401116401000000008311171561065f57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156106af57600080fd5b8201836020820111156106c157600080fd5b803590602001918460208302840111640100000000831117156106e357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506115c6945050505050565b6103686004803603602081101561073757600080fd5b50356001600160a01b03166115db565b6103cd6004803603606081101561075d57600080fd5b81019060208101813564010000000081111561077857600080fd5b82018360208201111561078a57600080fd5b803590602001918460208302840111640100000000831117156107ac57600080fd5b9193909290916020810190356401000000008111156107ca57600080fd5b8201836020820111156107dc57600080fd5b803590602001918460208302840111640100000000831117156107fe57600080fd5b91939092909160208101903564010000000081111561081c57600080fd5b82018360208201111561082e57600080fd5b8035906020019184602083028401116401000000008311171561085057600080fd5b5090925090506115f6565b6103686004803603602081101561087157600080fd5b50356001600160a01b0316611779565b6102a36004803603604081101561089757600080fd5b8101906020810181356401000000008111156108b257600080fd5b8201836020820111156108c457600080fd5b803590602001918460208302840111640100000000831117156108e657600080fd5b91939092909160208101903564010000000081111561090457600080fd5b82018360208201111561091657600080fd5b8035906020019184602083028401116401000000008311171561093857600080fd5b50909250905061178b565b61094b611a9a565b604080516001600160a01b039092168252519081900360200190f35b6102bf611aa9565b6103cd6004803603602081101561098557600080fd5b50356001600160a01b0316611b0a565b6103cd611b1e565b6102a3600480360360408110156109b357600080fd5b506001600160a01b038135169060200135611b7c565b6102a3600480360360408110156109df57600080fd5b506001600160a01b038135169060200135611beb565b6102a360048036036020811015610a0b57600080fd5b50356001600160a01b0316611bff565b6102a360048036036080811015610a3157600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135640100000000811115610a6c57600080fd5b820183602082011115610a7e57600080fd5b80359060200191846001830284011164010000000083111715610aa057600080fd5b509092509050611c14565b6103cd60048036036060811015610ac157600080fd5b810190602081018135640100000000811115610adc57600080fd5b820183602082011115610aee57600080fd5b80359060200191846020830284011164010000000083111715610b1057600080fd5b919390929091602081019035640100000000811115610b2e57600080fd5b820183602082011115610b4057600080fd5b80359060200191846020830284011164010000000083111715610b6257600080fd5b919390929091602081019035640100000000811115610b8057600080fd5b820183602082011115610b9257600080fd5b80359060200191846020830284011164010000000083111715610bb457600080fd5b509092509050611d9c565b6102bf611ee4565b61094b611ef3565b610368611f02565b6103cd60048036036040811015610bed57600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115610c1857600080fd5b820183602082011115610c2a57600080fd5b80359060200191846001830284011164010000000083111715610c4c57600080fd5b509092509050611f26565b6103cd600480360360e0811015610c6d57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611f52565b61036860048036036040811015610cbe57600080fd5b506001600160a01b03813581169160200135166121d1565b6103cd60048036036020811015610cec57600080fd5b810190602081018135640100000000811115610d0757600080fd5b820183602082011115610d1957600080fd5b80359060200191846001830284011164010000000083111715610d3b57600080fd5b5090925090506121fc565b6102a360048036036060811015610d5c57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135640100000000811115610d8c57600080fd5b820183602082011115610d9e57600080fd5b80359060200191846001830284011164010000000083111715610dc057600080fd5b509092509050612213565b6103cd60048036036020811015610de157600080fd5b50356001600160a01b0316612399565b6000610dfc8261240a565b80610e0b5750610e0b826125a7565b92915050565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610e9a5780601f10610e6f57610100808354040283529160200191610e9a565b820191906000526020600020905b815481529060010190602001808311610e7d57829003601f168201915b505050505090505b90565b6000610eb9610eb26125f3565b84846125fd565b50600192915050565b60075490565b6000610edd610ed56125f3565b8585856126ba565b5060019392505050565b600a805482019055610ef8816126ef565b50565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610fe3576002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152610fde93859391929091830182828015610fd45780601f10610fa957610100808354040283529160200191610fd4565b820191906000526020600020905b815481529060010190602001808311610fb757829003601f168201915b505050505061274f565b611005565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b60006001600160a01b038316611068576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b60006110726125f3565b6001600160a01b038082166000908152600660209081526040808320938916835292905220549091508315611123578084018181116110f8576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600660209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e9a5780601f10610e6f57610100808354040283529160200191610e9a565b6111ea6111e56125f3565b6127d9565b6111f48282612846565b5050565b60008382811461124f576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600560205260408120549080805b8481146114615760008a8a8381811061128157fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b031614156112fb576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600089898481811061130957fe5b9050602002013590508060001461140c57848101858111611371576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b0316146113b0576001600160a01b038316600090815260056020526040902080548301905561140a565b86821115611405576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505060010161126c565b5081158015906114715750808214155b156114eb578183038381106114cd576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260056020526040902090820190555b60006114f56125f3565b9050806001600160a01b03168b6001600160a01b03161461151b5761151b8b8285612969565b5060019a9950505050505050505050565b600a80548401905560006115438686868686612a78565b9695505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610e0b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6115d16111e56125f3565b6111f48282612b24565b6001600160a01b031660009081526005602052604090205490565b6116066116016125f3565b612d54565b84838114801561161557508082145b611666576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461176f57600086868381811061167e57fe5b905060200201356001600160a01b03169050600085858481811061169e57fe5b905060200201359050306001600160a01b0316826001600160a01b0316141561172c57600a5430600090815260056020526040902054038082111561172a576040805162461bcd60e51b815260206004820152601b60248201527f5265636f763a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b505b6117658a8a8581811061173b57fe5b905060200201356001600160a01b031682846001600160a01b0316612e189092919063ffffffff16565b5050600101611669565b5050505050505050565b60016020526000908152604090205481565b6000838281146117e2576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60006117ec6125f3565b6001600160a01b03811660009081526005602052604081205491925080805b858114611a005760008b8b8381811061182057fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b0316141561189a576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a848181106118a857fe5b905060200201359050806000146119ab57848101858111611910576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b03161461194f576001600160a01b03831660009081526005602052604090208054830190556119a9565b868211156119a4576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505060010161180b565b508115801590611a105750808214155b15611a8a57818303838110611a6c576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260056020526040902090820190555b5060019998505050505050505050565b6000546001600160a01b031690565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e9a5780601f10610e6f57610100808354040283529160200191610e9a565b611b156116016125f3565b610ef881612e98565b6000611b286125f3565b9050611b33816127d9565b6001600160a01b038116600081815260096020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b60006001600160a01b038316611bd9576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b610eb9611be46125f3565b8484612969565b6000610eb9611bf86125f3565b8484612ee4565b60096020526000908152604090205460ff1681565b600080611c1f6125f3565b9050611c2d818888886126ba565b611c3f866001600160a01b031661304b565b15611d8f57634fc3585960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015611d0757600080fd5b505af1158015611d1b573d6000803e3d6000fd5b505050506040513d6020811015611d3157600080fd5b50516001600160e01b03191614611d8f576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b611da76116016125f3565b848381148015611db657508082145b611e07576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461176f57858582818110611e1d57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a85818110611e4857fe5b905060200201356001600160a01b0316878786818110611e6457fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015611ec157600080fd5b505af1158015611ed5573d6000803e3d6000fd5b50505050806001019050611e0a565b6060611eee613051565b905090565b6008546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b81816020811015611f3657600080fd5b50600a805491359091039055611f4d838383613095565b505050565b6001600160a01b038716611fad576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b83421115612002576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526001602081815260408084208054938401905580517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280820195909552948b166060850152608084018a905260a084019190915260c08084018990528451808503909101815260e09093019093528151919092012090612094610f1f565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612148573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b0316146121ba576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b6121c58a8a8a6125fd565b50505050505050505050565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6122076116016125f3565b611f4d6004838361361a565b60008061221e6125f3565b905061222b818787612ee4565b61223d866001600160a01b031661304b565b1561238d57634fc3585960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561230557600080fd5b505af1158015612319573d6000803e3d6000fd5b505050506040513d602081101561232f57600080fd5b50516001600160e01b0319161461238d576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b6123a46116016125f3565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061246d57506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b806124a157506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b806124d557506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b8061250957506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b8061253d57506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b8061257157506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b80610e0b5750506001600160e01b0319167f9d8ff7da000000000000000000000000000000000000000000000000000000001490565b60006001600160e01b031982167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610e0b5750506001600160e01b031916634fc3585960e01b1490565b6000611eee6130c6565b6001600160a01b038216612658576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6126c5838383612ee4565b836001600160a01b0316836001600160a01b0316146126e9576126e9838583612969565b50505050565b60006126f96125f3565b9050612707818230856126ba565b604080516001600160a01b03831681526020810184905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a15050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b03811660009081526009602052604090205460ff16610ef8576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b0382166128a1576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b600754811561292357808201818111612901576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6007556001600160a01b03831660009081526005602052604090208054830190555b6040805183815290516001600160a01b038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b6001600160a01b0380841660009081526006602090815260408083209386168352929052205460001981148015906129a057508115155b15612a27578181038181106129fc576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260066020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b6000333014612ace576040805162461bcd60e51b815260206004820152601860248201527f4368696c6445524332303a2077726f6e672073656e6465720000000000000000604482015290519081900360640190fd5b604080516001600160a01b03871681526020810186905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a150634fc3585960e01b95945050505050565b815181518114612b7b576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000805b828114612ce9576000858281518110612b9457fe5b6020026020010151905060006001600160a01b0316816001600160a01b03161415612c06576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b6000858381518110612c1457fe5b6020026020010151905080600014612c9e57838101848111612c7d576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600090815260056020526040902080548301905593505b6040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050600101612b7f565b5080156126e957600754818101818111612d4a576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6007555050505050565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612d8d57600080fd5b505afa158015612da1573d6000803e3d6000fd5b505050506040513d6020811015612db757600080fd5b50516001600160a01b03828116911614610ef8576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611f4d908490613226565b6001600160a01b038116600081815260096020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6001600160a01b038216612f3f576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b8015612ffb576001600160a01b038316600090815260056020526040902054818103818110612fb5576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b031614612ff8576001600160a01b038086166000908152600560205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b151590565b606061305b61342e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b6130a56130a06125f3565b613591565b6000828260208110156130b757600080fd5b503590506126e9308583612ee4565b600033816130d26135f3565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061314557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15613153579150610ea29050565b6001600160a01b038216321480159061321257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156131e557600080fd5b505afa1580156131f9573d6000803e3d6000fd5b505050506040513d602081101561320f57600080fd5b50515b15613220579150610ea29050565b50905090565b816132396001600160a01b03821661304b565b61328a576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106132e557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016132a8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613347576040519150601f19603f3d011682016040523d82523d6000602084013e61334c565b606091505b509150915081156133cb578051156133c65780806020019051602081101561337357600080fd5b50516133c6576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b613427565b805161341e576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b366000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681148061349a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156134b1576134a76135ff565b925092505061358d565b6001600160a01b038116321480159061357757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d66134fc6135f3565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561354a57600080fd5b505afa15801561355e573d6000803e3d6000fd5b505050506040513d602081101561357457600080fd5b50515b15613584576134a76135ff565b60003692509250505b9091565b6008546001600160a01b03828116911614610ef8576040805162461bcd60e51b815260206004820152601a60248201527f4368696c6445524332303a206f6e6c79206465706f7369746f72000000000000604482015290519081900360640190fd5b60131936013560601c90565b36600061361260131983018284816136bb565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826136505760008555613696565b82601f106136695782800160ff19823516178555613696565b82800160010185558215613696579182015b8281111561369657823582559160200191906001019061367b565b506136a29291506136a6565b5090565b5b808211156136a257600081556001016136a7565b600080858511156136ca578182fd5b838611156136d6578182fd5b505082019391909203915056fea26469706673582212206826a88b6fbc85a0697f4298feafa6d72940cd6351041fe8814039d1047eb41564736f6c63430007060033",
              "opcodes": "PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x3E16 CODESIZE SUB DUP1 PUSH3 0x3E16 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xA0 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xBC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0xE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x11A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x149 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x12F JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 DUP5 DUP2 ADD MLOAD DUP6 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD DUP4 DUP6 ADD DUP5 MSTORE PUSH1 0x10 DUP6 MSTORE PUSH16 0x4368696C64204552433230204D6F636B PUSH1 0x80 SHL DUP4 DUP7 ADD MSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x4345323 PUSH1 0xE4 SHL SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE SWAP5 MLOAD SWAP3 SWAP10 POP SWAP7 SWAP8 POP SWAP6 SWAP3 SWAP5 POP SWAP1 SWAP2 PUSH1 0x12 SWAP2 DUP9 SWAP2 DUP3 SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP13 SWAP2 DUP13 SWAP2 DUP13 SWAP2 DUP3 SWAP2 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0x80 MSTORE DUP3 MLOAD PUSH3 0x22E SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP7 ADD SWAP1 PUSH3 0x5E5 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x244 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x5E5 JUMP JUMPDEST POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF8 DUP3 SWAP1 SHL AND PUSH2 0x100 MSTORE CHAINID PUSH1 0xC0 DUP2 SWAP1 MSTORE PUSH3 0x282 DUP2 DUP6 PUSH3 0x2D4 JUMP JUMPDEST PUSH1 0xE0 MSTORE POP POP PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE POP PUSH3 0x2BC SWAP5 POP DUP6 SWAP4 POP PUSH3 0x35E SWAP3 POP POP POP JUMP JUMPDEST POP PUSH3 0x2C9 DUP6 DUP6 PUSH3 0x3AA JUMP JUMPDEST POP POP POP POP POP PUSH3 0x691 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH3 0x402 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 EQ PUSH3 0x577 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x41D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x490 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x49F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH3 0x52B JUMPI DUP4 DUP2 ADD DUP5 DUP2 GT PUSH3 0x50A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE SWAP4 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH3 0x406 JUMP JUMPDEST POP DUP1 ISZERO PUSH3 0x5DF JUMPI PUSH1 0x7 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH3 0x5DA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE POP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x61D JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x668 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x638 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x668 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x668 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x668 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x64B JUMP JUMPDEST POP PUSH3 0x676 SWAP3 SWAP2 POP PUSH3 0x67A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x676 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x67B JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH1 0xF8 SHR PUSH2 0x3719 PUSH3 0x6FD PUSH1 0x0 CODECOPY DUP1 PUSH2 0xEFD MSTORE POP DUP1 PUSH2 0xFE5 MSTORE POP DUP1 PUSH2 0xF24 MSTORE DUP1 PUSH2 0x1F04 MSTORE POP DUP1 PUSH2 0x1551 MSTORE DUP1 PUSH2 0x3111 MSTORE DUP1 PUSH2 0x3466 MSTORE POP DUP1 PUSH2 0x158C MSTORE DUP1 PUSH2 0x30D6 MSTORE DUP1 PUSH2 0x3169 MSTORE DUP1 PUSH2 0x343C MSTORE DUP1 PUSH2 0x34C7 MSTORE POP PUSH2 0x3719 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 0x277 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x88D695B2 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0xC3666C36 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE0DF5B6F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE0DF5B6F EQ PUSH2 0xCD6 JUMPI DUP1 PUSH4 0xEB795549 EQ PUSH2 0xD46 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xDCB JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0xD505ACCF EQ PUSH2 0xC57 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xCA8 JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0xC8291D84 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xC8291D84 EQ PUSH2 0xBC7 JUMPI DUP1 PUSH4 0xCD0D0096 EQ PUSH2 0xBCF JUMPI DUP1 PUSH4 0xCF2C52CB EQ PUSH2 0xBD7 JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xAAB JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0xBBF JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x98650275 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x9C9 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0x9F5 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0xA1B JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x98650275 EQ PUSH2 0x995 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x99D JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x88D695B2 EQ PUSH2 0x881 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x943 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x967 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x96F JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x3C130D90 GT PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x572B6C05 GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x721 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x747 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x85B JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x5D4 JUMPI DUP1 PUSH4 0x68573107 EQ PUSH2 0x5FA JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x3C130D90 EQ PUSH2 0x421 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x429 JUMPI DUP1 PUSH4 0x4885B254 EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0x4FC35859 EQ PUSH2 0x527 JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3F5 JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x37A JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x3B0 JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x360 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2BF PUSH2 0xE11 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2F9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2E1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x326 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xEA5 JUMP JUMPDEST PUSH2 0x368 PUSH2 0xEC2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xEC8 JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xEE7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3D7 PUSH2 0xEFB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x368 PUSH2 0xF1F JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x100B JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x1179 JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x11DA JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x51C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11F8 JUMP JUMPDEST PUSH2 0x5B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x578 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x58A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x152C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x154D JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x62B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x65F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x15C6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x368 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x737 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15DB JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x75D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x778 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x7CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x82E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x850 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x15F6 JUMP JUMPDEST PUSH2 0x368 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x871 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1779 JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x897 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x8E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x904 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x916 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x938 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x178B JUMP JUMPDEST PUSH2 0x94B PUSH2 0x1A9A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2BF PUSH2 0x1AA9 JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B0A JUMP JUMPDEST PUSH2 0x3CD PUSH2 0x1B1E JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1B7C JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1BEB JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1BFF JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xAA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xAC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xADC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1D9C JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x1EE4 JUMP JUMPDEST PUSH2 0x94B PUSH2 0x1EF3 JUMP JUMPDEST PUSH2 0x368 PUSH2 0x1F02 JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xC4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1F26 JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xC6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1F52 JUMP JUMPDEST PUSH2 0x368 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x21D1 JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x21FC JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xDC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2213 JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2399 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDFC DUP3 PUSH2 0x240A JUMP JUMPDEST DUP1 PUSH2 0xE0B JUMPI POP PUSH2 0xE0B DUP3 PUSH2 0x25A7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE9A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE6F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE9A 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 0xE7D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEB9 PUSH2 0xEB2 PUSH2 0x25F3 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x25FD JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEDD PUSH2 0xED5 PUSH2 0x25F3 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x26BA JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH2 0xEF8 DUP2 PUSH2 0x26EF JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 DUP2 EQ PUSH2 0xFE3 JUMPI PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE PUSH2 0xFDE SWAP4 DUP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xFD4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xFA9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xFD4 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 0xFB7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x274F JUMP JUMPDEST PUSH2 0x1005 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1068 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1072 PUSH2 0x25F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP4 ISZERO PUSH2 0x1123 JUMPI DUP1 DUP5 ADD DUP2 DUP2 GT PUSH2 0x10F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20616C6C6F77616E6365206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE9A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE6F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE9A JUMP JUMPDEST PUSH2 0x11EA PUSH2 0x11E5 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x27D9 JUMP JUMPDEST PUSH2 0x11F4 DUP3 DUP3 PUSH2 0x2846 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x124F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP1 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0x1461 JUMPI PUSH1 0x0 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0x1281 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x12FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0x1309 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x140C JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x1371 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x13B0 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x140A JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x1405 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x126C JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1471 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x14EB JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x14CD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0x14F5 PUSH2 0x25F3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x151B JUMPI PUSH2 0x151B DUP12 DUP3 DUP6 PUSH2 0x2969 JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD DUP5 ADD SWAP1 SSTORE PUSH1 0x0 PUSH2 0x1543 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2A78 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xE0B JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x15D1 PUSH2 0x11E5 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x11F4 DUP3 DUP3 PUSH2 0x2B24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1606 PUSH2 0x1601 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x2D54 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1615 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1666 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x176F JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x167E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x169E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x172C JUMPI PUSH1 0xA SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SUB DUP1 DUP3 GT ISZERO PUSH2 0x172A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH2 0x1765 DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x173B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2E18 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1669 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x17E2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x17EC PUSH2 0x25F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP DUP1 DUP1 JUMPDEST DUP6 DUP2 EQ PUSH2 0x1A00 JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x1820 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x189A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x18A8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x19AB JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x1910 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x194F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x19A9 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x19A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x180B JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1A10 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x1A8A JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x1A6C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE9A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE6F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE9A JUMP JUMPDEST PUSH2 0x1B15 PUSH2 0x1601 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0xEF8 DUP2 PUSH2 0x2E98 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B28 PUSH2 0x25F3 JUMP JUMPDEST SWAP1 POP PUSH2 0x1B33 DUP2 PUSH2 0x27D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1BD9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xEB9 PUSH2 0x1BE4 PUSH2 0x25F3 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2969 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEB9 PUSH2 0x1BF8 PUSH2 0x25F3 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2EE4 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C1F PUSH2 0x25F3 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C2D DUP2 DUP9 DUP9 DUP9 PUSH2 0x26BA JUMP JUMPDEST PUSH2 0x1C3F DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x304B JUMP JUMPDEST ISZERO PUSH2 0x1D8F JUMPI PUSH4 0x4FC35859 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D1B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1D8F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1DA7 PUSH2 0x1601 PUSH2 0x25F3 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1DB6 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1E07 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x176F JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x1E1D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x1E48 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x1E64 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1ED5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x1E0A JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1EEE PUSH2 0x3051 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA DUP1 SLOAD SWAP2 CALLDATALOAD SWAP1 SWAP2 SUB SWAP1 SSTORE PUSH2 0x1F4D DUP4 DUP4 DUP4 PUSH2 0x3095 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x1FAD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373206F776E657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x2002 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2065787069726564207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD SWAP4 DUP5 ADD SWAP1 SSTORE DUP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP5 ADD MSTORE DUP1 DUP3 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP5 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xC0 DUP1 DUP5 ADD DUP10 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 SWAP1 SWAP4 ADD SWAP1 SWAP4 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 SWAP1 PUSH2 0x2094 PUSH2 0xF1F JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2148 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x21BA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E76616C6964207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x21C5 DUP11 DUP11 DUP11 PUSH2 0x25FD JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 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 0x2207 PUSH2 0x1601 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x1F4D PUSH1 0x4 DUP4 DUP4 PUSH2 0x361A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x221E PUSH2 0x25F3 JUMP JUMPDEST SWAP1 POP PUSH2 0x222B DUP2 DUP8 DUP8 PUSH2 0x2EE4 JUMP JUMPDEST PUSH2 0x223D DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x304B JUMP JUMPDEST ISZERO PUSH2 0x238D JUMPI PUSH4 0x4FC35859 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP5 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2319 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x232F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x238D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x23A4 PUSH2 0x1601 PUSH2 0x25F3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x246D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x36372B0700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x24A1 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xA219A02500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x24D5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x3C130D9000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x2509 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D07518600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x253D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xC05327E600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x2571 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x53F41A9700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xE0B JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0x9D8FF7DA00000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xE0B JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0x4FC35859 PUSH1 0xE0 SHL EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EEE PUSH2 0x30C6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2658 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 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 DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x26C5 DUP4 DUP4 DUP4 PUSH2 0x2EE4 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x26E9 JUMPI PUSH2 0x26E9 DUP4 DUP6 DUP4 PUSH2 0x2969 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26F9 PUSH2 0x25F3 JUMP JUMPDEST SWAP1 POP PUSH2 0x2707 DUP2 DUP3 ADDRESS DUP6 PUSH2 0x26BA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xEF8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x28A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD DUP2 ISZERO PUSH2 0x2923 JUMPI DUP1 DUP3 ADD DUP2 DUP2 GT PUSH2 0x2901 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x29A0 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2A27 JUMPI DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x29FC JUMPI PUSH1 0x40 DUP1 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 SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0x2ACE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4368696C6445524332303A2077726F6E672073656E6465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH4 0x4FC35859 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x2B7B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 EQ PUSH2 0x2CE9 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2B94 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2C06 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2C14 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x2C9E JUMPI DUP4 DUP2 ADD DUP5 DUP2 GT PUSH2 0x2C7D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE SWAP4 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x2B7F JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x26E9 JUMPI PUSH1 0x7 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x2D4A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE POP POP POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DA1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0xEF8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1F4D SWAP1 DUP5 SWAP1 PUSH2 0x3226 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2F3F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x2FFB JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x2FB5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2FF8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP7 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE JUMPDEST POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x305B PUSH2 0x342E JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x30A5 PUSH2 0x30A0 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x3591 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP1 POP PUSH2 0x26E9 ADDRESS DUP6 DUP4 PUSH2 0x2EE4 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x30D2 PUSH2 0x35F3 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x3145 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x3153 JUMPI SWAP2 POP PUSH2 0xEA2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x3212 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x31F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x320F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x3220 JUMPI SWAP2 POP PUSH2 0xEA2 SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x3239 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x304B JUMP JUMPDEST PUSH2 0x328A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x32E5 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x32A8 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3347 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 0x334C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x33CB JUMPI DUP1 MLOAD ISZERO PUSH2 0x33C6 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x33C6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3427 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x341E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x349A JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x34B1 JUMPI PUSH2 0x34A7 PUSH2 0x35FF JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x358D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x3577 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x34FC PUSH2 0x35F3 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x354A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x355E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x3584 JUMPI PUSH2 0x34A7 PUSH2 0x35FF JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0xEF8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4368696C6445524332303A206F6E6C79206465706F7369746F72000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x3612 PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x36BB JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x3650 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3696 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3669 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x3696 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3696 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3696 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x367B JUMP JUMPDEST POP PUSH2 0x36A2 SWAP3 SWAP2 POP PUSH2 0x36A6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x36A2 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x36A7 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x36CA JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x36D6 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0x26A88B6FBC85A0697F TIMESTAMP SWAP9 INVALID 0xAF 0xA6 0xD7 0x29 BLOCKHASH 0xCD PUSH4 0x51041FE8 DUP2 BLOCKHASH CODECOPY 0xD1 DIV PUSH31 0xB41564736F6C63430007060033000000000000000000000000000000000000 ",
              "sourceMap": "869:4366:58:-:0;;;1070:436;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1070:436:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1070:436:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1070:436:58;;;;;;;;;;;;;;;;;;;;;;701:214:54;;;;;;;;-1:-1:-1;;;701:214:54;;;;;;;;;;;;;;-1:-1:-1;;;701:214:54;;;;;;;-1:-1:-1;960:15:2;;-1:-1:-1;;;;;;960:15:2;1371:10:58;960:15:2;;;;;990:40;;1070:436:58;;-1:-1:-1;1070:436:58;;-1:-1:-1;1070:436:58;1371:10;;-1:-1:-1;701:214:54;;1329:2:58;;1070:436;;;;;;701:214:54;;1329:2:58;;1070:436;;;;1371:10;;;;-1:-1:-1;990:40:2;;-1:-1:-1;;990:40:2;-1:-1:-1;;;;;;;443:40:85;;;;;;;;493:38;;;;;;2047:13:38;;;;:5;;-1:-1:-1;2047:13:38;;;;:::i;:::-;-1:-1:-1;2070:17:38;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;2097:21:38;;;;;;;;2188:9;2216:27;;;;2273:48;2188:9;2314:5;2273:25;:48::i;:::-;2253:68;;-1:-1:-1;;1211:17:55;:38;;-1:-1:-1;;;;;;1211:38:55;-1:-1:-1;;;;;1211:38:55;;;;;;;;;;;-1:-1:-1;476:18:1::1;::::0;-1:-1:-1;487:6:1;;-1:-1:-1;476:10:1::1;::::0;-1:-1:-1;;;476:18:1:i:1;:::-;-1:-1:-1::0;1469:30:58::3;1480:10:::0;1492:6;1469:10:::3;:30::i;:::-;1070:436:::0;;;;;869:4366;;17687:463:38;17995:16;;;;;;;17846:283;;;17878:95;17846:283;;;;;;;;;;;18033:14;17846:283;;;;;;;;;;;18106:4;17846:283;;;;;;;;;;;;;;;;;;;;;;;;;17819:324;;;;;;17687:463::o;1252:122:1:-;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;14720:1045:38:-;14838:17;;14883:13;;14873:23;;14865:62;;;;;-1:-1:-1;;;14865:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14938:18;14971:9;14966:550;14987:6;14982:1;:11;14966:550;;15014:10;15027;15038:1;15027:13;;;;;;;;;;;;;;15014:26;;15076:1;-1:-1:-1;;;;;15062:16:38;:2;-1:-1:-1;;;;;15062:16:38;;;15054:48;;;;;-1:-1:-1;;;15054:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;15117:13;15133:6;15140:1;15133:9;;;;;;;;;;;;;;15117:25;;15160:5;15169:1;15160:10;15156:300;;15214:18;;;15258:26;;;15250:61;;;;;-1:-1:-1;;;15250:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15373:13:38;;;;;;:9;:13;;;;;:22;;;;;;15342:13;-1:-1:-1;15156:300:38;15474:31;;;;;;;;-1:-1:-1;;;;;15474:31:38;;;15491:1;;15474:31;;;;;;;;;-1:-1:-1;;14995:3:38;;14966:550;;;-1:-1:-1;15530:15:38;;15526:233;;15578:12;;15624:19;;;15665:18;;;15657:53;;;;;-1:-1:-1;;;15657:53:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;15724:12;:24;-1:-1:-1;15526:233:38;14720:1045;;;;:::o;869:4366:58:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;869:4366:58;;;-1:-1:-1;869:4366:58;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:379:86",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:86",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "144:233:86",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "182:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "191:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "202:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "184:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "184:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "184:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "160:10:86"
                                  },
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "172:8:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "157:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "157:24:86"
                              },
                              "nodeType": "YulIf",
                              "src": "154:2:86"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "247:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "256:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "267:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "249:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "249:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "229:8:86"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "239:6:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "226:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "226:20:86"
                              },
                              "nodeType": "YulIf",
                              "src": "223:2:86"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "288:36:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "305:6:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "313:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "301:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "301:23:86"
                              },
                              "variableNames": [
                                {
                                  "name": "offsetOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "288:9:86"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "333:38:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "350:8:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "360:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "346:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "346:25:86"
                              },
                              "variableNames": [
                                {
                                  "name": "lengthOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:9:86"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "78:6:86",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "86:6:86",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "94:10:86",
                            "type": ""
                          },
                          {
                            "name": "endIndex",
                            "nodeType": "YulTypedName",
                            "src": "106:8:86",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "offsetOut",
                            "nodeType": "YulTypedName",
                            "src": "119:9:86",
                            "type": ""
                          },
                          {
                            "name": "lengthOut",
                            "nodeType": "YulTypedName",
                            "src": "130:9:86",
                            "type": ""
                          }
                        ],
                        "src": "14:363:86"
                      }
                    ]
                  },
                  "contents": "{\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(offsetOut, offsetOut) }\n        if gt(endIndex, length) { revert(offsetOut, offsetOut) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n}",
                  "id": 86,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "8178": [
                  {
                    "length": 32,
                    "start": 3876
                  },
                  {
                    "length": 32,
                    "start": 7940
                  }
                ],
                "8180": [
                  {
                    "length": 32,
                    "start": 4069
                  }
                ],
                "8192": [
                  {
                    "length": 32,
                    "start": 3837
                  }
                ],
                "15042": [
                  {
                    "length": 32,
                    "start": 5516
                  },
                  {
                    "length": 32,
                    "start": 12502
                  },
                  {
                    "length": 32,
                    "start": 12649
                  },
                  {
                    "length": 32,
                    "start": 13372
                  },
                  {
                    "length": 32,
                    "start": 13511
                  }
                ],
                "15044": [
                  {
                    "length": 32,
                    "start": 5457
                  },
                  {
                    "length": 32,
                    "start": 12561
                  },
                  {
                    "length": 32,
                    "start": 13414
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106102775760003560e01c806388d695b211610160578063c3666c36116100d8578063d505accf1161008c578063e0df5b6f11610071578063e0df5b6f14610cd6578063eb79554914610d46578063f2fde38b14610dcb57610277565b8063d505accf14610c57578063dd62ed3e14610ca857610277565b8063c8291d84116100bd578063c8291d8414610bc7578063cd0d009614610bcf578063cf2c52cb14610bd757610277565b8063c3666c3614610aab578063c4c2bfdc14610bbf57610277565b8063986502751161012f578063a9059cbb11610114578063a9059cbb146109c9578063aa271e1a146109f5578063b88d4fde14610a1b57610277565b80639865027514610995578063a457c2d71461099d57610277565b806388d695b2146108815780638da5cb5b1461094357806395d89b4114610967578063983b2d561461096f57610277565b80633c130d90116101f3578063572b6c05116101c257806370a08231116101a757806370a082311461072157806373c8a958146107475780637ecebe001461085b57610277565b8063572b6c05146105d457806368573107146105fa57610277565b80633c130d901461042157806340c10f19146104295780634885b254146104555780634fc358591461052757610277565b806323b872dd1161024a578063313ce5671161022f578063313ce567146103cf5780633644e515146103ed57806339509351146103f557610277565b806323b872dd1461037a5780632e1a7d4d146103b057610277565b806301ffc9a71461027c57806306fdde03146102b7578063095ea7b31461033457806318160ddd14610360575b600080fd5b6102a36004803603602081101561029257600080fd5b50356001600160e01b031916610df1565b604080519115158252519081900360200190f35b6102bf610e11565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102f95781810151838201526020016102e1565b50505050905090810190601f1680156103265780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a36004803603604081101561034a57600080fd5b506001600160a01b038135169060200135610ea5565b610368610ec2565b60408051918252519081900360200190f35b6102a36004803603606081101561039057600080fd5b506001600160a01b03813581169160208101359091169060400135610ec8565b6103cd600480360360208110156103c657600080fd5b5035610ee7565b005b6103d7610efb565b6040805160ff9092168252519081900360200190f35b610368610f1f565b6102a36004803603604081101561040b57600080fd5b506001600160a01b03813516906020013561100b565b6102bf611179565b6103cd6004803603604081101561043f57600080fd5b506001600160a01b0381351690602001356111da565b6102a36004803603606081101561046b57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561049657600080fd5b8201836020820111156104a857600080fd5b803590602001918460208302840111640100000000831117156104ca57600080fd5b9193909290916020810190356401000000008111156104e857600080fd5b8201836020820111156104fa57600080fd5b8035906020019184602083028401116401000000008311171561051c57600080fd5b5090925090506111f8565b6105b76004803603608081101561053d57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561057857600080fd5b82018360208201111561058a57600080fd5b803590602001918460018302840111640100000000831117156105ac57600080fd5b50909250905061152c565b604080516001600160e01b03199092168252519081900360200190f35b6102a3600480360360208110156105ea57600080fd5b50356001600160a01b031661154d565b6103cd6004803603604081101561061057600080fd5b81019060208101813564010000000081111561062b57600080fd5b82018360208201111561063d57600080fd5b8035906020019184602083028401116401000000008311171561065f57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156106af57600080fd5b8201836020820111156106c157600080fd5b803590602001918460208302840111640100000000831117156106e357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506115c6945050505050565b6103686004803603602081101561073757600080fd5b50356001600160a01b03166115db565b6103cd6004803603606081101561075d57600080fd5b81019060208101813564010000000081111561077857600080fd5b82018360208201111561078a57600080fd5b803590602001918460208302840111640100000000831117156107ac57600080fd5b9193909290916020810190356401000000008111156107ca57600080fd5b8201836020820111156107dc57600080fd5b803590602001918460208302840111640100000000831117156107fe57600080fd5b91939092909160208101903564010000000081111561081c57600080fd5b82018360208201111561082e57600080fd5b8035906020019184602083028401116401000000008311171561085057600080fd5b5090925090506115f6565b6103686004803603602081101561087157600080fd5b50356001600160a01b0316611779565b6102a36004803603604081101561089757600080fd5b8101906020810181356401000000008111156108b257600080fd5b8201836020820111156108c457600080fd5b803590602001918460208302840111640100000000831117156108e657600080fd5b91939092909160208101903564010000000081111561090457600080fd5b82018360208201111561091657600080fd5b8035906020019184602083028401116401000000008311171561093857600080fd5b50909250905061178b565b61094b611a9a565b604080516001600160a01b039092168252519081900360200190f35b6102bf611aa9565b6103cd6004803603602081101561098557600080fd5b50356001600160a01b0316611b0a565b6103cd611b1e565b6102a3600480360360408110156109b357600080fd5b506001600160a01b038135169060200135611b7c565b6102a3600480360360408110156109df57600080fd5b506001600160a01b038135169060200135611beb565b6102a360048036036020811015610a0b57600080fd5b50356001600160a01b0316611bff565b6102a360048036036080811015610a3157600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135640100000000811115610a6c57600080fd5b820183602082011115610a7e57600080fd5b80359060200191846001830284011164010000000083111715610aa057600080fd5b509092509050611c14565b6103cd60048036036060811015610ac157600080fd5b810190602081018135640100000000811115610adc57600080fd5b820183602082011115610aee57600080fd5b80359060200191846020830284011164010000000083111715610b1057600080fd5b919390929091602081019035640100000000811115610b2e57600080fd5b820183602082011115610b4057600080fd5b80359060200191846020830284011164010000000083111715610b6257600080fd5b919390929091602081019035640100000000811115610b8057600080fd5b820183602082011115610b9257600080fd5b80359060200191846020830284011164010000000083111715610bb457600080fd5b509092509050611d9c565b6102bf611ee4565b61094b611ef3565b610368611f02565b6103cd60048036036040811015610bed57600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115610c1857600080fd5b820183602082011115610c2a57600080fd5b80359060200191846001830284011164010000000083111715610c4c57600080fd5b509092509050611f26565b6103cd600480360360e0811015610c6d57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611f52565b61036860048036036040811015610cbe57600080fd5b506001600160a01b03813581169160200135166121d1565b6103cd60048036036020811015610cec57600080fd5b810190602081018135640100000000811115610d0757600080fd5b820183602082011115610d1957600080fd5b80359060200191846001830284011164010000000083111715610d3b57600080fd5b5090925090506121fc565b6102a360048036036060811015610d5c57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135640100000000811115610d8c57600080fd5b820183602082011115610d9e57600080fd5b80359060200191846001830284011164010000000083111715610dc057600080fd5b509092509050612213565b6103cd60048036036020811015610de157600080fd5b50356001600160a01b0316612399565b6000610dfc8261240a565b80610e0b5750610e0b826125a7565b92915050565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610e9a5780601f10610e6f57610100808354040283529160200191610e9a565b820191906000526020600020905b815481529060010190602001808311610e7d57829003601f168201915b505050505090505b90565b6000610eb9610eb26125f3565b84846125fd565b50600192915050565b60075490565b6000610edd610ed56125f3565b8585856126ba565b5060019392505050565b600a805482019055610ef8816126ef565b50565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610fe3576002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152610fde93859391929091830182828015610fd45780601f10610fa957610100808354040283529160200191610fd4565b820191906000526020600020905b815481529060010190602001808311610fb757829003601f168201915b505050505061274f565b611005565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b60006001600160a01b038316611068576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b60006110726125f3565b6001600160a01b038082166000908152600660209081526040808320938916835292905220549091508315611123578084018181116110f8576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600660209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e9a5780601f10610e6f57610100808354040283529160200191610e9a565b6111ea6111e56125f3565b6127d9565b6111f48282612846565b5050565b60008382811461124f576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600560205260408120549080805b8481146114615760008a8a8381811061128157fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b031614156112fb576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600089898481811061130957fe5b9050602002013590508060001461140c57848101858111611371576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b0316146113b0576001600160a01b038316600090815260056020526040902080548301905561140a565b86821115611405576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505060010161126c565b5081158015906114715750808214155b156114eb578183038381106114cd576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260056020526040902090820190555b60006114f56125f3565b9050806001600160a01b03168b6001600160a01b03161461151b5761151b8b8285612969565b5060019a9950505050505050505050565b600a80548401905560006115438686868686612a78565b9695505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610e0b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6115d16111e56125f3565b6111f48282612b24565b6001600160a01b031660009081526005602052604090205490565b6116066116016125f3565b612d54565b84838114801561161557508082145b611666576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461176f57600086868381811061167e57fe5b905060200201356001600160a01b03169050600085858481811061169e57fe5b905060200201359050306001600160a01b0316826001600160a01b0316141561172c57600a5430600090815260056020526040902054038082111561172a576040805162461bcd60e51b815260206004820152601b60248201527f5265636f763a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b505b6117658a8a8581811061173b57fe5b905060200201356001600160a01b031682846001600160a01b0316612e189092919063ffffffff16565b5050600101611669565b5050505050505050565b60016020526000908152604090205481565b6000838281146117e2576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60006117ec6125f3565b6001600160a01b03811660009081526005602052604081205491925080805b858114611a005760008b8b8381811061182057fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b0316141561189a576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a848181106118a857fe5b905060200201359050806000146119ab57848101858111611910576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b03161461194f576001600160a01b03831660009081526005602052604090208054830190556119a9565b868211156119a4576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505060010161180b565b508115801590611a105750808214155b15611a8a57818303838110611a6c576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260056020526040902090820190555b5060019998505050505050505050565b6000546001600160a01b031690565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e9a5780601f10610e6f57610100808354040283529160200191610e9a565b611b156116016125f3565b610ef881612e98565b6000611b286125f3565b9050611b33816127d9565b6001600160a01b038116600081815260096020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b60006001600160a01b038316611bd9576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b610eb9611be46125f3565b8484612969565b6000610eb9611bf86125f3565b8484612ee4565b60096020526000908152604090205460ff1681565b600080611c1f6125f3565b9050611c2d818888886126ba565b611c3f866001600160a01b031661304b565b15611d8f57634fc3585960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015611d0757600080fd5b505af1158015611d1b573d6000803e3d6000fd5b505050506040513d6020811015611d3157600080fd5b50516001600160e01b03191614611d8f576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b611da76116016125f3565b848381148015611db657508082145b611e07576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461176f57858582818110611e1d57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a85818110611e4857fe5b905060200201356001600160a01b0316878786818110611e6457fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015611ec157600080fd5b505af1158015611ed5573d6000803e3d6000fd5b50505050806001019050611e0a565b6060611eee613051565b905090565b6008546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b81816020811015611f3657600080fd5b50600a805491359091039055611f4d838383613095565b505050565b6001600160a01b038716611fad576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b83421115612002576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526001602081815260408084208054938401905580517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280820195909552948b166060850152608084018a905260a084019190915260c08084018990528451808503909101815260e09093019093528151919092012090612094610f1f565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612148573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b0316146121ba576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b6121c58a8a8a6125fd565b50505050505050505050565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6122076116016125f3565b611f4d6004838361361a565b60008061221e6125f3565b905061222b818787612ee4565b61223d866001600160a01b031661304b565b1561238d57634fc3585960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561230557600080fd5b505af1158015612319573d6000803e3d6000fd5b505050506040513d602081101561232f57600080fd5b50516001600160e01b0319161461238d576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b6123a46116016125f3565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061246d57506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b806124a157506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b806124d557506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b8061250957506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b8061253d57506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b8061257157506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b80610e0b5750506001600160e01b0319167f9d8ff7da000000000000000000000000000000000000000000000000000000001490565b60006001600160e01b031982167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610e0b5750506001600160e01b031916634fc3585960e01b1490565b6000611eee6130c6565b6001600160a01b038216612658576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6126c5838383612ee4565b836001600160a01b0316836001600160a01b0316146126e9576126e9838583612969565b50505050565b60006126f96125f3565b9050612707818230856126ba565b604080516001600160a01b03831681526020810184905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a15050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b03811660009081526009602052604090205460ff16610ef8576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b0382166128a1576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b600754811561292357808201818111612901576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6007556001600160a01b03831660009081526005602052604090208054830190555b6040805183815290516001600160a01b038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b6001600160a01b0380841660009081526006602090815260408083209386168352929052205460001981148015906129a057508115155b15612a27578181038181106129fc576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260066020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b6000333014612ace576040805162461bcd60e51b815260206004820152601860248201527f4368696c6445524332303a2077726f6e672073656e6465720000000000000000604482015290519081900360640190fd5b604080516001600160a01b03871681526020810186905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a150634fc3585960e01b95945050505050565b815181518114612b7b576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000805b828114612ce9576000858281518110612b9457fe5b6020026020010151905060006001600160a01b0316816001600160a01b03161415612c06576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b6000858381518110612c1457fe5b6020026020010151905080600014612c9e57838101848111612c7d576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600090815260056020526040902080548301905593505b6040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050600101612b7f565b5080156126e957600754818101818111612d4a576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6007555050505050565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612d8d57600080fd5b505afa158015612da1573d6000803e3d6000fd5b505050506040513d6020811015612db757600080fd5b50516001600160a01b03828116911614610ef8576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611f4d908490613226565b6001600160a01b038116600081815260096020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6001600160a01b038216612f3f576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b8015612ffb576001600160a01b038316600090815260056020526040902054818103818110612fb5576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b031614612ff8576001600160a01b038086166000908152600560205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b151590565b606061305b61342e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b6130a56130a06125f3565b613591565b6000828260208110156130b757600080fd5b503590506126e9308583612ee4565b600033816130d26135f3565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061314557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15613153579150610ea29050565b6001600160a01b038216321480159061321257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156131e557600080fd5b505afa1580156131f9573d6000803e3d6000fd5b505050506040513d602081101561320f57600080fd5b50515b15613220579150610ea29050565b50905090565b816132396001600160a01b03821661304b565b61328a576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106132e557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016132a8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613347576040519150601f19603f3d011682016040523d82523d6000602084013e61334c565b606091505b509150915081156133cb578051156133c65780806020019051602081101561337357600080fd5b50516133c6576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b613427565b805161341e576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b366000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681148061349a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156134b1576134a76135ff565b925092505061358d565b6001600160a01b038116321480159061357757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d66134fc6135f3565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561354a57600080fd5b505afa15801561355e573d6000803e3d6000fd5b505050506040513d602081101561357457600080fd5b50515b15613584576134a76135ff565b60003692509250505b9091565b6008546001600160a01b03828116911614610ef8576040805162461bcd60e51b815260206004820152601a60248201527f4368696c6445524332303a206f6e6c79206465706f7369746f72000000000000604482015290519081900360640190fd5b60131936013560601c90565b36600061361260131983018284816136bb565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826136505760008555613696565b82601f106136695782800160ff19823516178555613696565b82800160010185558215613696579182015b8281111561369657823582559160200191906001019061367b565b506136a29291506136a6565b5090565b5b808211156136a257600081556001016136a7565b600080858511156136ca578182fd5b838611156136d6578182fd5b505082019391909203915056fea26469706673582212206826a88b6fbc85a0697f4298feafa6d72940cd6351041fe8814039d1047eb41564736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x277 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x88D695B2 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0xC3666C36 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE0DF5B6F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE0DF5B6F EQ PUSH2 0xCD6 JUMPI DUP1 PUSH4 0xEB795549 EQ PUSH2 0xD46 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xDCB JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0xD505ACCF EQ PUSH2 0xC57 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xCA8 JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0xC8291D84 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xC8291D84 EQ PUSH2 0xBC7 JUMPI DUP1 PUSH4 0xCD0D0096 EQ PUSH2 0xBCF JUMPI DUP1 PUSH4 0xCF2C52CB EQ PUSH2 0xBD7 JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xAAB JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0xBBF JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x98650275 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x9C9 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0x9F5 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0xA1B JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x98650275 EQ PUSH2 0x995 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x99D JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x88D695B2 EQ PUSH2 0x881 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x943 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x967 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x96F JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x3C130D90 GT PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x572B6C05 GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x721 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x747 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x85B JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x5D4 JUMPI DUP1 PUSH4 0x68573107 EQ PUSH2 0x5FA JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x3C130D90 EQ PUSH2 0x421 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x429 JUMPI DUP1 PUSH4 0x4885B254 EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0x4FC35859 EQ PUSH2 0x527 JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3F5 JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x37A JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x3B0 JUMPI PUSH2 0x277 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x360 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2BF PUSH2 0xE11 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2F9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2E1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x326 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xEA5 JUMP JUMPDEST PUSH2 0x368 PUSH2 0xEC2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xEC8 JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xEE7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3D7 PUSH2 0xEFB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x368 PUSH2 0xF1F JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x100B JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x1179 JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x11DA JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x51C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11F8 JUMP JUMPDEST PUSH2 0x5B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x578 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x58A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x152C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x154D JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x62B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x65F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x15C6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x368 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x737 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15DB JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x75D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x778 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x7CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x82E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x850 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x15F6 JUMP JUMPDEST PUSH2 0x368 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x871 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1779 JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x897 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x8E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x904 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x916 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x938 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x178B JUMP JUMPDEST PUSH2 0x94B PUSH2 0x1A9A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2BF PUSH2 0x1AA9 JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B0A JUMP JUMPDEST PUSH2 0x3CD PUSH2 0x1B1E JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1B7C JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1BEB JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1BFF JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xAA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xAC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xADC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1D9C JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x1EE4 JUMP JUMPDEST PUSH2 0x94B PUSH2 0x1EF3 JUMP JUMPDEST PUSH2 0x368 PUSH2 0x1F02 JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xC4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1F26 JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xC6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1F52 JUMP JUMPDEST PUSH2 0x368 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x21D1 JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x21FC JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xDC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2213 JUMP JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2399 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDFC DUP3 PUSH2 0x240A JUMP JUMPDEST DUP1 PUSH2 0xE0B JUMPI POP PUSH2 0xE0B DUP3 PUSH2 0x25A7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE9A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE6F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE9A 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 0xE7D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEB9 PUSH2 0xEB2 PUSH2 0x25F3 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x25FD JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEDD PUSH2 0xED5 PUSH2 0x25F3 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x26BA JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH2 0xEF8 DUP2 PUSH2 0x26EF JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x0 DUP2 EQ PUSH2 0xFE3 JUMPI PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE PUSH2 0xFDE SWAP4 DUP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xFD4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xFA9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xFD4 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 0xFB7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x274F JUMP JUMPDEST PUSH2 0x1005 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1068 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1072 PUSH2 0x25F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP4 ISZERO PUSH2 0x1123 JUMPI DUP1 DUP5 ADD DUP2 DUP2 GT PUSH2 0x10F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20616C6C6F77616E6365206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE9A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE6F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE9A JUMP JUMPDEST PUSH2 0x11EA PUSH2 0x11E5 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x27D9 JUMP JUMPDEST PUSH2 0x11F4 DUP3 DUP3 PUSH2 0x2846 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x124F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP1 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0x1461 JUMPI PUSH1 0x0 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0x1281 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x12FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0x1309 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x140C JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x1371 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x13B0 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x140A JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x1405 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x126C JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1471 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x14EB JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x14CD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0x14F5 PUSH2 0x25F3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x151B JUMPI PUSH2 0x151B DUP12 DUP3 DUP6 PUSH2 0x2969 JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD DUP5 ADD SWAP1 SSTORE PUSH1 0x0 PUSH2 0x1543 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2A78 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xE0B JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x15D1 PUSH2 0x11E5 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x11F4 DUP3 DUP3 PUSH2 0x2B24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1606 PUSH2 0x1601 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x2D54 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1615 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1666 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x176F JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x167E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x169E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x172C JUMPI PUSH1 0xA SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SUB DUP1 DUP3 GT ISZERO PUSH2 0x172A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH2 0x1765 DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x173B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2E18 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1669 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 DUP2 EQ PUSH2 0x17E2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x17EC PUSH2 0x25F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP DUP1 DUP1 JUMPDEST DUP6 DUP2 EQ PUSH2 0x1A00 JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x1820 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x189A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x18A8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x19AB JUMPI DUP5 DUP2 ADD DUP6 DUP2 GT PUSH2 0x1910 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 SWAP6 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x194F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE PUSH2 0x19A9 JUMP JUMPDEST DUP7 DUP3 GT ISZERO PUSH2 0x19A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 DUP2 ADD SWAP4 JUMPDEST POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x180B JUMP JUMPDEST POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1A10 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST ISZERO PUSH2 0x1A8A JUMPI DUP2 DUP4 SUB DUP4 DUP2 LT PUSH2 0x1A6C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 ADD SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE9A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE6F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE9A JUMP JUMPDEST PUSH2 0x1B15 PUSH2 0x1601 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0xEF8 DUP2 PUSH2 0x2E98 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B28 PUSH2 0x25F3 JUMP JUMPDEST SWAP1 POP PUSH2 0x1B33 DUP2 PUSH2 0x27D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1BD9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xEB9 PUSH2 0x1BE4 PUSH2 0x25F3 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2969 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEB9 PUSH2 0x1BF8 PUSH2 0x25F3 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2EE4 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C1F PUSH2 0x25F3 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C2D DUP2 DUP9 DUP9 DUP9 PUSH2 0x26BA JUMP JUMPDEST PUSH2 0x1C3F DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x304B JUMP JUMPDEST ISZERO PUSH2 0x1D8F JUMPI PUSH4 0x4FC35859 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D1B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1D8F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1DA7 PUSH2 0x1601 PUSH2 0x25F3 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1DB6 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1E07 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x176F JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x1E1D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x1E48 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x1E64 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1ED5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x1E0A JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1EEE PUSH2 0x3051 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA DUP1 SLOAD SWAP2 CALLDATALOAD SWAP1 SWAP2 SUB SWAP1 SSTORE PUSH2 0x1F4D DUP4 DUP4 DUP4 PUSH2 0x3095 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x1FAD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373206F776E657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x2002 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2065787069726564207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD SWAP4 DUP5 ADD SWAP1 SSTORE DUP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP5 ADD MSTORE DUP1 DUP3 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP5 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xC0 DUP1 DUP5 ADD DUP10 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 SWAP1 SWAP4 ADD SWAP1 SWAP4 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 SWAP1 PUSH2 0x2094 PUSH2 0xF1F JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2148 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x21BA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E76616C6964207065726D69740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x21C5 DUP11 DUP11 DUP11 PUSH2 0x25FD JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 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 0x2207 PUSH2 0x1601 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x1F4D PUSH1 0x4 DUP4 DUP4 PUSH2 0x361A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x221E PUSH2 0x25F3 JUMP JUMPDEST SWAP1 POP PUSH2 0x222B DUP2 DUP8 DUP8 PUSH2 0x2EE4 JUMP JUMPDEST PUSH2 0x223D DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x304B JUMP JUMPDEST ISZERO PUSH2 0x238D JUMPI PUSH4 0x4FC35859 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4FC35859 DUP4 DUP5 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2319 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x232F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x238D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722072656675736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x23A4 PUSH2 0x1601 PUSH2 0x25F3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x246D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x36372B0700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x24A1 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xA219A02500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x24D5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x3C130D9000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x2509 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x9D07518600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x253D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xC05327E600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x2571 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x53F41A9700000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xE0B JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0x9D8FF7DA00000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xE0B JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0x4FC35859 PUSH1 0xE0 SHL EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EEE PUSH2 0x30C6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2658 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F2061646472657373207370656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 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 DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x26C5 DUP4 DUP4 DUP4 PUSH2 0x2EE4 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x26E9 JUMPI PUSH2 0x26E9 DUP4 DUP6 DUP4 PUSH2 0x2969 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26F9 PUSH2 0x25F3 JUMP JUMPDEST SWAP1 POP PUSH2 0x2707 DUP2 DUP3 ADDRESS DUP6 PUSH2 0x26BA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP6 ADD MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xEF8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x28A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD DUP2 ISZERO PUSH2 0x2923 JUMPI DUP1 DUP3 ADD DUP2 DUP2 GT PUSH2 0x2901 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x29A0 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2A27 JUMPI DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x29FC JUMPI PUSH1 0x40 DUP1 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 SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0x2ACE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4368696C6445524332303A2077726F6E672073656E6465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH4 0x4FC35859 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x2B7B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 EQ PUSH2 0x2CE9 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2B94 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2C06 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207A65726F206164647265737300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2C14 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x2C9E JUMPI DUP4 DUP2 ADD DUP5 DUP2 GT PUSH2 0x2C7D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2076616C756573206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE SWAP4 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x2B7F JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x26E9 JUMPI PUSH1 0x7 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x2D4A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20737570706C79206F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE POP POP POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DA1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0xEF8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1F4D SWAP1 DUP5 SWAP1 PUSH2 0x3226 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2F3F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20746F207A65726F206164647265737300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x2FFB JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 SUB DUP2 DUP2 LT PUSH2 0x2FB5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E742062616C616E63650000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2FF8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP7 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE JUMPDEST POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x305B PUSH2 0x342E JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x30A5 PUSH2 0x30A0 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x3591 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP1 POP PUSH2 0x26E9 ADDRESS DUP6 DUP4 PUSH2 0x2EE4 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x30D2 PUSH2 0x35F3 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x3145 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x3153 JUMPI SWAP2 POP PUSH2 0xEA2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x3212 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x31F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x320F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x3220 JUMPI SWAP2 POP PUSH2 0xEA2 SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x3239 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x304B JUMP JUMPDEST PUSH2 0x328A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x32E5 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x32A8 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3347 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 0x334C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x33CB JUMPI DUP1 MLOAD ISZERO PUSH2 0x33C6 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x33C6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3427 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x341E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x349A JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x34B1 JUMPI PUSH2 0x34A7 PUSH2 0x35FF JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x358D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x3577 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x34FC PUSH2 0x35F3 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x354A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x355E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x3584 JUMPI PUSH2 0x34A7 PUSH2 0x35FF JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0xEF8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4368696C6445524332303A206F6E6C79206465706F7369746F72000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x3612 PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x36BB JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x3650 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3696 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3669 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x3696 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3696 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3696 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x367B JUMP JUMPDEST POP PUSH2 0x36A2 SWAP3 SWAP2 POP PUSH2 0x36A6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x36A2 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x36A7 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x36CA JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x36D6 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0x26A88B6FBC85A0697F TIMESTAMP SWAP9 INVALID 0xAF 0xA6 0xD7 0x29 BLOCKHASH 0xCD PUSH4 0x51041FE8 DUP2 BLOCKHASH CODECOPY 0xD1 DIV PUSH31 0xB41564736F6C63430007060033000000000000000000000000000000000000 ",
              "sourceMap": "869:4366:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1078:221:54;;;;;;;;;;;;;;;;-1:-1:-1;1078:221:54;-1:-1:-1;;;;;;1078:221:54;;:::i;:::-;;;;;;;;;;;;;;;;;;4506:92:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3730:166;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3730:166:38;;;;;;;;:::i;3263:100::-;;;:::i;:::-;;;;;;;;;;;;;;;;4120:216;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4120:216:38;;;;;;;;;;;;;;;;;:::i;2977:126:58:-;;;;;;;;;;;;;;;;-1:-1:-1;2977:126:58;;:::i;:::-;;4776:92:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11199:354;;;:::i;5309:625::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5309:625:38;;;;;;;;:::i;5038:100::-;;;:::i;2160:136:58:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2160:136:58;;;;;;;;:::i;8089:1756:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8089:1756:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8089:1756:38;;-1:-1:-1;8089:1756:38;-1:-1:-1;8089:1756:38;:::i;3147:277:58:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3147:277:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3147:277:58;;-1:-1:-1;3147:277:58;-1:-1:-1;3147:277:58;:::i;:::-;;;;-1:-1:-1;;;;;;3147:277:58;;;;;;;;;;;;;;544:193:85;;;;;;;;;;;;;;;;-1:-1:-1;544:193:85;-1:-1:-1;;;;;544:193:85;;:::i;2389:182:58:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2389:182:58;;;;;;;;-1:-1:-1;2389:182:58;;-1:-1:-1;;2389:182:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2389:182:58;;-1:-1:-1;2389:182:58;;-1:-1:-1;;;;;2389:182:58:i;3396:119:38:-;;;;;;;;;;;;;;;;-1:-1:-1;3396:119:38;-1:-1:-1;;;;;3396:119:38;;:::i;3727:773:58:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3727:773:58;;-1:-1:-1;3727:773:58;-1:-1:-1;3727:773:58;:::i;1587:50:38:-;;;;;;;;;;;;;;;;-1:-1:-1;1587:50:38;-1:-1:-1;;;;;1587:50:38;;:::i;6429:1613::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6429:1613:38;;-1:-1:-1;6429:1613:38;-1:-1:-1;6429:1613:38;:::i;1114:94:2:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1114:94:2;;;;;;;;;;;;;;4639:96:38;;;:::i;694:120:1:-;;;;;;;;;;;;;;;;-1:-1:-1;694:120:1;-1:-1:-1;;;;;694:120:1;;:::i;929:185::-;;;:::i;5976:277:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5976:277:38;;;;;;;;:::i;3929:158::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3929:158:38;;;;;;;;:::i;339:40:1:-;;;;;;;;;;;;;;;;-1:-1:-1;339:40:1;-1:-1:-1;;;;;339:40:1;;:::i;10505:473:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10505:473:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10505:473:38;;-1:-1:-1;10505:473:38;-1:-1:-1;10505:473:38;:::i;2430:511:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2430:511:8;;-1:-1:-1;2430:511:8;-1:-1:-1;2430:511:8;:::i;5139:94:58:-;;;:::i;1003:32:55:-;;;:::i;1402:42:38:-;;;:::i;2744:189:58:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2744:189:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2744:189:58;;-1:-1:-1;2744:189:58;-1:-1:-1;2744:189:58;:::i;11592:711:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11592:711:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3548:149::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3548:149:38;;;;;;;;;;:::i;1802:136:58:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1802:136:58;;-1:-1:-1;1802:136:58;-1:-1:-1;1802:136:58;:::i;10020:439:38:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10020:439:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10020:439:38;;-1:-1:-1;10020:439:38;-1:-1:-1;10020:439:38;:::i;1448:197:2:-;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;1078:221:54:-;1185:4;1208:36;1232:11;1208:23;:36::i;:::-;:84;;;;1248:44;1280:11;1248:31;:44::i;:::-;1201:91;1078:221;-1:-1:-1;;1078:221:54:o;4506:92:38:-;4586:5;4579:12;;;;;;;-1:-1:-1;;4579:12:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4554:13;;4579:12;;4586:5;;4579:12;;4586:5;4579:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4506:92;;:::o;3730:166::-;3814:4;3830:38;3839:12;:10;:12::i;:::-;3853:7;3862:5;3830:8;:38::i;:::-;-1:-1:-1;3885:4:38;3730:166;;;;:::o;3263:100::-;3344:12;;3263:100;:::o;4120:216::-;4248:4;4264:44;4278:12;:10;:12::i;:::-;4292:4;4298:2;4302:5;4264:13;:44::i;:::-;-1:-1:-1;4325:4:38;4120:216;;;;;:::o;2977:126:58:-;3045:9;:19;;;;;;3074:22;3058:6;3074:14;:22::i;:::-;2977:126;:::o;4776:92:38:-;4852:9;4776:92;:::o;11199:354::-;11257:7;11335:9;11458:17;11447:28;;:99;;11539:5;11498:48;;;;;;;;;;;;-1:-1:-1;;11498:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;11524:7;;11498:48;;11539:5;;11498:48;;11539:5;11498:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:25;:48::i;:::-;11447:99;;;11478:17;11447:99;11440:106;;;11199:354;:::o;5309:625::-;5408:4;-1:-1:-1;;;;;5432:21:38;;5424:61;;;;;-1:-1:-1;;;5424:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;5495:13;5511:12;:10;:12::i;:::-;-1:-1:-1;;;;;5554:18:38;;;5533;5554;;;:11;:18;;;;;;;;:27;;;;;;;;;;5495:28;;-1:-1:-1;5595:15:38;;5591:264;;5649:23;;;5694:25;;;5686:63;;;;;-1:-1:-1;;;5686:63:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5763:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:42;;;5793:12;-1:-1:-1;5591:264:38;5885:7;-1:-1:-1;;;;;5869:36:38;5878:5;-1:-1:-1;;;;;5869:36:38;;5894:10;5869:36;;;;;;;;;;;;;;;;;;-1:-1:-1;5923:4:38;;5309:625;-1:-1:-1;;;;5309:625:38:o;5038:100::-;5122:9;5115:16;;;;;;;;-1:-1:-1;;5115:16:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5090:13;;5115:16;;5122:9;;5115:16;;5122:9;5115:16;;;;;;;;;;;;;;;;;;;;;;;;2160:136:58;2235:28;2250:12;:10;:12::i;:::-;2235:14;:28::i;:::-;2273:16;2279:2;2283:5;2273;:16::i;:::-;2160:136;;:::o;8089:1756:38:-;8253:4;8286:10;8321:23;;;8313:62;;;;;-1:-1:-1;;;8313:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8404:15:38;;8386;8404;;;:9;:15;;;;;;;8386;;8498:791;8519:6;8514:1;:11;8498:791;;8546:10;8559;;8570:1;8559:13;;;;;;;;;;;;;-1:-1:-1;;;;;8559:13:38;8546:26;;8608:1;-1:-1:-1;;;;;8594:16:38;:2;-1:-1:-1;;;;;8594:16:38;;;8586:51;;;;;-1:-1:-1;;;8586:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8652:13;8668:6;;8675:1;8668:9;;;;;;;;;;;;;8652:25;;8696:5;8705:1;8696:10;8692:542;;8750:18;;;8794:26;;;8786:61;;;;;-1:-1:-1;;;8786:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8878:13;8865:26;;8921:2;-1:-1:-1;;;;;8913:10:38;:4;-1:-1:-1;;;;;8913:10:38;;8909:311;;-1:-1:-1;;;;;8947:13:38;;;;;;:9;:13;;;;;:22;;;;;;8909:311;;;9033:7;9024:5;:16;;9016:56;;;;;-1:-1:-1;;;9016:56:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;9094:31;;;;8909:311;8692:542;;9268:2;-1:-1:-1;;;;;9253:25:38;9262:4;-1:-1:-1;;;;;9253:25:38;;9272:5;9253:25;;;;;;;;;;;;;;;;;;-1:-1:-1;;8527:3:38;;8498:791;;;-1:-1:-1;9303:15:38;;;;;:55;;;9336:22;9322:10;:36;;9303:55;9299:380;;;9395:20;;;9437;;;9429:60;;;;;-1:-1:-1;;;9429:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9559:15:38;;;;;;:9;:15;;;;;9577:35;;;9559:53;;9299:380;9689:14;9706:12;:10;:12::i;:::-;9689:29;;9740:6;-1:-1:-1;;;;;9732:14:38;:4;-1:-1:-1;;;;;9732:14:38;;9728:89;;9762:44;9781:4;9787:6;9795:10;9762:18;:44::i;:::-;-1:-1:-1;9834:4:38;;8089:1756;-1:-1:-1;;;;;;;;;;8089:1756:38:o;3147:277:58:-;3330:9;:19;;;;;;3312:6;3366:51;3388:8;3398:4;3343:6;3412:4;;3366:21;:51::i;:::-;3359:58;3147:277;-1:-1:-1;;;;;;3147:277:58:o;544:193:85:-;631:4;667:19;-1:-1:-1;;;;;654:32:85;:9;-1:-1:-1;;;;;654:32:85;;:76;;;;711:18;-1:-1:-1;;;;;690:40:85;:9;-1:-1:-1;;;;;690:40:85;;647:83;;544:193;;;:::o;2389:182:58:-;2496:28;2511:12;:10;:12::i;2496:28::-;2534:30;2545:10;2557:6;2534:10;:30::i;3396:119:38:-;-1:-1:-1;;;;;3490:18:38;3464:7;3490:18;;;:9;:18;;;;;;;3396:119::o;3727:773:58:-;3900:31;3918:12;:10;:12::i;:::-;3900:17;:31::i;:::-;3958:8;3991:23;;;:51;;;;-1:-1:-1;4018:24:58;;;3991:51;3983:90;;;;;-1:-1:-1;;;3983:90:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;4088:9;4083:411;4108:6;4103:1;:11;4083:411;;4135:13;4151:6;;4158:1;4151:9;;;;;;;;;;;;;-1:-1:-1;;;;;4151:9:58;4135:25;;4174:14;4191:7;;4199:1;4191:10;;;;;;;;;;;;;4174:27;;4236:4;-1:-1:-1;;;;;4219:22:58;:5;-1:-1:-1;;;;;4219:22:58;;4215:198;;;4310:9;;4301:4;4261:19;4283:24;;;:9;:24;;;;;;:36;4345:21;;;;4337:61;;;;;-1:-1:-1;;;4337:61:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;4215:198;;4426:57;4463:8;;4472:1;4463:11;;;;;;;;;;;;;-1:-1:-1;;;;;4463:11:58;4476:6;4440:5;-1:-1:-1;;;;;4426:36:58;;;:57;;;;;:::i;:::-;-1:-1:-1;;4116:3:58;;4083:411;;;;3727:773;;;;;;;:::o;1587:50:38:-;;;;;;;;;;;;;:::o;6429:1613::-;6545:4;6578:10;6613:23;;;6605:62;;;;;-1:-1:-1;;;6605:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6677:14;6694:12;:10;:12::i;:::-;-1:-1:-1;;;;;6734:17:38;;6716:15;6734:17;;;:9;:17;;;;;;6677:29;;-1:-1:-1;6716:15:38;;6830:793;6851:6;6846:1;:11;6830:793;;6878:10;6891;;6902:1;6891:13;;;;;;;;;;;;;-1:-1:-1;;;;;6891:13:38;6878:26;;6940:1;-1:-1:-1;;;;;6926:16:38;:2;-1:-1:-1;;;;;6926:16:38;;;6918:51;;;;;-1:-1:-1;;;6918:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6984:13;7000:6;;7007:1;7000:9;;;;;;;;;;;;;6984:25;;7027:5;7036:1;7027:10;7023:544;;7081:18;;;7125:26;;;7117:61;;;;;-1:-1:-1;;;7117:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;7209:13;7196:26;;7254:2;-1:-1:-1;;;;;7244:12:38;:6;-1:-1:-1;;;;;7244:12:38;;7240:313;;-1:-1:-1;;;;;7280:13:38;;;;;;:9;:13;;;;;:22;;;;;;7240:313;;;7366:7;7357:5;:16;;7349:56;;;;;-1:-1:-1;;;7349:56:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;7427:31;;;;7240:313;7023:544;;7602:2;-1:-1:-1;;;;;7585:27:38;7594:6;-1:-1:-1;;;;;7585:27:38;;7606:5;7585:27;;;;;;;;;;;;;;;;;;-1:-1:-1;;6859:3:38;;6830:793;;;-1:-1:-1;7637:15:38;;;;;:55;;;7670:22;7656:10;:36;;7637:55;7633:382;;;7729:20;;;7771;;;7763:60;;;;;-1:-1:-1;;;7763:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7893:17:38;;;;;;:9;:17;;;;;7913:35;;;7893:55;;7633:382;-1:-1:-1;8031:4:38;;6429:1613;-1:-1:-1;;;;;;;;;6429:1613:38:o;1114:94:2:-;1169:7;1195:6;-1:-1:-1;;;;;1195:6:2;1114:94;:::o;4639:96:38:-;4721:7;4714:14;;;;;;;;-1:-1:-1;;4714:14:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4689:13;;4714:14;;4721:7;;4714:14;;4721:7;4714:14;;;;;;;;;;;;;;;;;;;;;;;;694:120:1;747:31;765:12;:10;:12::i;747:31::-;788:19;799:7;788:10;:19::i;929:185::-;972:15;990:12;:10;:12::i;:::-;972:30;;1012:23;1027:7;1012:14;:23::i;:::-;-1:-1:-1;;;;;1045:17:1;;1065:5;1045:17;;;:8;:17;;;;;;:25;;-1:-1:-1;;1045:25:1;;;1085:22;;;1065:5;1085:22;929:185;:::o;5976:277:38:-;6080:4;-1:-1:-1;;;;;6104:21:38;;6096:61;;;;;-1:-1:-1;;;6096:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;6167:58;6186:12;:10;:12::i;:::-;6200:7;6209:15;6167:18;:58::i;3929:158::-;4009:4;4025:34;4035:12;:10;:12::i;:::-;4049:2;4053:5;4025:9;:34::i;339:40:1:-;;;;;;;;;;;;;;;:::o;10505:473:38:-;10667:4;10683:14;10700:12;:10;:12::i;:::-;10683:29;;10722:39;10736:6;10744:4;10750:2;10754:6;10722:13;:39::i;:::-;10775:15;:2;-1:-1:-1;;;;;10775:13:38;;:15::i;:::-;10771:180;;;-1:-1:-1;;;10814:98:38;;;10829:2;-1:-1:-1;;;;;10814:34:38;;10849:6;10857:4;10863:6;10871:4;;10814:62;;;;;;;;;;;;;-1:-1:-1;;;;;10814:62:38;;;;;;-1:-1:-1;;;;;10814:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10814:62:38;-1:-1:-1;;;;;;10814:98:38;;10806:134;;;;;-1:-1:-1;;;10806:134:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10967:4:38;;10505:473;-1:-1:-1;;;;;;10505:473:38:o;2430:511:8:-;2599:31;2617:12;:10;:12::i;2599:31::-;2657:8;2690:26;;;:55;;;;-1:-1:-1;2720:25:8;;;2690:55;2682:94;;;;;-1:-1:-1;;;2682:94:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:9;2786:149;2811:6;2806:1;:11;2786:149;;2857:9;;2867:1;2857:12;;;;;;;;;;;;;-1:-1:-1;;;;;2857:12:8;-1:-1:-1;;;;;2838:45:8;;2892:4;2899:8;;2908:1;2899:11;;;;;;;;;;;;;-1:-1:-1;;;;;2899:11:8;2912:8;;2921:1;2912:11;;;;;;;;;;;;;2838:86;;;;;;;;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:3;;;;;2786:149;;5139:94:58;5181:16;5216:10;:8;:10::i;:::-;5209:17;;5139:94;:::o;1003:32:55:-;;;-1:-1:-1;;;;;1003:32:55;;:::o;1402:42:38:-;;;:::o;2744:189:58:-;2861:11;;2850:34;;;;;;;;;;-1:-1:-1;2837:9:58;:47;;2850:34;;2837:47;;;;;2894:32;2908:4;2914:11;;2894:13;:32::i;:::-;2744:189;;;:::o;11592:711:38:-;-1:-1:-1;;;;;11810:19:38;;11802:57;;;;;-1:-1:-1;;;11802:57:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;11896:8;11877:15;:27;;11869:61;;;;;-1:-1:-1;;;11869:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12022:13:38;;;11940:18;12022:13;;;:6;:13;;;;;;;;:15;;;;;;;11971:77;;1329:66;11971:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11961:88;;;;;;;;12113:18;:16;:18::i;:::-;12133:10;12084:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12074:71;;;;;;12059:86;;12155:14;12172:24;12182:4;12188:1;12191;12194;12172:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12155:41;;12224:5;-1:-1:-1;;;;;12214:15:38;:6;-1:-1:-1;;;;;12214:15:38;;12206:49;;;;;-1:-1:-1;;;12206:49:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;12265:31;12274:5;12281:7;12290:5;12265:8;:31::i;:::-;11592:711;;;;;;;;;;:::o;3548:149::-;-1:-1:-1;;;;;3663:18:38;;;3637:7;3663:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3548:149::o;1802:136:58:-;1869:31;1887:12;:10;:12::i;1869:31::-;1910:21;:9;1922;;1910:21;:::i;10020:439:38:-;10156:4;10172:14;10189:12;:10;:12::i;:::-;10172:29;;10211;10221:6;10229:2;10233:6;10211:9;:29::i;:::-;10254:15;:2;-1:-1:-1;;;;;10254:13:38;;:15::i;:::-;10250:182;;;-1:-1:-1;;;10293:100:38;;;10308:2;-1:-1:-1;;;;;10293:34:38;;10328:6;10336;10344;10352:4;;10293:64;;;;;;;;;;;;;-1:-1:-1;;;;;10293:64:38;;;;;;-1:-1:-1;;;;;10293:64:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10293:64:38;-1:-1:-1;;;;;;10293:100:38;;10285:136;;;;;-1:-1:-1;;;10285:136:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10448:4:38;;10020:439;-1:-1:-1;;;;;10020:439:38:o;1448:197:2:-;1527:31;1545:12;:10;:12::i;1527:31::-;1568:6;:17;;;;-1:-1:-1;;;;;1568:17:2;;;;;;;;;1600:38;;1568:17;;1621:6;;;1600:38;;1568:6;1600:38;1448:197;:::o;2491:610:38:-;2576:4;-1:-1:-1;;;;;;2611:40:38;;2626:25;2611:40;;:95;;-1:-1:-1;;;;;;;2667:39:38;;2682:24;2667:39;2611:95;:158;;;-1:-1:-1;;;;;;;2722:47:38;;2737:32;2722:47;2611:158;:221;;;-1:-1:-1;;;;;;;2785:47:38;;2800:32;2785:47;2611:221;:285;;;-1:-1:-1;;;;;;;2848:48:38;;2863:33;2848:48;2611:285;:354;;;-1:-1:-1;;;;;;;2912:53:38;;2927:38;2912:53;2611:354;:422;;;-1:-1:-1;;;;;;;2981:52:38;;2996:37;2981:52;2611:422;:483;;;-1:-1:-1;;;;;;;;3049:45:38;3064:30;3049:45;;2491:610::o;761:206:40:-;846:4;-1:-1:-1;;;;;;869:40:40;;884:25;869:40;;:91;;-1:-1:-1;;;;;;;;913:47:40;-1:-1:-1;;;913:47:40;;761:206::o;4635:183:58:-;4740:15;4774:37;:35;:37::i;12438:273:38:-;-1:-1:-1;;;;;12560:21:38;;12552:61;;;;;-1:-1:-1;;;12552:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12623:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:35;;;12673:31;;;;;;;;;;;;;;;;;12438:273;;;:::o;13965:263::-;14102:26;14112:4;14118:2;14122:5;14102:9;:26::i;:::-;14150:6;-1:-1:-1;;;;;14142:14:38;:4;-1:-1:-1;;;;;14142:14:38;;14138:84;;14172:39;14191:4;14197:6;14205:5;14172:18;:39::i;:::-;13965:263;;;;:::o;2302:197:54:-;2361:14;2378:12;:10;:12::i;:::-;2361:29;;2400:52;2414:6;2422;2438:4;2445:6;2400:13;:52::i;:::-;2467:25;;;-1:-1:-1;;;;;2467:25:54;;;;;;;;;;;;;;;;;;;;;;;2302:197;;:::o;17687:463:38:-;17995:16;;;;;;;17846:283;;;17878:95;17846:283;;;;;;;;;;;18033:14;17846:283;;;;;;;;;;;18106:4;17846:283;;;;;;;;;;;;;;;;;;;;;;;;;17819:324;;;;;;17687:463::o;1120:126:1:-;-1:-1:-1;;;;;1193:17:1;;;;;;:8;:17;;;;;;;;1185:54;;;;;-1:-1:-1;;;1185:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;14234:480:38;-1:-1:-1;;;;;14311:16:38;;14303:48;;;;;-1:-1:-1;;;14303:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14378:12;;14404:10;;14400:262;;14450:14;;;14486:18;;;14478:53;;;;;-1:-1:-1;;;14478:53:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14545:12;:24;-1:-1:-1;;;;;14583:13:38;;;;;;:9;:13;;;;;:22;;;;;;14400:262;14676:31;;;;;;;;-1:-1:-1;;;;;14676:31:38;;;14693:1;;14676:31;;;;;;;;;14234:480;;;:::o;12717:682::-;-1:-1:-1;;;;;12872:18:38;;;12851;12872;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;12914:31:38;;;;;:55;;-1:-1:-1;12949:20:38;;;12914:55;12910:432;;;13127:28;;;13177:25;;;13169:67;;;;;-1:-1:-1;;;13169:67:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13250:18:38;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:42;;;13280:12;-1:-1:-1;12910:432:38;13372:7;-1:-1:-1;;;;;13356:36:38;13365:5;-1:-1:-1;;;;;13356:36:38;;13381:10;13356:36;;;;;;;;;;;;;;;;;;12717:682;;;;:::o;2982:332:54:-;3155:6;3181:10;3203:4;3181:27;3173:64;;;;;-1:-1:-1;;;3173:64:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;3252:23;;;-1:-1:-1;;;;;3252:23:54;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2982:332:54;;;;;;;:::o;14720:1045:38:-;14838:17;;14883:13;;14873:23;;14865:62;;;;;-1:-1:-1;;;14865:62:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;14938:18;14971:9;14966:550;14987:6;14982:1;:11;14966:550;;15014:10;15027;15038:1;15027:13;;;;;;;;;;;;;;15014:26;;15076:1;-1:-1:-1;;;;;15062:16:38;:2;-1:-1:-1;;;;;15062:16:38;;;15054:48;;;;;-1:-1:-1;;;15054:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;15117:13;15133:6;15140:1;15133:9;;;;;;;;;;;;;;15117:25;;15160:5;15169:1;15160:10;15156:300;;15214:18;;;15258:26;;;15250:61;;;;;-1:-1:-1;;;15250:61:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15373:13:38;;;;;;:9;:13;;;;;:22;;;;;;15342:13;-1:-1:-1;15156:300:38;15474:31;;;;;;;;-1:-1:-1;;;;;15474:31:38;;;15491:1;;15474:31;;;;;;;;;-1:-1:-1;;14995:3:38;;14966:550;;;-1:-1:-1;15530:15:38;;15526:233;;15578:12;;15624:19;;;15665:18;;;15657:53;;;;;-1:-1:-1;;;15657:53:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;15724:12;:24;-1:-1:-1;14720:1045:38;;;;:::o;1770:136:2:-;1860:4;-1:-1:-1;;;;;1860:10:2;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1860:12:2;-1:-1:-1;;;;;1849:23:2;;;;;;1841:58;;;;;-1:-1:-1;;;1841:58:2;;;;;;;;;;;;;;;;;;;;;;;;;;;416:223:6;573:58;;;-1:-1:-1;;;;;573:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;596:23;573:58;;;538:94;;566:5;;538:27;:94::i;1252:122:1:-;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;13405:554:38:-;-1:-1:-1;;;;;13530:16:38;;13522:51;;;;;-1:-1:-1;;;13522:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;13588:10;;13584:328;;-1:-1:-1;;;;;13632:15:38;;13614;13632;;;:9;:15;;;;;;13682;;;13719:20;;;13711:60;;;;;-1:-1:-1;;;13711:60:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;13797:2;-1:-1:-1;;;;;13789:10:38;:4;-1:-1:-1;;;;;13789:10:38;;13785:117;;-1:-1:-1;;;;;13819:15:38;;;;;;;:9;:15;;;;;;:28;;;13865:13;;;;;;:22;;;;;;13785:117;13584:328;;;13942:2;-1:-1:-1;;;;;13927:25:38;13936:4;-1:-1:-1;;;;;13927:25:38;;13946:5;13927:25;;;;;;;;;;;;;;;;;;13405:554;;;:::o;913:377:9:-;1229:20;1275:8;;;913:377::o;4824:180:58:-;4927:16;4962:35;:33;:35::i;:::-;4955:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4955:42:58;;-1:-1:-1;;;;4824:180:58;:::o;1770:244:54:-;1863:35;1885:12;:10;:12::i;:::-;1863:21;:35::i;:::-;1908:14;1936:11;;1925:34;;;;;;;;;;-1:-1:-1;1925:34:54;;-1:-1:-1;1969:38:54;1987:4;1994;1925:34;1969:9;:38::i;743:904:85:-;796:15;851:10;796:15;896:27;:25;:27::i;:::-;871:52;;958:18;-1:-1:-1;;;;;937:40:85;:9;-1:-1:-1;;;;;937:40:85;;:76;;;;994:19;-1:-1:-1;;;;;981:32:85;:9;-1:-1:-1;;;;;981:32:85;;937:76;933:166;;;1082:6;-1:-1:-1;1075:13:85;;-1:-1:-1;1075:13:85;933:166;-1:-1:-1;;;;;1496:22:85;;1509:9;1496:22;;;;:78;;;1522:18;-1:-1:-1;;;;;1522:33:85;;1556:6;1564:9;1522:52;;;;;;;;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1522:52:85;1496:78;1492:122;;;1597:6;-1:-1:-1;1590:13:85;;-1:-1:-1;1590:13:85;1492:122;-1:-1:-1;1631:9:85;-1:-1:-1;743:904:85;:::o;1147:870:6:-;1272:5;1296:19;-1:-1:-1;;;;;1296:17:6;;;:19::i;:::-;1288:58;;;;;-1:-1:-1;;;1288:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:12;1431:17;1452:6;-1:-1:-1;;;;;1452:11:6;1464:8;1452:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:57;;;;1487:7;1483:528;;;1514:11;;:16;1510:122;;1569:4;1558:24;;;;;;;;;;;;;;;-1:-1:-1;1558:24:6;1550:67;;;;;-1:-1:-1;;;1550:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:528;;;1720:11;;1716:95;;1756:40;;;-1:-1:-1;;;1756:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:95;1938:4;1932:11;1982:4;1975;1971:2;1967:13;1960:27;1902:99;1147:870;;;;;:::o;1653:670:85:-;1704:14;;1758:10;-1:-1:-1;;;;;1803:18:85;1782:40;;;;:76;;;1839:19;-1:-1:-1;;;;;1826:32:85;:9;-1:-1:-1;;;;;1826:32:85;;1782:76;1778:197;;;1927:37;:35;:37::i;:::-;1920:44;;;;;;;1778:197;-1:-1:-1;;;;;2122:22:85;;2135:9;2122:22;;;;:99;;;2148:18;-1:-1:-1;;;;;2148:33:85;;2182:27;:25;:27::i;:::-;2211:9;2148:73;;;;;;;;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2148:73:85;2122:99;2118:174;;;2244:37;:35;:37::i;2118:174::-;2308:8;;2301:15;;;;;1653:670;;;:::o;1391:146:55:-;1482:17;;-1:-1:-1;;;;;1471:28:55;;;1482:17;;1471:28;1463:67;;;;;-1:-1:-1;;;1463:67:55;;;;;;;;;;;;;;;;;;;;;;;;;;;103:519:84;-1:-1:-1;;585:14:84;581:23;568:37;564:2;560:46;;536:80::o;628:149::-;706:14;;739:31;-1:-1:-1;;749:20:84;;706:14;;;739:31;:::i;:::-;732:38;;;;628:149;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:363:86;;;172:8;160:10;157:24;154:2;;;202:9;191;184:28;154:2;239:6;229:8;226:20;223:2;;;267:9;256;249:28;223:2;-1:-1:-1;;301:23:86;;;346:25;;;;;-1:-1:-1;144:233:86:o"
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "addMinter(address)": "983b2d56",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "batchMint(address[],uint256[])": "68573107",
              "batchTransfer(address[],uint256[])": "88d695b2",
              "batchTransferFrom(address,address[],uint256[])": "4885b254",
              "childChainManager()": "c8291d84",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "deploymentChainId()": "cd0d0096",
              "deposit(address,bytes)": "cf2c52cb",
              "increaseAllowance(address,uint256)": "39509351",
              "isMinter(address)": "aa271e1a",
              "isTrustedForwarder(address)": "572b6c05",
              "mint(address,uint256)": "40c10f19",
              "msgData()": "c4c2bfdc",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "onERC20Received(address,address,uint256,bytes)": "4fc35859",
              "owner()": "8da5cb5b",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "recoverERC20s(address[],address[],uint256[])": "73c8a958",
              "recoverERC721s(address[],address[],uint256[])": "c3666c36",
              "renounceMinter()": "98650275",
              "safeTransfer(address,uint256,bytes)": "eb795549",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setTokenURI(string)": "e0df5b6f",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI()": "3c130d90",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "withdraw(uint256)": "2e1a7d4d"
            }
          }
        }
      },
      "contracts/token/ERC20/polygon/predicate/PolygonERC20EscrowPredicate.sol": {
        "PolygonERC20EscrowPredicate": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "rootChainManager_",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "depositor",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "depositReceiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "rootToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "LockedERC20",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "WITHDRAWN_EVENT_SIG",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "rootToken",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "log",
                  "type": "bytes"
                }
              ],
              "name": "exitTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "depositor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "depositReceiver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "rootToken",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "depositData",
                  "type": "bytes"
                }
              ],
              "name": "lockTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "rootChainManager",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50604051610f06380380610f068339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610ea1806100656000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063206efea4146100515780638274664f1461006b578063bd07018d1461012c578063e375b64e14610150575b600080fd5b6100596101e1565b60408051918252519081900360200190f35b61012a6004803603606081101561008157600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156100b557600080fd5b8201836020820111156100c757600080fd5b803590602001918460018302840111640100000000831117156100e957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610205945050505050565b005b610134610241565b604080516001600160a01b039092168252519081900360200190f35b61012a6004803603608081101561016657600080fd5b6001600160a01b03823581169260208101358216926040820135909216918101906080810160608201356401000000008111156101a257600080fd5b8201836020820111156101b457600080fd5b803590602001918460018302840111640100000000831117156101d657600080fd5b509092509050610250565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d581565b6102156102106102d7565b6102db565b60008061022183610340565b909250905061023a6001600160a01b0385168383610458565b5050505050565b6000546001600160a01b031681565b61025b6102106102d7565b60008282602081101561026d57600080fd5b5060408051913580835290519092506001600160a01b038087169288821692918a16917f9b217a401a5ddf7c4d474074aff9958a18d48690d77cc2151c4706aa7348b4019181900360200190a46102cf6001600160a01b0385168730846104dd565b505050505050565b3390565b6000546001600160a01b0382811691161461033d576040805162461bcd60e51b815260206004820152601760248201527f5072656469636174653a206f6e6c79206d616e61676572000000000000000000604482015290519081900360640190fd5b50565b60008060006103566103518561056b565b6105e7565b905060006103778260018151811061036a57fe5b60200260200101516105e7565b90507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d560001b6103ba826000815181106103ad57fe5b602002602001015161077f565b1461040c576040805162461bcd60e51b815260206004820152601c60248201527f5072656469636174653a20696e76616c6964207369676e617475726500000000604482015290519081900360640190fd5b600061042b8360028151811061041e57fe5b60200260200101516108dd565b905080806020019051604081101561044257600080fd5b5080516020909101519097909650945050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104d89084906109bd565b505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526105659085906109bd565b50505050565b610573610e51565b60008251116105c9576040805162461bcd60e51b815260206004820152601f60248201527f524c505265616465723a20494e56414c49445f42595445535f4c454e47544800604482015290519081900360640190fd5b5060408051808201909152815181526020828101908201525b919050565b60606105f282610ba0565b610643576040805162461bcd60e51b815260206004820152601260248201527f524c503a204954454d5f4e4f545f4c4953540000000000000000000000000000604482015290519081900360640190fd5b600061064e83610bcc565b905060008167ffffffffffffffff8111801561066957600080fd5b506040519080825280602002602001820160405280156106a357816020015b610690610e51565b8152602001906001900390816106885790505b50905060006106b58560200151610c6e565b8551909150811461070d576040805162461bcd60e51b815260206004820152601960248201527f524c503a204c4953545f4c454e4754485f4d49534d4154434800000000000000604482015290519081900360640190fd5b600061071c8660200151610d43565b60208701510190506000805b858110156107735761073983610c6e565b915060405180604001604052808381526020018481525085828151811061075c57fe5b602090810291909101015291810191600101610728565b50929695505050505050565b600061078a82610ba0565b156107dc576040805162461bcd60e51b815260206004820152601a60248201527f524c503a204445434f44494e475f4c4953545f41535f55494e54000000000000604482015290519081900360640190fd5b815160211015610833576040805162461bcd60e51b815260206004820152601560248201527f524c503a20494e56414c49445f55494e545f4c454e0000000000000000000000604482015290519081900360640190fd5b60006108428360200151610c6e565b8351909150811461089a576040805162461bcd60e51b815260206004820152601660248201527f524c503a2055494e545f4c454e5f4d49534d4154434800000000000000000000604482015290519081900360640190fd5b60006108a98460200151610d43565b845160208087015183018051939450918490039291908310156108d357826020036101000a820491505b5095945050505050565b606060006108ee8360200151610c6e565b83519091508114610946576040805162461bcd60e51b815260206004820152601760248201527f524c503a2042595445535f4c454e5f4d49534d41544348000000000000000000604482015290519081900360640190fd5b60006109558460200151610d43565b845190915081900360008167ffffffffffffffff8111801561097657600080fd5b506040519080825280601f01601f1916602001820160405280156109a1576020820181803683370190505b50905060008160200190506108d3848860200151018285610de2565b816109d06001600160a01b038216610e4b565b610a21576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b60208310610a5e5780518252601f199092019160209182019101610a3f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ac0576040519150601f19603f3d011682016040523d82523d6000602084013e610ac5565b606091505b50915091508115610b4457805115610b3f57808060200190516020811015610aec57600080fd5b5051610b3f576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b61023a565b8051610b97576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b6020810151805160009190821a9060c0821015610bc2576000925050506105e2565b5060019392505050565b600080600090506000610be28460200151610d43565b602085015185519181019250015b80821015610c6557610c0182610c6e565b8201915080821115610c5a576040805162461bcd60e51b815260206004820152601b60248201527f524c503a204e554d5f4954454d535f4c454e5f4d49534d415443480000000000604482015290519081900360640190fd5b600190920191610bf0565b50909392505050565b80516000908190811a6080811015610c895760019150610d3c565b60b8811015610cbc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181019150610d3c565b60c0811015610ce95760b78103600185019450806020036101000a85510460018201810193505050610d3c565b60f8811015610d1c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4181019150610d3c565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b8051600090811a6080811015610d5d5760009150506105e2565b60b8811080610d78575060c08110801590610d78575060f881105b15610d875760019150506105e2565b60c0811015610db9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a0190506105e2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a0190506105e2565b80610dec576104d8565b5b60208110610e0c578251825260209283019290910190601f1901610ded565b915181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169216919091179052565b3b151590565b60405180604001604052806000815260200160008152509056fea26469706673582212201039b8bf4e317eccbbbdd7c48af61e0a739cbb8fd9557083e1c524e27647486c64736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xF06 CODESIZE SUB DUP1 PUSH2 0xF06 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xEA1 DUP1 PUSH2 0x65 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 0x206EFEA4 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8274664F EQ PUSH2 0x6B JUMPI DUP1 PUSH4 0xBD07018D EQ PUSH2 0x12C JUMPI DUP1 PUSH4 0xE375B64E EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x1E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x205 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x134 PUSH2 0x241 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x250 JUMP JUMPDEST PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 DUP2 JUMP JUMPDEST PUSH2 0x215 PUSH2 0x210 PUSH2 0x2D7 JUMP JUMPDEST PUSH2 0x2DB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x221 DUP4 PUSH2 0x340 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x23A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP4 DUP4 PUSH2 0x458 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x25B PUSH2 0x210 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD SWAP2 CALLDATALOAD DUP1 DUP4 MSTORE SWAP1 MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP3 DUP9 DUP3 AND SWAP3 SWAP2 DUP11 AND SWAP2 PUSH32 0x9B217A401A5DDF7C4D474074AFF9958A18D48690D77CC2151C4706AA7348B401 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG4 PUSH2 0x2CF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP8 ADDRESS DUP5 PUSH2 0x4DD JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x33D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5072656469636174653A206F6E6C79206D616E61676572000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x356 PUSH2 0x351 DUP6 PUSH2 0x56B JUMP JUMPDEST PUSH2 0x5E7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x377 DUP3 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x36A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5E7 JUMP JUMPDEST SWAP1 POP PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 PUSH1 0x0 SHL PUSH2 0x3BA DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3AD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x77F JUMP JUMPDEST EQ PUSH2 0x40C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5072656469636174653A20696E76616C6964207369676E617475726500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x42B DUP4 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x41E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x8DD JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x4D8 SWAP1 DUP5 SWAP1 PUSH2 0x9BD JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x565 SWAP1 DUP6 SWAP1 PUSH2 0x9BD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x573 PUSH2 0xE51 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT PUSH2 0x5C9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C505265616465723A20494E56414C49445F42595445535F4C454E47544800 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD SWAP1 DUP3 ADD MSTORE JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5F2 DUP3 PUSH2 0xBA0 JUMP JUMPDEST PUSH2 0x643 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A204954454D5F4E4F545F4C4953540000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x64E DUP4 PUSH2 0xBCC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x669 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x6A3 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x690 PUSH2 0xE51 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x688 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH2 0x6B5 DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0xC6E JUMP JUMPDEST DUP6 MLOAD SWAP1 SWAP2 POP DUP2 EQ PUSH2 0x70D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A204C4953545F4C454E4754485F4D49534D4154434800000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x71C DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0xD43 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD ADD SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x773 JUMPI PUSH2 0x739 DUP4 PUSH2 0xC6E JUMP JUMPDEST SWAP2 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x75C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP2 DUP2 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x728 JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78A DUP3 PUSH2 0xBA0 JUMP JUMPDEST ISZERO PUSH2 0x7DC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A204445434F44494E475F4C4953545F41535F55494E54000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x21 LT ISZERO PUSH2 0x833 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A20494E56414C49445F55494E545F4C454E0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x842 DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0xC6E JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP DUP2 EQ PUSH2 0x89A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A2055494E545F4C454E5F4D49534D4154434800000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8A9 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0xD43 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x20 DUP1 DUP8 ADD MLOAD DUP4 ADD DUP1 MLOAD SWAP4 SWAP5 POP SWAP2 DUP5 SWAP1 SUB SWAP3 SWAP2 SWAP1 DUP4 LT ISZERO PUSH2 0x8D3 JUMPI DUP3 PUSH1 0x20 SUB PUSH2 0x100 EXP DUP3 DIV SWAP2 POP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x8EE DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0xC6E JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP DUP2 EQ PUSH2 0x946 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A2042595445535F4C454E5F4D49534D41544348000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x955 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0xD43 JUMP JUMPDEST DUP5 MLOAD SWAP1 SWAP2 POP DUP2 SWAP1 SUB PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x976 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x9A1 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x20 ADD SWAP1 POP PUSH2 0x8D3 DUP5 DUP9 PUSH1 0x20 ADD MLOAD ADD DUP3 DUP6 PUSH2 0xDE2 JUMP JUMPDEST DUP2 PUSH2 0x9D0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xE4B JUMP JUMPDEST PUSH2 0xA21 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA5E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA3F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAC0 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 0xAC5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0xB44 JUMPI DUP1 MLOAD ISZERO PUSH2 0xB3F JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xB3F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x23A JUMP JUMPDEST DUP1 MLOAD PUSH2 0xB97 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP1 MLOAD PUSH1 0x0 SWAP2 SWAP1 DUP3 BYTE SWAP1 PUSH1 0xC0 DUP3 LT ISZERO PUSH2 0xBC2 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x5E2 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH1 0x0 PUSH2 0xBE2 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0xD43 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD DUP6 MLOAD SWAP2 DUP2 ADD SWAP3 POP ADD JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0xC65 JUMPI PUSH2 0xC01 DUP3 PUSH2 0xC6E JUMP JUMPDEST DUP3 ADD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xC5A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A204E554D5F4954454D535F4C454E5F4D49534D415443480000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0xBF0 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 BYTE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xC89 JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0xD3C JUMP JUMPDEST PUSH1 0xB8 DUP2 LT ISZERO PUSH2 0xCBC JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 DUP2 ADD SWAP2 POP PUSH2 0xD3C JUMP JUMPDEST PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xCE9 JUMPI PUSH1 0xB7 DUP2 SUB PUSH1 0x1 DUP6 ADD SWAP5 POP DUP1 PUSH1 0x20 SUB PUSH2 0x100 EXP DUP6 MLOAD DIV PUSH1 0x1 DUP3 ADD DUP2 ADD SWAP4 POP POP POP PUSH2 0xD3C JUMP JUMPDEST PUSH1 0xF8 DUP2 LT ISZERO PUSH2 0xD1C JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 DUP2 ADD SWAP2 POP PUSH2 0xD3C JUMP JUMPDEST PUSH1 0xF7 DUP2 SUB PUSH1 0x1 DUP6 ADD SWAP5 POP DUP1 PUSH1 0x20 SUB PUSH2 0x100 EXP DUP6 MLOAD DIV PUSH1 0x1 DUP3 ADD DUP2 ADD SWAP4 POP POP POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 DUP2 BYTE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xD5D JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x5E2 JUMP JUMPDEST PUSH1 0xB8 DUP2 LT DUP1 PUSH2 0xD78 JUMPI POP PUSH1 0xC0 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0xD78 JUMPI POP PUSH1 0xF8 DUP2 LT JUMPDEST ISZERO PUSH2 0xD87 JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0x5E2 JUMP JUMPDEST PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xDB9 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A ADD SWAP1 POP PUSH2 0x5E2 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A ADD SWAP1 POP PUSH2 0x5E2 JUMP JUMPDEST DUP1 PUSH2 0xDEC JUMPI PUSH2 0x4D8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0xE0C JUMPI DUP3 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1F NOT ADD PUSH2 0xDED JUMP JUMPDEST SWAP2 MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 SWAP1 SWAP4 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LT CODECOPY 0xB8 0xBF 0x4E BALANCE PUSH31 0xCCBBBDD7C48AF61E0A739CBB8FD9557083E1C524E27647486C64736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "599:1818:59:-:0;;;776:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;776:86:59;1422:16:61;:36;;-1:-1:-1;;;;;1422:36:61;;;-1:-1:-1;;;;;;1422:36:61;;;;;;;;;599:1818:59;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c8063206efea4146100515780638274664f1461006b578063bd07018d1461012c578063e375b64e14610150575b600080fd5b6100596101e1565b60408051918252519081900360200190f35b61012a6004803603606081101561008157600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156100b557600080fd5b8201836020820111156100c757600080fd5b803590602001918460018302840111640100000000831117156100e957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610205945050505050565b005b610134610241565b604080516001600160a01b039092168252519081900360200190f35b61012a6004803603608081101561016657600080fd5b6001600160a01b03823581169260208101358216926040820135909216918101906080810160608201356401000000008111156101a257600080fd5b8201836020820111156101b457600080fd5b803590602001918460018302840111640100000000831117156101d657600080fd5b509092509050610250565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d581565b6102156102106102d7565b6102db565b60008061022183610340565b909250905061023a6001600160a01b0385168383610458565b5050505050565b6000546001600160a01b031681565b61025b6102106102d7565b60008282602081101561026d57600080fd5b5060408051913580835290519092506001600160a01b038087169288821692918a16917f9b217a401a5ddf7c4d474074aff9958a18d48690d77cc2151c4706aa7348b4019181900360200190a46102cf6001600160a01b0385168730846104dd565b505050505050565b3390565b6000546001600160a01b0382811691161461033d576040805162461bcd60e51b815260206004820152601760248201527f5072656469636174653a206f6e6c79206d616e61676572000000000000000000604482015290519081900360640190fd5b50565b60008060006103566103518561056b565b6105e7565b905060006103778260018151811061036a57fe5b60200260200101516105e7565b90507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d560001b6103ba826000815181106103ad57fe5b602002602001015161077f565b1461040c576040805162461bcd60e51b815260206004820152601c60248201527f5072656469636174653a20696e76616c6964207369676e617475726500000000604482015290519081900360640190fd5b600061042b8360028151811061041e57fe5b60200260200101516108dd565b905080806020019051604081101561044257600080fd5b5080516020909101519097909650945050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104d89084906109bd565b505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526105659085906109bd565b50505050565b610573610e51565b60008251116105c9576040805162461bcd60e51b815260206004820152601f60248201527f524c505265616465723a20494e56414c49445f42595445535f4c454e47544800604482015290519081900360640190fd5b5060408051808201909152815181526020828101908201525b919050565b60606105f282610ba0565b610643576040805162461bcd60e51b815260206004820152601260248201527f524c503a204954454d5f4e4f545f4c4953540000000000000000000000000000604482015290519081900360640190fd5b600061064e83610bcc565b905060008167ffffffffffffffff8111801561066957600080fd5b506040519080825280602002602001820160405280156106a357816020015b610690610e51565b8152602001906001900390816106885790505b50905060006106b58560200151610c6e565b8551909150811461070d576040805162461bcd60e51b815260206004820152601960248201527f524c503a204c4953545f4c454e4754485f4d49534d4154434800000000000000604482015290519081900360640190fd5b600061071c8660200151610d43565b60208701510190506000805b858110156107735761073983610c6e565b915060405180604001604052808381526020018481525085828151811061075c57fe5b602090810291909101015291810191600101610728565b50929695505050505050565b600061078a82610ba0565b156107dc576040805162461bcd60e51b815260206004820152601a60248201527f524c503a204445434f44494e475f4c4953545f41535f55494e54000000000000604482015290519081900360640190fd5b815160211015610833576040805162461bcd60e51b815260206004820152601560248201527f524c503a20494e56414c49445f55494e545f4c454e0000000000000000000000604482015290519081900360640190fd5b60006108428360200151610c6e565b8351909150811461089a576040805162461bcd60e51b815260206004820152601660248201527f524c503a2055494e545f4c454e5f4d49534d4154434800000000000000000000604482015290519081900360640190fd5b60006108a98460200151610d43565b845160208087015183018051939450918490039291908310156108d357826020036101000a820491505b5095945050505050565b606060006108ee8360200151610c6e565b83519091508114610946576040805162461bcd60e51b815260206004820152601760248201527f524c503a2042595445535f4c454e5f4d49534d41544348000000000000000000604482015290519081900360640190fd5b60006109558460200151610d43565b845190915081900360008167ffffffffffffffff8111801561097657600080fd5b506040519080825280601f01601f1916602001820160405280156109a1576020820181803683370190505b50905060008160200190506108d3848860200151018285610de2565b816109d06001600160a01b038216610e4b565b610a21576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b60208310610a5e5780518252601f199092019160209182019101610a3f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ac0576040519150601f19603f3d011682016040523d82523d6000602084013e610ac5565b606091505b50915091508115610b4457805115610b3f57808060200190516020811015610aec57600080fd5b5051610b3f576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b61023a565b8051610b97576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b6020810151805160009190821a9060c0821015610bc2576000925050506105e2565b5060019392505050565b600080600090506000610be28460200151610d43565b602085015185519181019250015b80821015610c6557610c0182610c6e565b8201915080821115610c5a576040805162461bcd60e51b815260206004820152601b60248201527f524c503a204e554d5f4954454d535f4c454e5f4d49534d415443480000000000604482015290519081900360640190fd5b600190920191610bf0565b50909392505050565b80516000908190811a6080811015610c895760019150610d3c565b60b8811015610cbc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181019150610d3c565b60c0811015610ce95760b78103600185019450806020036101000a85510460018201810193505050610d3c565b60f8811015610d1c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4181019150610d3c565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b8051600090811a6080811015610d5d5760009150506105e2565b60b8811080610d78575060c08110801590610d78575060f881105b15610d875760019150506105e2565b60c0811015610db9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a0190506105e2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a0190506105e2565b80610dec576104d8565b5b60208110610e0c578251825260209283019290910190601f1901610ded565b915181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169216919091179052565b3b151590565b60405180604001604052806000815260200160008152509056fea26469706673582212201039b8bf4e317eccbbbdd7c48af61e0a739cbb8fd9557083e1c524e27647486c64736f6c63430007060033",
              "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 0x206EFEA4 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8274664F EQ PUSH2 0x6B JUMPI DUP1 PUSH4 0xBD07018D EQ PUSH2 0x12C JUMPI DUP1 PUSH4 0xE375B64E EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x1E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x205 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x134 PUSH2 0x241 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x250 JUMP JUMPDEST PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 DUP2 JUMP JUMPDEST PUSH2 0x215 PUSH2 0x210 PUSH2 0x2D7 JUMP JUMPDEST PUSH2 0x2DB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x221 DUP4 PUSH2 0x340 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x23A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP4 DUP4 PUSH2 0x458 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x25B PUSH2 0x210 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD SWAP2 CALLDATALOAD DUP1 DUP4 MSTORE SWAP1 MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP3 DUP9 DUP3 AND SWAP3 SWAP2 DUP11 AND SWAP2 PUSH32 0x9B217A401A5DDF7C4D474074AFF9958A18D48690D77CC2151C4706AA7348B401 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG4 PUSH2 0x2CF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP8 ADDRESS DUP5 PUSH2 0x4DD JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x33D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5072656469636174653A206F6E6C79206D616E61676572000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x356 PUSH2 0x351 DUP6 PUSH2 0x56B JUMP JUMPDEST PUSH2 0x5E7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x377 DUP3 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x36A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5E7 JUMP JUMPDEST SWAP1 POP PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 PUSH1 0x0 SHL PUSH2 0x3BA DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3AD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x77F JUMP JUMPDEST EQ PUSH2 0x40C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5072656469636174653A20696E76616C6964207369676E617475726500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x42B DUP4 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x41E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x8DD JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x4D8 SWAP1 DUP5 SWAP1 PUSH2 0x9BD JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x565 SWAP1 DUP6 SWAP1 PUSH2 0x9BD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x573 PUSH2 0xE51 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT PUSH2 0x5C9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C505265616465723A20494E56414C49445F42595445535F4C454E47544800 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD SWAP1 DUP3 ADD MSTORE JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5F2 DUP3 PUSH2 0xBA0 JUMP JUMPDEST PUSH2 0x643 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A204954454D5F4E4F545F4C4953540000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x64E DUP4 PUSH2 0xBCC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x669 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x6A3 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x690 PUSH2 0xE51 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x688 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH2 0x6B5 DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0xC6E JUMP JUMPDEST DUP6 MLOAD SWAP1 SWAP2 POP DUP2 EQ PUSH2 0x70D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A204C4953545F4C454E4754485F4D49534D4154434800000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x71C DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0xD43 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD ADD SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x773 JUMPI PUSH2 0x739 DUP4 PUSH2 0xC6E JUMP JUMPDEST SWAP2 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x75C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP2 DUP2 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x728 JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78A DUP3 PUSH2 0xBA0 JUMP JUMPDEST ISZERO PUSH2 0x7DC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A204445434F44494E475F4C4953545F41535F55494E54000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x21 LT ISZERO PUSH2 0x833 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A20494E56414C49445F55494E545F4C454E0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x842 DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0xC6E JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP DUP2 EQ PUSH2 0x89A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A2055494E545F4C454E5F4D49534D4154434800000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8A9 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0xD43 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x20 DUP1 DUP8 ADD MLOAD DUP4 ADD DUP1 MLOAD SWAP4 SWAP5 POP SWAP2 DUP5 SWAP1 SUB SWAP3 SWAP2 SWAP1 DUP4 LT ISZERO PUSH2 0x8D3 JUMPI DUP3 PUSH1 0x20 SUB PUSH2 0x100 EXP DUP3 DIV SWAP2 POP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x8EE DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0xC6E JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP DUP2 EQ PUSH2 0x946 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A2042595445535F4C454E5F4D49534D41544348000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x955 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0xD43 JUMP JUMPDEST DUP5 MLOAD SWAP1 SWAP2 POP DUP2 SWAP1 SUB PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x976 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x9A1 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x20 ADD SWAP1 POP PUSH2 0x8D3 DUP5 DUP9 PUSH1 0x20 ADD MLOAD ADD DUP3 DUP6 PUSH2 0xDE2 JUMP JUMPDEST DUP2 PUSH2 0x9D0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xE4B JUMP JUMPDEST PUSH2 0xA21 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA5E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA3F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAC0 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 0xAC5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0xB44 JUMPI DUP1 MLOAD ISZERO PUSH2 0xB3F JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xB3F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x23A JUMP JUMPDEST DUP1 MLOAD PUSH2 0xB97 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP1 MLOAD PUSH1 0x0 SWAP2 SWAP1 DUP3 BYTE SWAP1 PUSH1 0xC0 DUP3 LT ISZERO PUSH2 0xBC2 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x5E2 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH1 0x0 PUSH2 0xBE2 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0xD43 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD DUP6 MLOAD SWAP2 DUP2 ADD SWAP3 POP ADD JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0xC65 JUMPI PUSH2 0xC01 DUP3 PUSH2 0xC6E JUMP JUMPDEST DUP3 ADD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xC5A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A204E554D5F4954454D535F4C454E5F4D49534D415443480000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0xBF0 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 BYTE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xC89 JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0xD3C JUMP JUMPDEST PUSH1 0xB8 DUP2 LT ISZERO PUSH2 0xCBC JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 DUP2 ADD SWAP2 POP PUSH2 0xD3C JUMP JUMPDEST PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xCE9 JUMPI PUSH1 0xB7 DUP2 SUB PUSH1 0x1 DUP6 ADD SWAP5 POP DUP1 PUSH1 0x20 SUB PUSH2 0x100 EXP DUP6 MLOAD DIV PUSH1 0x1 DUP3 ADD DUP2 ADD SWAP4 POP POP POP PUSH2 0xD3C JUMP JUMPDEST PUSH1 0xF8 DUP2 LT ISZERO PUSH2 0xD1C JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 DUP2 ADD SWAP2 POP PUSH2 0xD3C JUMP JUMPDEST PUSH1 0xF7 DUP2 SUB PUSH1 0x1 DUP6 ADD SWAP5 POP DUP1 PUSH1 0x20 SUB PUSH2 0x100 EXP DUP6 MLOAD DIV PUSH1 0x1 DUP3 ADD DUP2 ADD SWAP4 POP POP POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 DUP2 BYTE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xD5D JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x5E2 JUMP JUMPDEST PUSH1 0xB8 DUP2 LT DUP1 PUSH2 0xD78 JUMPI POP PUSH1 0xC0 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0xD78 JUMPI POP PUSH1 0xF8 DUP2 LT JUMPDEST ISZERO PUSH2 0xD87 JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0x5E2 JUMP JUMPDEST PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xDB9 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A ADD SWAP1 POP PUSH2 0x5E2 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A ADD SWAP1 POP PUSH2 0x5E2 JUMP JUMPDEST DUP1 PUSH2 0xDEC JUMPI PUSH2 0x4D8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0xE0C JUMPI DUP3 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1F NOT ADD PUSH2 0xDED JUMP JUMPDEST SWAP2 MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 SWAP1 SWAP4 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LT CODECOPY 0xB8 0xBF 0x4E BALANCE PUSH31 0xCCBBBDD7C48AF61E0A739CBB8FD9557083E1C524E27647486C64736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "599:1818:59:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;980:112:61;;;:::i;:::-;;;;;;;;;;;;;;;;2109:306:59;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:306:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2109:306:59;;-1:-1:-1;2109:306:59;;-1:-1:-1;;;;;2109:306:59:i;:::-;;1218:31:61;;;:::i;:::-;;;;-1:-1:-1;;;;;1218:31:61;;;;;;;;;;;;;;1372:439:59;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1372:439:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1372:439:59;;-1:-1:-1;1372:439:59;-1:-1:-1;1372:439:59;:::i;980:112:61:-;1026:66;980:112;:::o;2109:306:59:-;2231:33;2251:12;:10;:12::i;:::-;2231:19;:33::i;:::-;2275:18;2295:14;2313:25;2334:3;2313:20;:25::i;:::-;2274:64;;-1:-1:-1;2274:64:59;-1:-1:-1;2348:60:59;-1:-1:-1;;;;;2348:40:59;;2274:64;;2348:40;:60::i;:::-;2109:306;;;;;:::o;1218:31:61:-;;;-1:-1:-1;;;;;1218:31:61;;:::o;1372:439:59:-;1549:33;1569:12;:10;:12::i;1549:33::-;1592:14;1620:11;;1609:34;;;;;;;;;;-1:-1:-1;1658:58:59;;;1609:34;;1658:58;;;;;1609:34;;-1:-1:-1;;;;;;1658:58:59;;;;;;;;;;;;;;;;;1609:34;1658:58;;;1726:78;-1:-1:-1;;;;;1726:44:59;;1771:9;1790:4;1797:6;1726:44;:78::i;:::-;1372:439;;;;;;:::o;355:104:5:-;442:10;355:104;:::o;1600:140:61:-;1689:16;;-1:-1:-1;;;;;1678:27:61;;;1689:16;;1678:27;1670:63;;;;;-1:-1:-1;;;1670:63:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;1600:140;:::o;1746:572::-;1817:18;1837:14;1863:37;1903:24;:15;:3;:13;:15::i;:::-;:22;:24::i;:::-;1863:64;;1937:42;1982:22;:10;1993:1;1982:13;;;;;;;;;;;;;;:20;:22::i;:::-;1937:67;;1026:66;2086:19;;2054:27;:15;2070:1;2054:18;;;;;;;;;;;;;;:25;:27::i;:::-;2046:59;2025:157;;;;;-1:-1:-1;;;2025:157:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;2193:20;2216:23;:10;2227:1;2216:13;;;;;;;;;;;;;;:21;:23::i;:::-;2193:46;;2283:7;2272:39;;;;;;;;;;;;;;;-1:-1:-1;2272:39:61;;;;;;;;;;;-1:-1:-1;1746:572:61;-1:-1:-1;;;;;1746:572:61:o;416:223:6:-;573:58;;;-1:-1:-1;;;;;573:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;596:23;573:58;;;538:94;;566:5;;538:27;:94::i;:::-;416:223;;;:::o;645:259::-;828:68;;;-1:-1:-1;;;;;828:68:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;851:27;828:68;;;793:104;;821:5;;793:27;:104::i;:::-;645:259;;;;:::o;698:290:7:-;759:14;;:::i;:::-;807:1;793:4;:11;:15;785:59;;;;;-1:-1:-1;;;785:59:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;953:28:7;;;;;;;;;961:11;;953:28;;921:4;911:15;;;953:28;;;;698:290;;;;:::o;1054:666::-;1114:16;1150:12;1157:4;1150:6;:12::i;:::-;1142:43;;;;;-1:-1:-1;;;1142:43:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1196:13;1212:14;1221:4;1212:8;:14::i;:::-;1196:30;;1236:23;1276:5;1262:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1236:46;;1292:18;1313:24;1325:4;:11;;;1313;:24::i;:::-;1369:8;;1292:45;;-1:-1:-1;1355:22:7;;1347:60;;;;;-1:-1:-1;;;1347:60:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1418:14;1449:27;1464:4;:11;;;1449:14;:27::i;:::-;1435:11;;;;:41;;-1:-1:-1;1486:15:7;;1511:179;1535:5;1531:1;:9;1511:179;;;1571:19;1583:6;1571:11;:19::i;:::-;1561:29;;1616:24;;;;;;;;1624:7;1616:24;;;;1633:6;1616:24;;;1604:6;1611:1;1604:9;;;;;;;;;;;;;;;;;:36;1663:16;;;;1542:3;;1511:179;;;-1:-1:-1;1707:6:7;;1054:666;-1:-1:-1;;;;;;1054:666:7:o;2787:739::-;2847:7;2875:12;2882:4;2875:6;:12::i;:::-;2874:13;2866:52;;;;;-1:-1:-1;;;2866:52:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;2936:8;;2948:2;-1:-1:-1;2936:14:7;2928:48;;;;;-1:-1:-1;;;2928:48:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;2987:18;3008:24;3020:4;:11;;;3008;:24::i;:::-;3064:8;;2987:45;;-1:-1:-1;3050:22:7;;3042:57;;;;;-1:-1:-1;;;3042:57:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;3110:14;3127:27;3142:4;:11;;;3127:14;:27::i;:::-;3178:8;;3246:11;;;;;:20;;3309:13;;3110:44;;-1:-1:-1;3178:17:7;;;;;3309:13;3246:20;3397:11;;3394:2;;;3466:3;3462:2;3458:12;3453:3;3449:22;3441:6;3437:35;3427:45;;3394:2;-1:-1:-1;3513:6:7;2787:739;-1:-1:-1;;;;;2787:739:7:o;4028:532::-;4089:12;4113:18;4134:24;4146:4;:11;;;4134;:24::i;:::-;4190:8;;4113:45;;-1:-1:-1;4176:22:7;;4168:58;;;;;-1:-1:-1;;;4168:58:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;4236:14;4253:27;4268:4;:11;;;4253:14;:27::i;:::-;4305:8;;4236:44;;-1:-1:-1;4305:17:7;;;4291:11;4305:17;4369:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4369:14:7;;4347:36;;4394:15;4463:6;4457:4;4453:17;4442:28;;4490:40;4509:6;4495:4;:11;;;:20;4517:7;4526:3;4490:4;:40::i;1147:870:6:-;1272:5;1296:19;-1:-1:-1;;;;;1296:17:6;;;:19::i;:::-;1288:58;;;;;-1:-1:-1;;;1288:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:12;1431:17;1452:6;-1:-1:-1;;;;;1452:11:6;1464:8;1452:21;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1452:21:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:57;;;;1487:7;1483:528;;;1514:11;;:16;1510:122;;1569:4;1558:24;;;;;;;;;;;;;;;-1:-1:-1;1558:24:6;1550:67;;;;;-1:-1:-1;;;1550:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:528;;;1720:11;;1716:95;;1756:40;;;-1:-1:-1;;;1756:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:95;1938:4;1932:11;1982:4;1975;1971:2;1967:13;1960:27;1824:280:7;1938:11;;;;1999:13;;1884:4;;1991:22;;;;466:4;2037:25;;2033:43;;;2071:5;2064:12;;;;;;2033:43;-1:-1:-1;2093:4:7;;1824:280;-1:-1:-1;;;1824:280:7:o;4668:629::-;4729:7;4920:13;4936:1;4920:17;;4947:15;4979:27;4994:4;:11;;;4979:14;:27::i;:::-;4965:11;;;;5047:8;;4965:41;;;;-1:-1:-1;5033:22:7;5065:203;5082:6;5072:7;:16;5065:203;;;5124:20;5136:7;5124:11;:20::i;:::-;5114:7;:30;5104:40;;5198:6;5187:7;:17;;5179:57;;;;;-1:-1:-1;;;5179:57:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;5250:7;;;;;5065:203;;;-1:-1:-1;5285:5:7;;4668:629;-1:-1:-1;;;4668:629:7:o;5346:1237::-;5512:13;;5405:7;;;;5504:22;;359:4;5550:27;;5546:1006;;;5589:1;5579:11;;5546:1006;;;413:4;5609:26;;5605:947;;;5647:31;;;;-1:-1:-1;5605:947:7;;;466:4;5697:25;;5693:859;;;5791:4;5784:5;5780:16;5870:1;5862:6;5858:14;5848:24;;6009:7;6005:2;6001:16;5996:3;5992:26;5983:6;5977:13;5973:46;6106:1;6097:7;6093:15;6084:7;6080:29;6069:40;;;;5747:376;;;518:4;6143:24;;6139:413;;;6193:29;;;;-1:-1:-1;6139:413:7;;;6306:4;6299:5;6295:16;6350:1;6342:6;6338:14;6328:24;;6421:7;6417:2;6413:16;6408:3;6404:26;6395:6;6389:13;6385:46;6525:1;6516:7;6512:15;6503:7;6499:29;6488:40;;;;6262:280;-1:-1:-1;6569:7:7;5346:1237;-1:-1:-1;;5346:1237:7:o;6635:528::-;6779:13;;6697:7;;6771:22;;359:4;6817:27;;6813:343;;;6853:1;6846:8;;;;;6813:343;413:4;6873:26;;;:86;;-1:-1:-1;466:4:7;6904:26;;;;;:54;;-1:-1:-1;518:4:7;6934:24;;6904:54;6869:287;;;6968:1;6961:8;;;;;6869:287;466:4;6988:25;;6984:172;;;7064:36;;;-1:-1:-1;7057:43:7;;6984:172;7122:34;;;-1:-1:-1;7115:41:7;;7321:742;7432:8;7428:21;;7442:7;;7428:21;7506:198;564:2;7513:17;;7506:198;;7605:10;;7592:24;;564:2;7644:17;;;;7675:18;;;;-1:-1:-1;;7532:17:7;7506:198;;;7888:10;;7959:11;;564:2;7815:16;;;;7809:3;:23;:27;;7900:9;;7884:26;;;7955:22;;8025:21;;;;8012:35;;7855:202::o;913:377:9:-;1229:20;1275:8;;;913:377::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o"
            },
            "methodIdentifiers": {
              "WITHDRAWN_EVENT_SIG()": "206efea4",
              "exitTokens(address,address,bytes)": "8274664f",
              "lockTokens(address,address,address,bytes)": "e375b64e",
              "rootChainManager()": "bd07018d"
            }
          }
        }
      },
      "contracts/token/ERC20/polygon/predicate/PolygonERC20MintBurnPredicate.sol": {
        "IERC20BurnableMintable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "burnFrom(address,uint256)": "79cc6790",
              "mint(address,uint256)": "40c10f19"
            }
          }
        },
        "PolygonERC20MintBurnPredicate": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "rootChainManager_",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "depositor",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "depositReceiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "rootToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "LockedERC20",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "WITHDRAWN_EVENT_SIG",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "rootToken",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "log",
                  "type": "bytes"
                }
              ],
              "name": "exitTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "depositor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "depositReceiver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "rootToken",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "depositData",
                  "type": "bytes"
                }
              ],
              "name": "lockTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "rootChainManager",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50604051610d41380380610d418339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610cdc806100656000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063206efea4146100515780638274664f1461006b578063bd07018d1461012c578063e375b64e14610150575b600080fd5b6100596101e1565b60408051918252519081900360200190f35b61012a6004803603606081101561008157600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156100b557600080fd5b8201836020820111156100c757600080fd5b803590602001918460018302840111640100000000831117156100e957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610205945050505050565b005b61013461029b565b604080516001600160a01b039092168252519081900360200190f35b61012a6004803603608081101561016657600080fd5b6001600160a01b03823581169260208101358216926040820135909216918101906080810160608201356401000000008111156101a257600080fd5b8201836020820111156101b457600080fd5b803590602001918460018302840111640100000000831117156101d657600080fd5b5090925090506102aa565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d581565b6102156102106103f0565b6103f4565b60008061022183610459565b91509150836001600160a01b03166340c10f1983836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b505050505050505050565b6000546001600160a01b031681565b6102b56102106103f0565b6000828260208110156102c757600080fd5b5060408051913580835290519092506001600160a01b038087169288821692918a16917f9b217a401a5ddf7c4d474074aff9958a18d48690d77cc2151c4706aa7348b4019181900360200190a4836001600160a01b03166379cc679087836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561036b57600080fd5b505af115801561037f573d6000803e3d6000fd5b505050506040513d602081101561039557600080fd5b50516103e8576040805162461bcd60e51b815260206004820152601660248201527f5072656469636174653a206275726e206661696c656400000000000000000000604482015290519081900360640190fd5b505050505050565b3390565b6000546001600160a01b03828116911614610456576040805162461bcd60e51b815260206004820152601760248201527f5072656469636174653a206f6e6c79206d616e61676572000000000000000000604482015290519081900360640190fd5b50565b600080600061046f61046a85610571565b6105ed565b905060006104908260018151811061048357fe5b60200260200101516105ed565b90507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d560001b6104d3826000815181106104c657fe5b6020026020010151610785565b14610525576040805162461bcd60e51b815260206004820152601c60248201527f5072656469636174653a20696e76616c6964207369676e617475726500000000604482015290519081900360640190fd5b60006105448360028151811061053757fe5b60200260200101516108e3565b905080806020019051604081101561055b57600080fd5b5080516020909101519097909650945050505050565b610579610c8c565b60008251116105cf576040805162461bcd60e51b815260206004820152601f60248201527f524c505265616465723a20494e56414c49445f42595445535f4c454e47544800604482015290519081900360640190fd5b5060408051808201909152815181526020828101908201525b919050565b60606105f8826109c3565b610649576040805162461bcd60e51b815260206004820152601260248201527f524c503a204954454d5f4e4f545f4c4953540000000000000000000000000000604482015290519081900360640190fd5b6000610654836109ef565b905060008167ffffffffffffffff8111801561066f57600080fd5b506040519080825280602002602001820160405280156106a957816020015b610696610c8c565b81526020019060019003908161068e5790505b50905060006106bb8560200151610a91565b85519091508114610713576040805162461bcd60e51b815260206004820152601960248201527f524c503a204c4953545f4c454e4754485f4d49534d4154434800000000000000604482015290519081900360640190fd5b60006107228660200151610b66565b60208701510190506000805b858110156107795761073f83610a91565b915060405180604001604052808381526020018481525085828151811061076257fe5b60209081029190910101529181019160010161072e565b50929695505050505050565b6000610790826109c3565b156107e2576040805162461bcd60e51b815260206004820152601a60248201527f524c503a204445434f44494e475f4c4953545f41535f55494e54000000000000604482015290519081900360640190fd5b815160211015610839576040805162461bcd60e51b815260206004820152601560248201527f524c503a20494e56414c49445f55494e545f4c454e0000000000000000000000604482015290519081900360640190fd5b60006108488360200151610a91565b835190915081146108a0576040805162461bcd60e51b815260206004820152601660248201527f524c503a2055494e545f4c454e5f4d49534d4154434800000000000000000000604482015290519081900360640190fd5b60006108af8460200151610b66565b845160208087015183018051939450918490039291908310156108d957826020036101000a820491505b5095945050505050565b606060006108f48360200151610a91565b8351909150811461094c576040805162461bcd60e51b815260206004820152601760248201527f524c503a2042595445535f4c454e5f4d49534d41544348000000000000000000604482015290519081900360640190fd5b600061095b8460200151610b66565b845190915081900360008167ffffffffffffffff8111801561097c57600080fd5b506040519080825280601f01601f1916602001820160405280156109a7576020820181803683370190505b50905060008160200190506108d9848860200151018285610c05565b6020810151805160009190821a9060c08210156109e5576000925050506105e8565b5060019392505050565b600080600090506000610a058460200151610b66565b602085015185519181019250015b80821015610a8857610a2482610a91565b8201915080821115610a7d576040805162461bcd60e51b815260206004820152601b60248201527f524c503a204e554d5f4954454d535f4c454e5f4d49534d415443480000000000604482015290519081900360640190fd5b600190920191610a13565b50909392505050565b80516000908190811a6080811015610aac5760019150610b5f565b60b8811015610adf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181019150610b5f565b60c0811015610b0c5760b78103600185019450806020036101000a85510460018201810193505050610b5f565b60f8811015610b3f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4181019150610b5f565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b8051600090811a6080811015610b805760009150506105e8565b60b8811080610b9b575060c08110801590610b9b575060f881105b15610baa5760019150506105e8565b60c0811015610bdc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a0190506105e8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a0190506105e8565b80610c0f57610c87565b5b60208110610c4d5782518252602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001610c10565b8251825160208390036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161782525b505050565b60405180604001604052806000815260200160008152509056fea2646970667358221220b0493a26bab3d515d77efff8ffde140676914556c751e300b0a6571b42c26b7864736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xD41 CODESIZE SUB DUP1 PUSH2 0xD41 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xCDC DUP1 PUSH2 0x65 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 0x206EFEA4 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8274664F EQ PUSH2 0x6B JUMPI DUP1 PUSH4 0xBD07018D EQ PUSH2 0x12C JUMPI DUP1 PUSH4 0xE375B64E EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x1E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x205 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x134 PUSH2 0x29B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2AA JUMP JUMPDEST PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 DUP2 JUMP JUMPDEST PUSH2 0x215 PUSH2 0x210 PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x221 DUP4 PUSH2 0x459 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x40C10F19 DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x290 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x2B5 PUSH2 0x210 PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD SWAP2 CALLDATALOAD DUP1 DUP4 MSTORE SWAP1 MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP3 DUP9 DUP3 AND SWAP3 SWAP2 DUP11 AND SWAP2 PUSH32 0x9B217A401A5DDF7C4D474074AFF9958A18D48690D77CC2151C4706AA7348B401 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x79CC6790 DUP8 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x36B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3E8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5072656469636174653A206275726E206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x456 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5072656469636174653A206F6E6C79206D616E61676572000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x46F PUSH2 0x46A DUP6 PUSH2 0x571 JUMP JUMPDEST PUSH2 0x5ED JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x490 DUP3 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x483 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5ED JUMP JUMPDEST SWAP1 POP PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 PUSH1 0x0 SHL PUSH2 0x4D3 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4C6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x785 JUMP JUMPDEST EQ PUSH2 0x525 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5072656469636174653A20696E76616C6964207369676E617475726500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x544 DUP4 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x537 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x8E3 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x579 PUSH2 0xC8C JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT PUSH2 0x5CF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C505265616465723A20494E56414C49445F42595445535F4C454E47544800 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD SWAP1 DUP3 ADD MSTORE JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5F8 DUP3 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x649 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A204954454D5F4E4F545F4C4953540000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x654 DUP4 PUSH2 0x9EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x66F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x6A9 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x696 PUSH2 0xC8C JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x68E JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH2 0x6BB DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0xA91 JUMP JUMPDEST DUP6 MLOAD SWAP1 SWAP2 POP DUP2 EQ PUSH2 0x713 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A204C4953545F4C454E4754485F4D49534D4154434800000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x722 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0xB66 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD ADD SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x779 JUMPI PUSH2 0x73F DUP4 PUSH2 0xA91 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x762 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP2 DUP2 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x72E JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x790 DUP3 PUSH2 0x9C3 JUMP JUMPDEST ISZERO PUSH2 0x7E2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A204445434F44494E475F4C4953545F41535F55494E54000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x21 LT ISZERO PUSH2 0x839 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A20494E56414C49445F55494E545F4C454E0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x848 DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0xA91 JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP DUP2 EQ PUSH2 0x8A0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A2055494E545F4C454E5F4D49534D4154434800000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8AF DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0xB66 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x20 DUP1 DUP8 ADD MLOAD DUP4 ADD DUP1 MLOAD SWAP4 SWAP5 POP SWAP2 DUP5 SWAP1 SUB SWAP3 SWAP2 SWAP1 DUP4 LT ISZERO PUSH2 0x8D9 JUMPI DUP3 PUSH1 0x20 SUB PUSH2 0x100 EXP DUP3 DIV SWAP2 POP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x8F4 DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0xA91 JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP DUP2 EQ PUSH2 0x94C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A2042595445535F4C454E5F4D49534D41544348000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x95B DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0xB66 JUMP JUMPDEST DUP5 MLOAD SWAP1 SWAP2 POP DUP2 SWAP1 SUB PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x97C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x9A7 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x20 ADD SWAP1 POP PUSH2 0x8D9 DUP5 DUP9 PUSH1 0x20 ADD MLOAD ADD DUP3 DUP6 PUSH2 0xC05 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP1 MLOAD PUSH1 0x0 SWAP2 SWAP1 DUP3 BYTE SWAP1 PUSH1 0xC0 DUP3 LT ISZERO PUSH2 0x9E5 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x5E8 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH1 0x0 PUSH2 0xA05 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0xB66 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD DUP6 MLOAD SWAP2 DUP2 ADD SWAP3 POP ADD JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0xA88 JUMPI PUSH2 0xA24 DUP3 PUSH2 0xA91 JUMP JUMPDEST DUP3 ADD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xA7D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A204E554D5F4954454D535F4C454E5F4D49534D415443480000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0xA13 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 BYTE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xAAC JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0xB5F JUMP JUMPDEST PUSH1 0xB8 DUP2 LT ISZERO PUSH2 0xADF JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 DUP2 ADD SWAP2 POP PUSH2 0xB5F JUMP JUMPDEST PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xB0C JUMPI PUSH1 0xB7 DUP2 SUB PUSH1 0x1 DUP6 ADD SWAP5 POP DUP1 PUSH1 0x20 SUB PUSH2 0x100 EXP DUP6 MLOAD DIV PUSH1 0x1 DUP3 ADD DUP2 ADD SWAP4 POP POP POP PUSH2 0xB5F JUMP JUMPDEST PUSH1 0xF8 DUP2 LT ISZERO PUSH2 0xB3F JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 DUP2 ADD SWAP2 POP PUSH2 0xB5F JUMP JUMPDEST PUSH1 0xF7 DUP2 SUB PUSH1 0x1 DUP6 ADD SWAP5 POP DUP1 PUSH1 0x20 SUB PUSH2 0x100 EXP DUP6 MLOAD DIV PUSH1 0x1 DUP3 ADD DUP2 ADD SWAP4 POP POP POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 DUP2 BYTE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xB80 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x5E8 JUMP JUMPDEST PUSH1 0xB8 DUP2 LT DUP1 PUSH2 0xB9B JUMPI POP PUSH1 0xC0 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0xB9B JUMPI POP PUSH1 0xF8 DUP2 LT JUMPDEST ISZERO PUSH2 0xBAA JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0x5E8 JUMP JUMPDEST PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xBDC JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A ADD SWAP1 POP PUSH2 0x5E8 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A ADD SWAP1 POP PUSH2 0x5E8 JUMP JUMPDEST DUP1 PUSH2 0xC0F JUMPI PUSH2 0xC87 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0xC4D JUMPI DUP3 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD PUSH2 0xC10 JUMP JUMPDEST DUP3 MLOAD DUP3 MLOAD PUSH1 0x20 DUP4 SWAP1 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR DUP3 MSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 0x49 GASPRICE 0x26 0xBA 0xB3 0xD5 ISZERO 0xD7 PUSH31 0xFFF8FFDE140676914556C751E300B0A6571B42C26B7864736F6C6343000706 STOP CALLER ",
              "sourceMap": "581:1791:60:-:0;;;717:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;717:86:60;1422:16:61;:36;;-1:-1:-1;;;;;1422:36:61;;;-1:-1:-1;;;;;;1422:36:61;;;;;;;;;581:1791:60;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c8063206efea4146100515780638274664f1461006b578063bd07018d1461012c578063e375b64e14610150575b600080fd5b6100596101e1565b60408051918252519081900360200190f35b61012a6004803603606081101561008157600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156100b557600080fd5b8201836020820111156100c757600080fd5b803590602001918460018302840111640100000000831117156100e957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610205945050505050565b005b61013461029b565b604080516001600160a01b039092168252519081900360200190f35b61012a6004803603608081101561016657600080fd5b6001600160a01b03823581169260208101358216926040820135909216918101906080810160608201356401000000008111156101a257600080fd5b8201836020820111156101b457600080fd5b803590602001918460018302840111640100000000831117156101d657600080fd5b5090925090506102aa565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d581565b6102156102106103f0565b6103f4565b60008061022183610459565b91509150836001600160a01b03166340c10f1983836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b505050505050505050565b6000546001600160a01b031681565b6102b56102106103f0565b6000828260208110156102c757600080fd5b5060408051913580835290519092506001600160a01b038087169288821692918a16917f9b217a401a5ddf7c4d474074aff9958a18d48690d77cc2151c4706aa7348b4019181900360200190a4836001600160a01b03166379cc679087836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561036b57600080fd5b505af115801561037f573d6000803e3d6000fd5b505050506040513d602081101561039557600080fd5b50516103e8576040805162461bcd60e51b815260206004820152601660248201527f5072656469636174653a206275726e206661696c656400000000000000000000604482015290519081900360640190fd5b505050505050565b3390565b6000546001600160a01b03828116911614610456576040805162461bcd60e51b815260206004820152601760248201527f5072656469636174653a206f6e6c79206d616e61676572000000000000000000604482015290519081900360640190fd5b50565b600080600061046f61046a85610571565b6105ed565b905060006104908260018151811061048357fe5b60200260200101516105ed565b90507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d560001b6104d3826000815181106104c657fe5b6020026020010151610785565b14610525576040805162461bcd60e51b815260206004820152601c60248201527f5072656469636174653a20696e76616c6964207369676e617475726500000000604482015290519081900360640190fd5b60006105448360028151811061053757fe5b60200260200101516108e3565b905080806020019051604081101561055b57600080fd5b5080516020909101519097909650945050505050565b610579610c8c565b60008251116105cf576040805162461bcd60e51b815260206004820152601f60248201527f524c505265616465723a20494e56414c49445f42595445535f4c454e47544800604482015290519081900360640190fd5b5060408051808201909152815181526020828101908201525b919050565b60606105f8826109c3565b610649576040805162461bcd60e51b815260206004820152601260248201527f524c503a204954454d5f4e4f545f4c4953540000000000000000000000000000604482015290519081900360640190fd5b6000610654836109ef565b905060008167ffffffffffffffff8111801561066f57600080fd5b506040519080825280602002602001820160405280156106a957816020015b610696610c8c565b81526020019060019003908161068e5790505b50905060006106bb8560200151610a91565b85519091508114610713576040805162461bcd60e51b815260206004820152601960248201527f524c503a204c4953545f4c454e4754485f4d49534d4154434800000000000000604482015290519081900360640190fd5b60006107228660200151610b66565b60208701510190506000805b858110156107795761073f83610a91565b915060405180604001604052808381526020018481525085828151811061076257fe5b60209081029190910101529181019160010161072e565b50929695505050505050565b6000610790826109c3565b156107e2576040805162461bcd60e51b815260206004820152601a60248201527f524c503a204445434f44494e475f4c4953545f41535f55494e54000000000000604482015290519081900360640190fd5b815160211015610839576040805162461bcd60e51b815260206004820152601560248201527f524c503a20494e56414c49445f55494e545f4c454e0000000000000000000000604482015290519081900360640190fd5b60006108488360200151610a91565b835190915081146108a0576040805162461bcd60e51b815260206004820152601660248201527f524c503a2055494e545f4c454e5f4d49534d4154434800000000000000000000604482015290519081900360640190fd5b60006108af8460200151610b66565b845160208087015183018051939450918490039291908310156108d957826020036101000a820491505b5095945050505050565b606060006108f48360200151610a91565b8351909150811461094c576040805162461bcd60e51b815260206004820152601760248201527f524c503a2042595445535f4c454e5f4d49534d41544348000000000000000000604482015290519081900360640190fd5b600061095b8460200151610b66565b845190915081900360008167ffffffffffffffff8111801561097c57600080fd5b506040519080825280601f01601f1916602001820160405280156109a7576020820181803683370190505b50905060008160200190506108d9848860200151018285610c05565b6020810151805160009190821a9060c08210156109e5576000925050506105e8565b5060019392505050565b600080600090506000610a058460200151610b66565b602085015185519181019250015b80821015610a8857610a2482610a91565b8201915080821115610a7d576040805162461bcd60e51b815260206004820152601b60248201527f524c503a204e554d5f4954454d535f4c454e5f4d49534d415443480000000000604482015290519081900360640190fd5b600190920191610a13565b50909392505050565b80516000908190811a6080811015610aac5760019150610b5f565b60b8811015610adf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181019150610b5f565b60c0811015610b0c5760b78103600185019450806020036101000a85510460018201810193505050610b5f565b60f8811015610b3f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4181019150610b5f565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b8051600090811a6080811015610b805760009150506105e8565b60b8811080610b9b575060c08110801590610b9b575060f881105b15610baa5760019150506105e8565b60c0811015610bdc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a0190506105e8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a0190506105e8565b80610c0f57610c87565b5b60208110610c4d5782518252602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001610c10565b8251825160208390036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161782525b505050565b60405180604001604052806000815260200160008152509056fea2646970667358221220b0493a26bab3d515d77efff8ffde140676914556c751e300b0a6571b42c26b7864736f6c63430007060033",
              "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 0x206EFEA4 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8274664F EQ PUSH2 0x6B JUMPI DUP1 PUSH4 0xBD07018D EQ PUSH2 0x12C JUMPI DUP1 PUSH4 0xE375B64E EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x1E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x205 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x134 PUSH2 0x29B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2AA JUMP JUMPDEST PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 DUP2 JUMP JUMPDEST PUSH2 0x215 PUSH2 0x210 PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x221 DUP4 PUSH2 0x459 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x40C10F19 DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x290 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x2B5 PUSH2 0x210 PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD SWAP2 CALLDATALOAD DUP1 DUP4 MSTORE SWAP1 MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP3 DUP9 DUP3 AND SWAP3 SWAP2 DUP11 AND SWAP2 PUSH32 0x9B217A401A5DDF7C4D474074AFF9958A18D48690D77CC2151C4706AA7348B401 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x79CC6790 DUP8 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x36B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3E8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5072656469636174653A206275726E206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x456 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5072656469636174653A206F6E6C79206D616E61676572000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x46F PUSH2 0x46A DUP6 PUSH2 0x571 JUMP JUMPDEST PUSH2 0x5ED JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x490 DUP3 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x483 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5ED JUMP JUMPDEST SWAP1 POP PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 PUSH1 0x0 SHL PUSH2 0x4D3 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4C6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x785 JUMP JUMPDEST EQ PUSH2 0x525 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5072656469636174653A20696E76616C6964207369676E617475726500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x544 DUP4 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x537 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x8E3 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x579 PUSH2 0xC8C JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT PUSH2 0x5CF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C505265616465723A20494E56414C49445F42595445535F4C454E47544800 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD SWAP1 DUP3 ADD MSTORE JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5F8 DUP3 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x649 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A204954454D5F4E4F545F4C4953540000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x654 DUP4 PUSH2 0x9EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x66F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x6A9 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x696 PUSH2 0xC8C JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x68E JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH2 0x6BB DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0xA91 JUMP JUMPDEST DUP6 MLOAD SWAP1 SWAP2 POP DUP2 EQ PUSH2 0x713 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A204C4953545F4C454E4754485F4D49534D4154434800000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x722 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0xB66 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD ADD SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x779 JUMPI PUSH2 0x73F DUP4 PUSH2 0xA91 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x762 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP2 DUP2 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x72E JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x790 DUP3 PUSH2 0x9C3 JUMP JUMPDEST ISZERO PUSH2 0x7E2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A204445434F44494E475F4C4953545F41535F55494E54000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x21 LT ISZERO PUSH2 0x839 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A20494E56414C49445F55494E545F4C454E0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x848 DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0xA91 JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP DUP2 EQ PUSH2 0x8A0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A2055494E545F4C454E5F4D49534D4154434800000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8AF DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0xB66 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x20 DUP1 DUP8 ADD MLOAD DUP4 ADD DUP1 MLOAD SWAP4 SWAP5 POP SWAP2 DUP5 SWAP1 SUB SWAP3 SWAP2 SWAP1 DUP4 LT ISZERO PUSH2 0x8D9 JUMPI DUP3 PUSH1 0x20 SUB PUSH2 0x100 EXP DUP3 DIV SWAP2 POP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x8F4 DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0xA91 JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP DUP2 EQ PUSH2 0x94C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A2042595445535F4C454E5F4D49534D41544348000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x95B DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0xB66 JUMP JUMPDEST DUP5 MLOAD SWAP1 SWAP2 POP DUP2 SWAP1 SUB PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x97C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x9A7 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x20 ADD SWAP1 POP PUSH2 0x8D9 DUP5 DUP9 PUSH1 0x20 ADD MLOAD ADD DUP3 DUP6 PUSH2 0xC05 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP1 MLOAD PUSH1 0x0 SWAP2 SWAP1 DUP3 BYTE SWAP1 PUSH1 0xC0 DUP3 LT ISZERO PUSH2 0x9E5 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x5E8 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH1 0x0 PUSH2 0xA05 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0xB66 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD DUP6 MLOAD SWAP2 DUP2 ADD SWAP3 POP ADD JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0xA88 JUMPI PUSH2 0xA24 DUP3 PUSH2 0xA91 JUMP JUMPDEST DUP3 ADD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xA7D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x524C503A204E554D5F4954454D535F4C454E5F4D49534D415443480000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0xA13 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 BYTE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xAAC JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0xB5F JUMP JUMPDEST PUSH1 0xB8 DUP2 LT ISZERO PUSH2 0xADF JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 DUP2 ADD SWAP2 POP PUSH2 0xB5F JUMP JUMPDEST PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xB0C JUMPI PUSH1 0xB7 DUP2 SUB PUSH1 0x1 DUP6 ADD SWAP5 POP DUP1 PUSH1 0x20 SUB PUSH2 0x100 EXP DUP6 MLOAD DIV PUSH1 0x1 DUP3 ADD DUP2 ADD SWAP4 POP POP POP PUSH2 0xB5F JUMP JUMPDEST PUSH1 0xF8 DUP2 LT ISZERO PUSH2 0xB3F JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 DUP2 ADD SWAP2 POP PUSH2 0xB5F JUMP JUMPDEST PUSH1 0xF7 DUP2 SUB PUSH1 0x1 DUP6 ADD SWAP5 POP DUP1 PUSH1 0x20 SUB PUSH2 0x100 EXP DUP6 MLOAD DIV PUSH1 0x1 DUP3 ADD DUP2 ADD SWAP4 POP POP POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 DUP2 BYTE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xB80 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x5E8 JUMP JUMPDEST PUSH1 0xB8 DUP2 LT DUP1 PUSH2 0xB9B JUMPI POP PUSH1 0xC0 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0xB9B JUMPI POP PUSH1 0xF8 DUP2 LT JUMPDEST ISZERO PUSH2 0xBAA JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0x5E8 JUMP JUMPDEST PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xBDC JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A ADD SWAP1 POP PUSH2 0x5E8 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A ADD SWAP1 POP PUSH2 0x5E8 JUMP JUMPDEST DUP1 PUSH2 0xC0F JUMPI PUSH2 0xC87 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0xC4D JUMPI DUP3 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD PUSH2 0xC10 JUMP JUMPDEST DUP3 MLOAD DUP3 MLOAD PUSH1 0x20 DUP4 SWAP1 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR DUP3 MSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 0x49 GASPRICE 0x26 0xBA 0xB3 0xD5 ISZERO 0xD7 PUSH31 0xFFF8FFDE140676914556C751E300B0A6571B42C26B7864736F6C6343000706 STOP CALLER ",
              "sourceMap": "581:1791:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;980:112:61;;;:::i;:::-;;;;;;;;;;;;;;;;2066:304:60;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2066:304:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2066:304:60;;-1:-1:-1;2066:304:60;;-1:-1:-1;;;;;2066:304:60:i;:::-;;1218:31:61;;;:::i;:::-;;;;-1:-1:-1;;;;;1218:31:61;;;;;;;;;;;;;;1313:457:60;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1313:457:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1313:457:60;;-1:-1:-1;1313:457:60;-1:-1:-1;1313:457:60;:::i;980:112:61:-;1026:66;980:112;:::o;2066:304:60:-;2188:33;2208:12;:10;:12::i;:::-;2188:19;:33::i;:::-;2232:18;2252:14;2270:25;2291:3;2270:20;:25::i;:::-;2231:64;;;;2328:9;-1:-1:-1;;;;;2305:38:60;;2344:10;2356:6;2305:58;;;;;;;;;;;;;-1:-1:-1;;;;;2305:58:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2066:304;;;;;:::o;1218:31:61:-;;;-1:-1:-1;;;;;1218:31:61;;:::o;1313:457:60:-;1490:33;1510:12;:10;:12::i;1490:33::-;1533:14;1561:11;;1550:34;;;;;;;;;;-1:-1:-1;1599:58:60;;;1550:34;;1599:58;;;;;1550:34;;-1:-1:-1;;;;;;1599:58:60;;;;;;;;;;;;;;;;;1550:34;1599:58;;;1698:9;-1:-1:-1;;;;;1675:42:60;;1718:9;1729:6;1675:61;;;;;;;;;;;;;-1:-1:-1;;;;;1675:61:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1675:61:60;1667:96;;;;;-1:-1:-1;;;1667:96:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;1313:457;;;;;;:::o;355:104:5:-;442:10;355:104;:::o;1600:140:61:-;1689:16;;-1:-1:-1;;;;;1678:27:61;;;1689:16;;1678:27;1670:63;;;;;-1:-1:-1;;;1670:63:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;1600:140;:::o;1746:572::-;1817:18;1837:14;1863:37;1903:24;:15;:3;:13;:15::i;:::-;:22;:24::i;:::-;1863:64;;1937:42;1982:22;:10;1993:1;1982:13;;;;;;;;;;;;;;:20;:22::i;:::-;1937:67;;1026:66;2086:19;;2054:27;:15;2070:1;2054:18;;;;;;;;;;;;;;:25;:27::i;:::-;2046:59;2025:157;;;;;-1:-1:-1;;;2025:157:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;2193:20;2216:23;:10;2227:1;2216:13;;;;;;;;;;;;;;:21;:23::i;:::-;2193:46;;2283:7;2272:39;;;;;;;;;;;;;;;-1:-1:-1;2272:39:61;;;;;;;;;;;-1:-1:-1;1746:572:61;-1:-1:-1;;;;;1746:572:61:o;698:290:7:-;759:14;;:::i;:::-;807:1;793:4;:11;:15;785:59;;;;;-1:-1:-1;;;785:59:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;953:28:7;;;;;;;;;961:11;;953:28;;921:4;911:15;;;953:28;;;;698:290;;;;:::o;1054:666::-;1114:16;1150:12;1157:4;1150:6;:12::i;:::-;1142:43;;;;;-1:-1:-1;;;1142:43:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1196:13;1212:14;1221:4;1212:8;:14::i;:::-;1196:30;;1236:23;1276:5;1262:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1236:46;;1292:18;1313:24;1325:4;:11;;;1313;:24::i;:::-;1369:8;;1292:45;;-1:-1:-1;1355:22:7;;1347:60;;;;;-1:-1:-1;;;1347:60:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1418:14;1449:27;1464:4;:11;;;1449:14;:27::i;:::-;1435:11;;;;:41;;-1:-1:-1;1486:15:7;;1511:179;1535:5;1531:1;:9;1511:179;;;1571:19;1583:6;1571:11;:19::i;:::-;1561:29;;1616:24;;;;;;;;1624:7;1616:24;;;;1633:6;1616:24;;;1604:6;1611:1;1604:9;;;;;;;;;;;;;;;;;:36;1663:16;;;;1542:3;;1511:179;;;-1:-1:-1;1707:6:7;;1054:666;-1:-1:-1;;;;;;1054:666:7:o;2787:739::-;2847:7;2875:12;2882:4;2875:6;:12::i;:::-;2874:13;2866:52;;;;;-1:-1:-1;;;2866:52:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;2936:8;;2948:2;-1:-1:-1;2936:14:7;2928:48;;;;;-1:-1:-1;;;2928:48:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;2987:18;3008:24;3020:4;:11;;;3008;:24::i;:::-;3064:8;;2987:45;;-1:-1:-1;3050:22:7;;3042:57;;;;;-1:-1:-1;;;3042:57:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;3110:14;3127:27;3142:4;:11;;;3127:14;:27::i;:::-;3178:8;;3246:11;;;;;:20;;3309:13;;3110:44;;-1:-1:-1;3178:17:7;;;;;3309:13;3246:20;3397:11;;3394:2;;;3466:3;3462:2;3458:12;3453:3;3449:22;3441:6;3437:35;3427:45;;3394:2;-1:-1:-1;3513:6:7;2787:739;-1:-1:-1;;;;;2787:739:7:o;4028:532::-;4089:12;4113:18;4134:24;4146:4;:11;;;4134;:24::i;:::-;4190:8;;4113:45;;-1:-1:-1;4176:22:7;;4168:58;;;;;-1:-1:-1;;;4168:58:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;4236:14;4253:27;4268:4;:11;;;4253:14;:27::i;:::-;4305:8;;4236:44;;-1:-1:-1;4305:17:7;;;4291:11;4305:17;4369:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4369:14:7;;4347:36;;4394:15;4463:6;4457:4;4453:17;4442:28;;4490:40;4509:6;4495:4;:11;;;:20;4517:7;4526:3;4490:4;:40::i;1824:280::-;1938:11;;;;1999:13;;1884:4;;1991:22;;;;466:4;2037:25;;2033:43;;;2071:5;2064:12;;;;;;2033:43;-1:-1:-1;2093:4:7;;1824:280;-1:-1:-1;;;1824:280:7:o;4668:629::-;4729:7;4920:13;4936:1;4920:17;;4947:15;4979:27;4994:4;:11;;;4979:14;:27::i;:::-;4965:11;;;;5047:8;;4965:41;;;;-1:-1:-1;5033:22:7;5065:203;5082:6;5072:7;:16;5065:203;;;5124:20;5136:7;5124:11;:20::i;:::-;5114:7;:30;5104:40;;5198:6;5187:7;:17;;5179:57;;;;;-1:-1:-1;;;5179:57:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;5250:7;;;;;5065:203;;;-1:-1:-1;5285:5:7;;4668:629;-1:-1:-1;;;4668:629:7:o;5346:1237::-;5512:13;;5405:7;;;;5504:22;;359:4;5550:27;;5546:1006;;;5589:1;5579:11;;5546:1006;;;413:4;5609:26;;5605:947;;;5647:31;;;;-1:-1:-1;5605:947:7;;;466:4;5697:25;;5693:859;;;5791:4;5784:5;5780:16;5870:1;5862:6;5858:14;5848:24;;6009:7;6005:2;6001:16;5996:3;5992:26;5983:6;5977:13;5973:46;6106:1;6097:7;6093:15;6084:7;6080:29;6069:40;;;;5747:376;;;518:4;6143:24;;6139:413;;;6193:29;;;;-1:-1:-1;6139:413:7;;;6306:4;6299:5;6295:16;6350:1;6342:6;6338:14;6328:24;;6421:7;6417:2;6413:16;6408:3;6404:26;6395:6;6389:13;6385:46;6525:1;6516:7;6512:15;6503:7;6499:29;6488:40;;;;6262:280;-1:-1:-1;6569:7:7;5346:1237;-1:-1:-1;;5346:1237:7:o;6635:528::-;6779:13;;6697:7;;6771:22;;359:4;6817:27;;6813:343;;;6853:1;6846:8;;;;;6813:343;413:4;6873:26;;;:86;;-1:-1:-1;466:4:7;6904:26;;;;;:54;;-1:-1:-1;518:4:7;6934:24;;6904:54;6869:287;;;6968:1;6961:8;;;;;6869:287;466:4;6988:25;;6984:172;;;7064:36;;;-1:-1:-1;7057:43:7;;6984:172;7122:34;;;-1:-1:-1;7115:41:7;;7321:742;7432:8;7428:21;;7442:7;;7428:21;7506:198;564:2;7513:17;;7506:198;;7605:10;;7592:24;;564:2;7644:17;;;;7675:18;;;;7532:17;;7506:198;;;7888:10;;7959:11;;564:2;7815:16;;;7809:3;:23;:27;;7900:9;;7884:26;;;7955:22;;8025:21;8012:35;;7855:202;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o"
            },
            "methodIdentifiers": {
              "WITHDRAWN_EVENT_SIG()": "206efea4",
              "exitTokens(address,address,bytes)": "8274664f",
              "lockTokens(address,address,address,bytes)": "e375b64e",
              "rootChainManager()": "bd07018d"
            }
          }
        }
      },
      "contracts/token/ERC20/polygon/predicate/PolygonERC20PredicateBase.sol": {
        "PolygonERC20PredicateBase": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "depositor",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "depositReceiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "rootToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "LockedERC20",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "WITHDRAWN_EVENT_SIG",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "rootToken",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "logRLPList",
                  "type": "bytes"
                }
              ],
              "name": "exitTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "depositor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "depositReceiver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "rootToken",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "depositData",
                  "type": "bytes"
                }
              ],
              "name": "lockTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "rootChainManager",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "WITHDRAWN_EVENT_SIG()": "206efea4",
              "exitTokens(address,address,bytes)": "8274664f",
              "lockTokens(address,address,address,bytes)": "e375b64e",
              "rootChainManager()": "bd07018d"
            }
          }
        }
      },
      "contracts/token/ERC721/ERC721.sol": {
        "ERC721": {
          "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": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "batchTransferFrom(address,address,uint256[])": "f3993d11",
              "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"
            }
          }
        }
      },
      "contracts/token/ERC721/ERC721Burnable.sol": {
        "ERC721Burnable": {
          "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": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "batchBurnFrom(address,uint256[])": "f2472965",
              "batchTransferFrom(address,address,uint256[])": "f3993d11",
              "burnFrom(address,uint256)": "79cc6790",
              "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"
            }
          }
        }
      },
      "contracts/token/ERC721/ERC721Receiver.sol": {
        "ERC721Receiver": {
          "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"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "onERC721Received(address,address,uint256,bytes)": "150b7a02",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "contracts/token/ERC721/ERC721Simple.sol": {
        "ERC721Simple": {
          "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": [
                {
                  "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": [
                {
                  "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610d78806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80636352211e11610076578063a22cb4651161005b578063a22cb4651461023e578063b88d4fde1461026c578063e985e9c514610332576100be565b80636352211e146101e957806370a0823114610206576100be565b8063095ea7b3116100a7578063095ea7b31461014f57806323b872dd1461017d57806342842e0e146101b3576100be565b806301ffc9a7146100c3578063081812fc14610116575b600080fd5b610102600480360360208110156100d957600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610360565b604080519115158252519081900360200190f35b6101336004803603602081101561012c57600080fd5b50356103fb565b604080516001600160a01b039092168252519081900360200190f35b61017b6004803603604081101561016557600080fd5b506001600160a01b03813516906020013561049a565b005b61017b6004803603606081101561019357600080fd5b506001600160a01b038135811691602081013590911690604001356106a1565b61017b600480360360608110156101c957600080fd5b506001600160a01b038135811691602081013590911690604001356106c3565b610133600480360360208110156101ff57600080fd5b50356106e0565b61022c6004803603602081101561021c57600080fd5b50356001600160a01b031661074a565b60408051918252519081900360200190f35b61017b6004803603604081101561025457600080fd5b506001600160a01b03813516906020013515156107c3565b61017b6004803603608081101561028257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102bd57600080fd5b8201836020820111156102cf57600080fd5b803590602001918460018302840111640100000000831117156102f157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506108c0945050505050565b6101026004803603604081101561034857600080fd5b506001600160a01b03813581169160200135166108d4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806103f357507fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000145b90505b919050565b6000818152600160205260408120546001600160a01b038116610465576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b600160a01b8116156104905750506000818152600360205260409020546001600160a01b03166103f6565b60009150506103f6565b600081815260016020526040902054806104fb576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b806001600160a01b03848116908216141561055d576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b61056e81610569610900565b610904565b6105bf576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b6001600160a01b0384166105f957600160a01b8216156105f45760008381526001602052604090206001600160a01b03821690555b61065a565b600160a01b82178083146106195760008481526001602052604090208190555b50600083815260036020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b6106be838383604051806020016040528060008152506000610950565b505050565b6106be838383604051806020016040528060008152506001610950565b6000818152600160205260408120546001600160a01b0381166103f3576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b60006001600160a01b0382166107a7576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b506001600160a01b031660009081526002602052604090205490565b60006107cd610900565b9050806001600160a01b0316836001600160a01b03161415610836576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b6001600160a01b038181166000818152602081815260408083209488168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b6108ce848484846001610950565b50505050565b6001600160a01b0391821660009081526020818152604080832093909416825291909152205460ff1690565b3390565b6000816001600160a01b0316836001600160a01b0316148061094957506001600160a01b038084166000908152602081815260408083209386168352929052205460ff165b9392505050565b6001600160a01b0384166109ab576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b60006109b5610900565b905060006109c38783610904565b6000868152600160205260409020549091506001600160a01b0388811690821614610a35576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a206e6f6e2d6f776e6564204e46540000000000000000000000604482015290519081900360640190fd5b81610ac657600160a01b811615801590610a7557506000868152600360205260409020546001600160a01b0316610a6a610900565b6001600160a01b0316145b610ac6576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b60008681526001602052604090206001600160a01b0380891691829055891614610b38576001600160a01b0380891660009081526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918916815220805460010190555b85876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4838015610b935750610b93876001600160a01b0316610d3c565b15610d32577f150b7a02000000000000000000000000000000000000000000000000000000006001600160a01b03881663150b7a02610bd0610900565b8b8a8a6040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610c43578181015183820152602001610c2b565b50505050905090810190601f168015610c705780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c9257600080fd5b505af1158015610ca6573d6000803e3d6000fd5b505050506040513d6020811015610cbc57600080fd5b50517fffffffff000000000000000000000000000000000000000000000000000000001614610d32576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220726566757365640000000000000000604482015290519081900360640190fd5b5050505050505050565b3b15159056fea26469706673582212202a52a652009275f528e8938b2daf5b0c3ffeeb6cbd7ec63fd47e0223884527e864736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD78 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 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x23E JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x332 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x206 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x17D JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x1B3 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x116 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x360 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x133 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3FB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x165 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x49A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x17B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x6A1 JUMP JUMPDEST PUSH2 0x17B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x6C3 JUMP JUMPDEST PUSH2 0x133 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6E0 JUMP JUMPDEST PUSH2 0x22C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x74A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x7C3 JUMP JUMPDEST PUSH2 0x17B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x8C0 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x102 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x348 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x8D4 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x3F3 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x465 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO PUSH2 0x490 JUMPI POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3F6 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x3F6 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x4FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP1 DUP3 AND EQ ISZERO PUSH2 0x55D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x56E DUP2 PUSH2 0x569 PUSH2 0x900 JUMP JUMPDEST PUSH2 0x904 JUMP JUMPDEST PUSH2 0x5BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x5F9 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SSTORE JUMPDEST PUSH2 0x65A JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0x619 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE JUMPDEST DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x6BE DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x950 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x6BE DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x950 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3F3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x7A7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207A65726F2061646472657373000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7CD PUSH2 0x900 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x836 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x8CE DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x950 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 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 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x949 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x9AB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F207A65726F0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9B5 PUSH2 0x900 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x9C3 DUP8 DUP4 PUSH2 0x904 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0xA35 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6F776E6564204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0xAC6 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xA75 JUMPI POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA6A PUSH2 0x900 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xAC6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP2 DUP3 SWAP1 SSTORE DUP10 AND EQ PUSH2 0xB38 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SSTORE SWAP2 DUP10 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST DUP6 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP4 DUP1 ISZERO PUSH2 0xB93 JUMPI POP PUSH2 0xB93 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD3C JUMP JUMPDEST ISZERO PUSH2 0xD32 JUMPI PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH4 0x150B7A02 PUSH2 0xBD0 PUSH2 0x900 JUMP JUMPDEST DUP12 DUP11 DUP11 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC43 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC2B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC70 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ PUSH2 0xD32 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220726566757365640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2A MSTORE 0xA6 MSTORE STOP SWAP3 PUSH22 0xF528E8938B2DAF5B0C3FFEEB6CBD7EC63FD47E022388 GASLIMIT 0x27 0xE8 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "631:7129:65:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100be5760003560e01c80636352211e11610076578063a22cb4651161005b578063a22cb4651461023e578063b88d4fde1461026c578063e985e9c514610332576100be565b80636352211e146101e957806370a0823114610206576100be565b8063095ea7b3116100a7578063095ea7b31461014f57806323b872dd1461017d57806342842e0e146101b3576100be565b806301ffc9a7146100c3578063081812fc14610116575b600080fd5b610102600480360360208110156100d957600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610360565b604080519115158252519081900360200190f35b6101336004803603602081101561012c57600080fd5b50356103fb565b604080516001600160a01b039092168252519081900360200190f35b61017b6004803603604081101561016557600080fd5b506001600160a01b03813516906020013561049a565b005b61017b6004803603606081101561019357600080fd5b506001600160a01b038135811691602081013590911690604001356106a1565b61017b600480360360608110156101c957600080fd5b506001600160a01b038135811691602081013590911690604001356106c3565b610133600480360360208110156101ff57600080fd5b50356106e0565b61022c6004803603602081101561021c57600080fd5b50356001600160a01b031661074a565b60408051918252519081900360200190f35b61017b6004803603604081101561025457600080fd5b506001600160a01b03813516906020013515156107c3565b61017b6004803603608081101561028257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102bd57600080fd5b8201836020820111156102cf57600080fd5b803590602001918460018302840111640100000000831117156102f157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506108c0945050505050565b6101026004803603604081101561034857600080fd5b506001600160a01b03813581169160200135166108d4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806103f357507fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000145b90505b919050565b6000818152600160205260408120546001600160a01b038116610465576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b600160a01b8116156104905750506000818152600360205260409020546001600160a01b03166103f6565b60009150506103f6565b600081815260016020526040902054806104fb576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b806001600160a01b03848116908216141561055d576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b61056e81610569610900565b610904565b6105bf576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b6001600160a01b0384166105f957600160a01b8216156105f45760008381526001602052604090206001600160a01b03821690555b61065a565b600160a01b82178083146106195760008481526001602052604090208190555b50600083815260036020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b6106be838383604051806020016040528060008152506000610950565b505050565b6106be838383604051806020016040528060008152506001610950565b6000818152600160205260408120546001600160a01b0381166103f3576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b60006001600160a01b0382166107a7576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b506001600160a01b031660009081526002602052604090205490565b60006107cd610900565b9050806001600160a01b0316836001600160a01b03161415610836576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b6001600160a01b038181166000818152602081815260408083209488168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b6108ce848484846001610950565b50505050565b6001600160a01b0391821660009081526020818152604080832093909416825291909152205460ff1690565b3390565b6000816001600160a01b0316836001600160a01b0316148061094957506001600160a01b038084166000908152602081815260408083209386168352929052205460ff165b9392505050565b6001600160a01b0384166109ab576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b60006109b5610900565b905060006109c38783610904565b6000868152600160205260409020549091506001600160a01b0388811690821614610a35576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a206e6f6e2d6f776e6564204e46540000000000000000000000604482015290519081900360640190fd5b81610ac657600160a01b811615801590610a7557506000868152600360205260409020546001600160a01b0316610a6a610900565b6001600160a01b0316145b610ac6576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b60008681526001602052604090206001600160a01b0380891691829055891614610b38576001600160a01b0380891660009081526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918916815220805460010190555b85876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4838015610b935750610b93876001600160a01b0316610d3c565b15610d32577f150b7a02000000000000000000000000000000000000000000000000000000006001600160a01b03881663150b7a02610bd0610900565b8b8a8a6040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610c43578181015183820152602001610c2b565b50505050905090810190601f168015610c705780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c9257600080fd5b505af1158015610ca6573d6000803e3d6000fd5b505050506040513d6020811015610cbc57600080fd5b50517fffffffff000000000000000000000000000000000000000000000000000000001614610d32576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220726566757365640000000000000000604482015290519081900360640190fd5b5050505050505050565b3b15159056fea26469706673582212202a52a652009275f528e8938b2daf5b0c3ffeeb6cbd7ec63fd47e0223884527e864736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x23E JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x332 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x206 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x17D JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x1B3 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x116 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x360 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x133 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3FB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x165 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x49A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x17B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x6A1 JUMP JUMPDEST PUSH2 0x17B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x6C3 JUMP JUMPDEST PUSH2 0x133 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6E0 JUMP JUMPDEST PUSH2 0x22C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x74A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x7C3 JUMP JUMPDEST PUSH2 0x17B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x8C0 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x102 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x348 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x8D4 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x3F3 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x465 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO PUSH2 0x490 JUMPI POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3F6 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x3F6 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x4FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP1 DUP3 AND EQ ISZERO PUSH2 0x55D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x56E DUP2 PUSH2 0x569 PUSH2 0x900 JUMP JUMPDEST PUSH2 0x904 JUMP JUMPDEST PUSH2 0x5BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x5F9 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SSTORE JUMPDEST PUSH2 0x65A JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0x619 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE JUMPDEST DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x6BE DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x950 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x6BE DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x950 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3F3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x7A7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207A65726F2061646472657373000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7CD PUSH2 0x900 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x836 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x8CE DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x950 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 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 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x949 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x9AB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F207A65726F0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9B5 PUSH2 0x900 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x9C3 DUP8 DUP4 PUSH2 0x904 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0xA35 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6F776E6564204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0xAC6 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xA75 JUMPI POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA6A PUSH2 0x900 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xAC6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP2 DUP3 SWAP1 SSTORE DUP10 AND EQ PUSH2 0xB38 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SSTORE SWAP2 DUP10 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST DUP6 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP4 DUP1 ISZERO PUSH2 0xB93 JUMPI POP PUSH2 0xB93 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD3C JUMP JUMPDEST ISZERO PUSH2 0xD32 JUMPI PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH4 0x150B7A02 PUSH2 0xBD0 PUSH2 0x900 JUMP JUMPDEST DUP12 DUP11 DUP11 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC43 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC2B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC70 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ PUSH2 0xD32 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220726566757365640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2A MSTORE 0xA6 MSTORE STOP SWAP3 PUSH22 0xF528E8938B2DAF5B0C3FFEEB6CBD7EC63FD47E022388 GASLIMIT 0x27 0xE8 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "631:7129:65:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1425:199;;;;;;;;;;;;;;;;-1:-1:-1;1425:199:65;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3297:374;;;;;;;;;;;;;;;;-1:-1:-1;3297:374:65;;:::i;:::-;;;;-1:-1:-1;;;;;3297:374:65;;;;;;;;;;;;;;2277:986;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2277:986:65;;;;;;;;:::i;:::-;;4225:272;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4225:272:65;;;;;;;;;;;;;;;;;:::i;4531:275::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4531:275:65;;;;;;;;;;;;;;;;;:::i;2007:236::-;;;;;;;;;;;;;;;;-1:-1:-1;2007:236:65;;:::i;1787:186::-;;;;;;;;;;;;;;;;-1:-1:-1;1787:186:65;-1:-1:-1;;;;;1787:186:65;;:::i;:::-;;;;;;;;;;;;;;;;3705:298;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3705:298:65;;;;;;;;;;:::i;4840:304::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4840:304:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4840:304:65;;-1:-1:-1;4840:304:65;;-1:-1:-1;;;;;4840:304:65:i;4037:154::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4037:154:65;;;;;;;;;;:::i;1425:199::-;1510:4;1533:40;;;1548:25;1533:40;;:84;;-1:-1:-1;1577:40:65;;;1592:25;1577:40;1533:84;1526:91;;1425:199;;;;:::o;3297:374::-;3373:7;3408:16;;;:7;:16;;;;;;-1:-1:-1;;;;;3442:37:65;;3434:74;;;;;-1:-1:-1;;;3434:74:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3522:34:65;;:39;3518:147;;-1:-1:-1;;3584:22:65;;;;:13;:22;;;;;;-1:-1:-1;;;;;3584:22:65;3577:29;;3518:147;3652:1;3637:17;;;;;2277:986;2357:13;2373:16;;;:7;:16;;;;;;2407:10;2399:47;;;;;-1:-1:-1;;;2399:47:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;2495:5;-1:-1:-1;;;;;2520:18:65;;;;;;;;2512:52;;;;;-1:-1:-1;;;2512:52:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;2582:41;2596:12;2610;:10;:12::i;:::-;2582:13;:41::i;:::-;2574:81;;;;;-1:-1:-1;;;2574:81:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2669:16:65;;2665:542;;-1:-1:-1;;;2705:34:65;;:39;2701:178;;2824:16;;;;:7;:16;;;;;-1:-1:-1;;;;;2843:21:65;;2824:40;;2701:178;2665:542;;;-1:-1:-1;;;2940:34:65;;2992:29;;;2988:168;;3102:16;;;;:7;:16;;;;;:39;;;2988:168;-1:-1:-1;3169:22:65;;;;:13;:22;;;;;:27;;;;-1:-1:-1;;;;;3169:27:65;;;;;2665:542;3248:7;3244:2;-1:-1:-1;;;;;3221:35:65;3230:12;-1:-1:-1;;;;;3221:35:65;;;;;;;;;;;2277:986;;;;:::o;4225:272::-;4354:136;4381:4;4399:2;4415:7;4354:136;;;;;;;;;;;;4475:5;4354:13;:136::i;:::-;4225:272;;;:::o;4531:275::-;4664:135;4691:4;4709:2;4725:7;4664:135;;;;;;;;;;;;4785:4;4664:13;:135::i;2007:236::-;2079:7;2130:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2166:19:65;;2158:56;;;;;-1:-1:-1;;;2158:56:65;;;;;;;;;;;;;;;;;;;;;;;;;;;1787:186;1859:7;-1:-1:-1;;;;;1886:19:65;;1878:52;;;;;-1:-1:-1;;;1878:52:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1947:19:65;;;;;:12;:19;;;;;;;1787:186::o;3705:298::-;3799:14;3816:12;:10;:12::i;:::-;3799:29;;3858:6;-1:-1:-1;;;;;3846:18:65;:8;-1:-1:-1;;;;;3846:18:65;;;3838:52;;;;;-1:-1:-1;;;3838:52:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3900:18:65;;;:10;:18;;;;;;;;;;;:28;;;;;;;;;;;;;:39;;;;;;;;;;;;;3954:42;;;;;;;;;;;;;;;;;3705:298;;;:::o;4840:304::-;5000:137;5027:4;5045:2;5061:7;5082:4;5123;5000:13;:137::i;:::-;4840:304;;;;:::o;4037:154::-;-1:-1:-1;;;;;4157:17:65;;;4134:4;4157:17;;;;;;;;;;;:27;;;;;;;;;;;;;;;4037:154::o;355:104:5:-;442:10;355:104;:::o;7608:150:65:-;7684:4;7716:6;-1:-1:-1;;;;;7708:14:65;:4;-1:-1:-1;;;;;7708:14:65;;7707:44;;;-1:-1:-1;;;;;;7727:16:65;;;:10;:16;;;;;;;;;;;:24;;;;;;;;;;;;7707:44;7700:51;7608:150;-1:-1:-1;;;7608:150:65:o;5279:1133::-;-1:-1:-1;;;;;5456:16:65;;5448:53;;;;;-1:-1:-1;;;5448:53:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;5511:14;5528:12;:10;:12::i;:::-;5511:29;;5550:15;5568:27;5582:4;5588:6;5568:13;:27::i;:::-;5606:13;5622:16;;;:7;:16;;;;;;5550:45;;-1:-1:-1;;;;;;5656:31:65;;;;;;;5648:65;;;;;-1:-1:-1;;;5648:65:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;5728:10;5723:165;;-1:-1:-1;;;5763:34:65;;:39;;;;5762:83;;-1:-1:-1;5823:22:65;;;;:13;:22;;;;;;-1:-1:-1;;;;;5823:22:65;5807:12;:10;:12::i;:::-;-1:-1:-1;;;;;5807:38:65;;5762:83;5754:123;;;;;-1:-1:-1;;;5754:123:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;5897:16;;;;:7;:16;;;;;-1:-1:-1;;;;;5916:20:65;;;5897:39;;;;5951:10;;;5947:224;;-1:-1:-1;;;;;6052:18:65;;;;;;;:12;:18;;;;;;6050:20;;;;;;6144:16;;;;;;6142:18;;6050:20;6142:18;;;5947:224;6205:7;6201:2;-1:-1:-1;;;;;6186:27:65;6195:4;-1:-1:-1;;;;;6186:27:65;;;;;;;;;;;6228:4;:23;;;;;6236:15;:2;-1:-1:-1;;;;;6236:13:65;;:15::i;:::-;6224:182;;;797:33;-1:-1:-1;;;;;6275:36:65;;;6312:12;:10;:12::i;:::-;6326:4;6332:7;6341:4;6275:71;;;;;;;;;;;;;-1:-1:-1;;;;;6275:71:65;;;;;;-1:-1:-1;;;;;6275:71:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6275:71:65;:91;;;6267:128;;;;;-1:-1:-1;;;6267:128:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;5279:1133;;;;;;;;:::o;913:377:9:-;1229:20;1275:8;;;913:377::o"
            },
            "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"
            }
          }
        }
      },
      "contracts/token/ERC721/interfaces/IERC721.sol": {
        "IERC721": {
          "abi": [
            {
              "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": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "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",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol": {
        "IERC721BatchTransfer": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "batchTransferFrom(address,address,uint256[])": "f3993d11"
            }
          }
        }
      },
      "contracts/token/ERC721/interfaces/IERC721Burnable.sol": {
        "IERC721Burnable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "batchBurnFrom(address,uint256[])": "f2472965",
              "burnFrom(address,uint256)": "79cc6790"
            }
          }
        }
      },
      "contracts/token/ERC721/interfaces/IERC721Events.sol": {
        "IERC721Events": {
          "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/token/ERC721/interfaces/IERC721Metadata.sol": {
        "IERC721Metadata": {
          "abi": [
            {
              "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": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd"
            }
          }
        }
      },
      "contracts/token/ERC721/interfaces/IERC721Mintable.sol": {
        "IERC721Mintable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "batchMint(address,uint256[])": "4684d7e9",
              "mint(address,uint256)": "40c10f19",
              "safeMint(address,uint256,bytes)": "8832e6e3"
            }
          }
        }
      },
      "contracts/token/ERC721/interfaces/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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "onERC721Received(address,address,uint256,bytes)": "150b7a02"
            }
          }
        }
      },
      "contracts/token/ERC721/mocks/ERC721BurnableMock.sol": {
        "ERC721BurnableMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IForwarderRegistry",
                  "name": "forwarderRegistry",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "universalForwarder",
                  "type": "address"
                }
              ],
              "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": false,
                  "internalType": "string",
                  "name": "baseMetadataURI",
                  "type": "string"
                }
              ],
              "name": "BaseMetadataURISet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterRemoved",
              "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": "account",
                  "type": "address"
                }
              ],
              "name": "addMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "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": [],
              "name": "baseMetadataURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "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": "",
                  "type": "address"
                }
              ],
              "name": "isMinter",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "forwarder",
                  "type": "address"
                }
              ],
              "name": "isTrustedForwarder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "msgData",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "ret",
                  "type": "bytes"
                }
              ],
              "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": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC20s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "contracts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC721s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeMint",
              "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": "string",
                  "name": "baseMetadataURI_",
                  "type": "string"
                }
              ],
              "name": "setBaseMetadataURI",
              "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": "nftId",
                  "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60c06040523480156200001157600080fd5b5060405162002eb938038062002eb9833981810160405260408110156200003757600080fd5b50805160209182015160408051808201825260128152714552433732314275726e61626c654d6f636b60701b81860152815180830183526005815264229b9918a160d91b95810195909552600080546001600160a01b031916339081178255925194959394929391928391839188918891889182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606091821b811660a05291901b1660805281516200010190600190602085019062000182565b5080516200011790600290602084019062000182565b50505050506200012d816200013660201b60201c565b5050506200022e565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620001ba576000855562000205565b82601f10620001d557805160ff191683800117855562000205565b8280016001018555821562000205579182015b8281111562000205578251825591602001919060010190620001e8565b506200021392915062000217565b5090565b5b8082111562000213576000815560010162000218565b60805160601c60a05160601c612c436200027660003980610f95528061238952806128e3525080610fd0528061234e52806123e152806128b952806129445250612c436000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638832e6e311610104578063b88d4fde116100a2578063e985e9c511610071578063e985e9c5146109c8578063f2472965146109f6578063f2fde38b14610aa9578063f3993d1114610acf576101da565b8063b88d4fde146107c9578063c3666c361461088f578063c4c2bfdc146109a3578063c87b56dd146109ab576101da565b8063983b2d56116100de578063983b2d5614610747578063986502751461076d578063a22cb46514610775578063aa271e1a146107a3576101da565b80638832e6e31461067c5780638da5cb5b1461073757806395d89b411461073f576101da565b80634684d7e91161017c57806370a082311161014b57806370a082311461049457806373c8a958146104cc57806379cc6790146105e05780637e518ec81461060c576101da565b80634684d7e914610396578063572b6c05146104495780635b2bd79e1461046f5780636352211e14610477576101da565b8063095ea7b3116101b8578063095ea7b3146102d057806323b872dd146102fe57806340c10f191461033457806342842e0e14610360576101da565b806301ffc9a7146101df57806306fdde031461021a578063081812fc14610297575b600080fd5b610206600480360360208110156101f557600080fd5b50356001600160e01b031916610b8b565b604080519115158252519081900360200190f35b610222610bd1565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025c578181015183820152602001610244565b50505050905090810190601f1680156102895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102b4600480360360208110156102ad57600080fd5b5035610c67565b604080516001600160a01b039092168252519081900360200190f35b6102fc600480360360408110156102e657600080fd5b506001600160a01b038135169060200135610d06565b005b6102fc6004803603606081101561031457600080fd5b506001600160a01b03813581169160208101359091169060400135610f0d565b6102fc6004803603604081101561034a57600080fd5b506001600160a01b038135169060200135610f2f565b6102fc6004803603606081101561037657600080fd5b506001600160a01b03813581169160208101359091169060400135610f5f565b6102fc600480360360408110156103ac57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156103d757600080fd5b8201836020820111156103e957600080fd5b8035906020019184602083028401116401000000008311171561040b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610f7c945050505050565b6102066004803603602081101561045f57600080fd5b50356001600160a01b0316610f91565b61022261100a565b6102b46004803603602081101561048d57600080fd5b5035611098565b6104ba600480360360208110156104aa57600080fd5b50356001600160a01b0316611102565b60408051918252519081900360200190f35b6102fc600480360360608110156104e257600080fd5b8101906020810181356401000000008111156104fd57600080fd5b82018360208201111561050f57600080fd5b8035906020019184602083028401116401000000008311171561053157600080fd5b91939092909160208101903564010000000081111561054f57600080fd5b82018360208201111561056157600080fd5b8035906020019184602083028401116401000000008311171561058357600080fd5b9193909290916020810190356401000000008111156105a157600080fd5b8201836020820111156105b357600080fd5b803590602001918460208302840111640100000000831117156105d557600080fd5b50909250905061117b565b6102fc600480360360408110156105f657600080fd5b506001600160a01b03813516906020013561126d565b6102fc6004803603602081101561062257600080fd5b81019060208101813564010000000081111561063d57600080fd5b82018360208201111561064f57600080fd5b8035906020019184600183028401116401000000008311171561067157600080fd5b5090925090506112d2565b6102fc6004803603606081101561069257600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156106c257600080fd5b8201836020820111156106d457600080fd5b803590602001918460018302840111640100000000831117156106f657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061134e945050505050565b6102b4611366565b610222611375565b6102fc6004803603602081101561075d57600080fd5b50356001600160a01b03166113d3565b6102fc6113ea565b6102fc6004803603604081101561078b57600080fd5b506001600160a01b0381351690602001351515611448565b610206600480360360208110156107b957600080fd5b50356001600160a01b0316611529565b6102fc600480360360808110156107df57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561081a57600080fd5b82018360208201111561082c57600080fd5b8035906020019184600183028401116401000000008311171561084e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061153e945050505050565b6102fc600480360360608110156108a557600080fd5b8101906020810181356401000000008111156108c057600080fd5b8201836020820111156108d257600080fd5b803590602001918460208302840111640100000000831117156108f457600080fd5b91939092909160208101903564010000000081111561091257600080fd5b82018360208201111561092457600080fd5b8035906020019184602083028401116401000000008311171561094657600080fd5b91939092909160208101903564010000000081111561096457600080fd5b82018360208201111561097657600080fd5b8035906020019184602083028401116401000000008311171561099857600080fd5b509092509050611552565b61022261169a565b610222600480360360208110156109c157600080fd5b50356116a9565b610206600480360360408110156109de57600080fd5b506001600160a01b038135811691602001351661171e565b6102fc60048036036040811015610a0c57600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115610a3757600080fd5b820183602082011115610a4957600080fd5b80359060200191846020830284011164010000000083111715610a6b57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061174c945050505050565b6102fc60048036036020811015610abf57600080fd5b50356001600160a01b0316611807565b6102fc60048036036060811015610ae557600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135640100000000811115610b1957600080fd5b820183602082011115610b2b57600080fd5b80359060200191846020830284011164010000000083111715610b4d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611878945050505050565b60006001600160e01b031982167f8b8b4ef5000000000000000000000000000000000000000000000000000000001480610bc95750610bc982611984565b90505b919050565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c5c5780601f10610c3157610100808354040283529160200191610c5c565b820191906000526020600020905b815481529060010190602001808311610c3f57829003601f168201915b505050505090505b90565b6000818152600460205260408120546001600160a01b038116610cd1576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b600160a01b811615610cfc5750506000818152600660205260409020546001600160a01b0316610bcc565b6000915050610bcc565b60008181526004602052604090205480610d67576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b806001600160a01b038481169082161415610dc9576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b610dda81610dd5611a51565b611a5b565b610e2b576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b6001600160a01b038416610e6557600160a01b821615610e605760008381526004602052604090206001600160a01b03821690555b610ec6565b600160a01b8217808314610e855760008481526004602052604090208190555b50600083815260066020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b610f2a838383604051806020016040528060008152506000611aa9565b505050565b610f3f610f3a611a51565b611ba1565b610f5b8282604051806020016040528060008152506000611c0e565b5050565b610f2a838383604051806020016040528060008152506001611aa9565b610f87610f3a611a51565b610f5b8282611cd9565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610bc957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110905780601f1061106557610100808354040283529160200191611090565b820191906000526020600020905b81548152906001019060200180831161107357829003601f168201915b505050505081565b6000818152600460205260408120546001600160a01b038116610bc9576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b60006001600160a01b03821661115f576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b506001600160a01b031660009081526005602052604090205490565b61118b611186611a51565b611dca565b84838114801561119a57508082145b6111eb576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b8181146112635761125b88888381811061120457fe5b905060200201356001600160a01b031685858481811061122057fe5b9050602002013588888581811061123357fe5b905060200201356001600160a01b03166001600160a01b0316611e8e9092919063ffffffff16565b6001016111ee565b5050505050505050565b6000611277611a51565b905060006112858483611a5b565b90506112948484836000611f0e565b60405183906000906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a450505050565b6112dd611186611a51565b6112e960078383612b44565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b611359610f3a611a51565b610f2a8383836001611c0e565b6000546001600160a01b031690565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610c5c5780601f10610c3157610100808354040283529160200191610c5c565b6113de611186611a51565b6113e781612069565b50565b60006113f4611a51565b90506113ff81611ba1565b6001600160a01b038116600081815260086020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b6000611452611a51565b9050806001600160a01b0316836001600160a01b031614156114bb576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260036020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b60086020526000908152604090205460ff1681565b61154c848484846001611aa9565b50505050565b61155d611186611a51565b84838114801561156c57508082145b6115bd576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611263578585828181106115d357fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a858181106115fe57fe5b905060200201356001600160a01b031687878681811061161a57fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561167757600080fd5b505af115801561168b573d6000803e3d6000fd5b505050508060010190506115c0565b60606116a46120b5565b905090565b6000818152600460205260409020546060906001600160a01b0316611715576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b610bc9826120f9565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6000611756611a51565b905060006117648483611a5b565b835190915060005b8181146117d957600085828151811061178157fe5b602002602001015190506117988782866001611f0e565b60405181906000906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45060010161176c565b508015611800576001600160a01b0385166000908152600560205260409020805482900390555b5050505050565b611812611186611a51565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b0382166118d3576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b60006118dd611a51565b905060006118eb8583611a5b565b835190915060005b81811461196a57600085828151811061190857fe5b602002602001015190506119208888838760016121cc565b80876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4506001016118f3565b50801561197c5761197c8686836122f3565b505050505050565b60006001600160e01b031982167f01ffc9a70000000000000000000000000000000000000000000000000000000014806119e757506001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000145b80611a1b57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610bc95750506001600160e01b0319167ff3993d11000000000000000000000000000000000000000000000000000000001490565b60006116a461233e565b6000816001600160a01b0316836001600160a01b03161480611aa257506001600160a01b0380841660009081526003602090815260408083209386168352929052205460ff165b9392505050565b6001600160a01b038416611b04576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b6000611b0e611a51565b90506000611b1c8783611a5b565b9050611b2c8787878460006121cc565b84866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4828015611b875750611b87866001600160a01b031661249e565b15611b9857611b98878787876124a4565b50505050505050565b6001600160a01b03811660009081526008602052604090205460ff166113e7576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416611c69576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b611c7584846000612626565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808015611cc75750611cc7846001600160a01b031661249e565b1561154c5761154c60008585856124a4565b6001600160a01b038216611d34576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b805160005b818114611da5576000838281518110611d4e57fe5b60200260200101519050611d6485826001612626565b60405181906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450600101611d39565b506001600160a01b039092166000908152600560205260409020805490920190915550565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0357600080fd5b505afa158015611e17573d6000803e3d6000fd5b505050506040513d6020811015611e2d57600080fd5b50516001600160a01b038281169116146113e7576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610f2a9084906126c8565b6000838152600460205260409020546001600160a01b0385811690821614611f7d576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a206e6f6e2d6f776e6564204e46540000000000000000000000604482015290519081900360640190fd5b8261200e57600160a01b811615801590611fbd57506000848152600660205260409020546001600160a01b0316611fb2611a51565b6001600160a01b0316145b61200e576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b60008481526004602052604090207fdead00000000000000000000000000000000000000000000000000000000000090558161180057505050506001600160a01b031660009081526005602052604090208054600019019055565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b60606120bf6128ab565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b6060600761210683612a0e565b60405160200180838054600181600116156101000203166002900480156121645780601f10612142576101008083540402835291820191612164565b820191906000526020600020905b815481529060010190602001808311612150575b5050825160208401908083835b602083106121905780518252601f199092019160209182019101612171565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b6000838152600460205260409020546001600160a01b038681169082161461223b576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a206e6f6e2d6f776e6564204e46540000000000000000000000604482015290519081900360640190fd5b826122cc57600160a01b81161580159061227b57506000848152600660205260409020546001600160a01b0316612270611a51565b6001600160a01b0316145b6122cc576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b60008481526004602052604090206001600160a01b03861690558161197c5761197c868660015b816001600160a01b0316836001600160a01b031614610f2a576001600160a01b0380841660009081526005602052604080822080548590039055918416815220805482019055505050565b6000338161234a612b1d565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806123bd57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b156123cb579150610c649050565b6001600160a01b038216321480159061248a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561245d57600080fd5b505afa158015612471573d6000803e3d6000fd5b505050506040513d602081101561248757600080fd5b50515b15612498579150610c649050565b50905090565b3b151590565b7f150b7a02000000000000000000000000000000000000000000000000000000006001600160a01b03841663150b7a026124dc611a51565b8786866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561254f578181015183820152602001612537565b50505050905090810190601f16801561257c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561259e57600080fd5b505af11580156125b2573d6000803e3d6000fd5b505050506040513d60208110156125c857600080fd5b50516001600160e01b0319161461154c576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220726566757365640000000000000000604482015290519081900360640190fd5b60008281526004602052604090205415612687576040805162461bcd60e51b815260206004820152601a60248201527f4552433732313a206578697374696e672f6275726e74204e4654000000000000604482015290519081900360640190fd5b60008281526004602052604090206001600160a01b038416905580610f2a5750506001600160a01b0316600090815260056020526040902080546001019055565b816126db6001600160a01b03821661249e565b61272c576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106127695780518252601f19909201916020918201910161274a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146127cb576040519150601f19603f3d011682016040523d82523d6000602084013e6127d0565b606091505b5091509150811561284f5780511561284a578080602001905160208110156127f757600080fd5b505161284a576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b611800565b80516128a2576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681148061291757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b1561292e57612924612b29565b9250925050612a0a565b6001600160a01b03811632148015906129f457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6612979612b1d565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156129c757600080fd5b505afa1580156129db573d6000803e3d6000fd5b505050506040513d60208110156129f157600080fd5b50515b15612a0157612924612b29565b60003692509250505b9091565b606081612a4f575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610bcc565b8160005b8115612a6757600101600a82049150612a53565b60008167ffffffffffffffff81118015612a8057600080fd5b506040519080825280601f01601f191660200182016040528015612aab576020820181803683370190505b50859350905060001982015b8315612b1457600a840660300160f81b82828060019003935081518110612ada57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350612ab7565b50949350505050565b60131936013560601c90565b366000612b3c6013198301828481612be5565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282612b7a5760008555612bc0565b82601f10612b935782800160ff19823516178555612bc0565b82800160010185558215612bc0579182015b82811115612bc0578235825591602001919060010190612ba5565b50612bcc929150612bd0565b5090565b5b80821115612bcc5760008155600101612bd1565b60008085851115612bf4578182fd5b83861115612c00578182fd5b505082019391909203915056fea2646970667358221220e9d914cee366764c264c573aa8e36167d8ca788085a328ed7938866efac6a0cd64736f6c63430007060033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2EB9 CODESIZE SUB DUP1 PUSH3 0x2EB9 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x12 DUP2 MSTORE PUSH18 0x4552433732314275726E61626C654D6F636B PUSH1 0x70 SHL DUP2 DUP7 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH5 0x229B9918A1 PUSH1 0xD9 SHL SWAP6 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE SWAP3 MLOAD SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 DUP4 SWAP2 DUP4 SWAP2 DUP9 SWAP2 DUP9 SWAP2 DUP9 SWAP2 DUP3 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0x80 MSTORE DUP2 MLOAD PUSH3 0x101 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x182 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x117 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x182 JUMP JUMPDEST POP POP POP POP POP PUSH3 0x12D DUP2 PUSH3 0x136 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP PUSH3 0x22E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x1BA JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x205 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x1D5 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x205 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x205 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x205 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x1E8 JUMP JUMPDEST POP PUSH3 0x213 SWAP3 SWAP2 POP PUSH3 0x217 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x213 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x218 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x2C43 PUSH3 0x276 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xF95 MSTORE DUP1 PUSH2 0x2389 MSTORE DUP1 PUSH2 0x28E3 MSTORE POP DUP1 PUSH2 0xFD0 MSTORE DUP1 PUSH2 0x234E MSTORE DUP1 PUSH2 0x23E1 MSTORE DUP1 PUSH2 0x28B9 MSTORE DUP1 PUSH2 0x2944 MSTORE POP PUSH2 0x2C43 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 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8832E6E3 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x9C8 JUMPI DUP1 PUSH4 0xF2472965 EQ PUSH2 0x9F6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xAA9 JUMPI DUP1 PUSH4 0xF3993D11 EQ PUSH2 0xACF JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x7C9 JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0x88F JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0x9A3 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x9AB JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x983B2D56 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x747 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0x76D JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x775 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0x7A3 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x8832E6E3 EQ PUSH2 0x67C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x737 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x73F JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x4684D7E9 GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x4CC JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x5E0 JUMPI DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0x60C JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x4684D7E9 EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x449 JUMPI DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x46F JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x477 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2D0 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x360 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x297 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xB8B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x222 PUSH2 0xBD1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x244 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x289 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC67 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD06 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF0D JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF2F JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF5F JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xF7C SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF91 JUMP JUMPDEST PUSH2 0x222 PUSH2 0x100A JUMP JUMPDEST PUSH2 0x2B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x48D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1098 JUMP JUMPDEST PUSH2 0x4BA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1102 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x561 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x117B JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x126D JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x64F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x12D2 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x134E SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2B4 PUSH2 0x1366 JUMP JUMPDEST PUSH2 0x222 PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x75D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13D3 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x13EA JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x78B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1448 JUMP JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1529 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x7DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x81A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x82C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x153E SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x8F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x912 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x924 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x946 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x964 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x976 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x998 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1552 JUMP JUMPDEST PUSH2 0x222 PUSH2 0x169A JUMP JUMPDEST PUSH2 0x222 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x16A9 JUMP JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x171E JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x174C SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xABF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xAE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1878 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x8B8B4EF500000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xBC9 JUMPI POP PUSH2 0xBC9 DUP3 PUSH2 0x1984 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xC5C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC31 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC5C 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 0xC3F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xCD1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO PUSH2 0xCFC JUMPI POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCC JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0xBCC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0xD67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP1 DUP3 AND EQ ISZERO PUSH2 0xDC9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xDDA DUP2 PUSH2 0xDD5 PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0x1A5B JUMP JUMPDEST PUSH2 0xE2B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xE65 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0xE60 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SSTORE JUMPDEST PUSH2 0xEC6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0xE85 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE JUMPDEST DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0xF2A DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x1AA9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xF3F PUSH2 0xF3A PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0x1BA1 JUMP JUMPDEST PUSH2 0xF5B DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x1C0E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xF2A DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x1AA9 JUMP JUMPDEST PUSH2 0xF87 PUSH2 0xF3A PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0xF5B DUP3 DUP3 PUSH2 0x1CD9 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xBC9 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1090 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1065 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1090 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 0x1073 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xBC9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x115F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207A65726F2061646472657373000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x118B PUSH2 0x1186 PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0x1DCA JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x119A JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x11EB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1263 JUMPI PUSH2 0x125B DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x1204 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1220 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1233 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E8E SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x11EE JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1277 PUSH2 0x1A51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1285 DUP5 DUP4 PUSH2 0x1A5B JUMP JUMPDEST SWAP1 POP PUSH2 0x1294 DUP5 DUP5 DUP4 PUSH1 0x0 PUSH2 0x1F0E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x12DD PUSH2 0x1186 PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0x12E9 PUSH1 0x7 DUP4 DUP4 PUSH2 0x2B44 JUMP JUMPDEST POP PUSH32 0x4B1DC5C136A3CE9FDED8DB0CE3D3366C58764EC3A8E4C2B9E52E4DDFE5EBBF7 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG1 POP POP JUMP JUMPDEST PUSH2 0x1359 PUSH2 0xF3A PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0xF2A DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1C0E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xC5C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC31 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC5C JUMP JUMPDEST PUSH2 0x13DE PUSH2 0x1186 PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0x13E7 DUP2 PUSH2 0x2069 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F4 PUSH2 0x1A51 JUMP JUMPDEST SWAP1 POP PUSH2 0x13FF DUP2 PUSH2 0x1BA1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1452 PUSH2 0x1A51 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x14BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x154C DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x1AA9 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x155D PUSH2 0x1186 PUSH2 0x1A51 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x156C JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x15BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1263 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x15D3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x15FE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x161A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x168B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x15C0 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x16A4 PUSH2 0x20B5 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1715 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xBC9 DUP3 PUSH2 0x20F9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 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 PUSH2 0x1756 PUSH2 0x1A51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1764 DUP5 DUP4 PUSH2 0x1A5B JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x17D9 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1781 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1798 DUP8 DUP3 DUP7 PUSH1 0x1 PUSH2 0x1F0E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP PUSH1 0x1 ADD PUSH2 0x176C JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x1800 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1812 PUSH2 0x1186 PUSH2 0x1A51 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x18D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F207A65726F0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x18DD PUSH2 0x1A51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x18EB DUP6 DUP4 PUSH2 0x1A5B JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x196A JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1908 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1920 DUP9 DUP9 DUP4 DUP8 PUSH1 0x1 PUSH2 0x21CC JUMP JUMPDEST DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 ADD PUSH2 0x18F3 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x197C JUMPI PUSH2 0x197C DUP7 DUP7 DUP4 PUSH2 0x22F3 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x19E7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1A1B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xBC9 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xF3993D1100000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16A4 PUSH2 0x233E JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1AA2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1B04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F207A65726F0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1B0E PUSH2 0x1A51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B1C DUP8 DUP4 PUSH2 0x1A5B JUMP JUMPDEST SWAP1 POP PUSH2 0x1B2C DUP8 DUP8 DUP8 DUP5 PUSH1 0x0 PUSH2 0x21CC JUMP JUMPDEST DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP3 DUP1 ISZERO PUSH2 0x1B87 JUMPI POP PUSH2 0x1B87 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x249E JUMP JUMPDEST ISZERO PUSH2 0x1B98 JUMPI PUSH2 0x1B98 DUP8 DUP8 DUP8 DUP8 PUSH2 0x24A4 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x13E7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1C69 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F207A65726F000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1C75 DUP5 DUP5 PUSH1 0x0 PUSH2 0x2626 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 DUP1 DUP1 ISZERO PUSH2 0x1CC7 JUMPI POP PUSH2 0x1CC7 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x249E JUMP JUMPDEST ISZERO PUSH2 0x154C JUMPI PUSH2 0x154C PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0x24A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D34 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F207A65726F000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1DA5 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1D4E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1D64 DUP6 DUP3 PUSH1 0x1 PUSH2 0x2626 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP PUSH1 0x1 ADD PUSH2 0x1D39 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E17 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x13E7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xF2A SWAP1 DUP5 SWAP1 PUSH2 0x26C8 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x1F7D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6F776E6564204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x200E JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1FBD JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1FB2 PUSH2 0x1A51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x200E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH32 0xDEAD000000000000000000000000000000000000000000000000000000000000 SWAP1 SSTORE DUP2 PUSH2 0x1800 JUMPI POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x20BF PUSH2 0x28AB JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 PUSH2 0x2106 DUP4 PUSH2 0x2A0E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2164 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2142 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x2164 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 0x2150 JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2190 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2171 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x223B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6F776E6564204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x22CC JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x227B JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2270 PUSH2 0x1A51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x22CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 SSTORE DUP2 PUSH2 0x197C JUMPI PUSH2 0x197C DUP7 DUP7 PUSH1 0x1 JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xF2A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE SWAP2 DUP5 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x234A PUSH2 0x2B1D JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x23BD JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x23CB JUMPI SWAP2 POP PUSH2 0xC64 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x248A JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x245D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2471 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2487 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x2498 JUMPI SWAP2 POP PUSH2 0xC64 SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0x150B7A02 PUSH2 0x24DC PUSH2 0x1A51 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x254F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2537 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x257C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x259E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x25B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x154C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220726566757365640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2687 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206578697374696E672F6275726E74204E4654000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 SSTORE DUP1 PUSH2 0xF2A JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH2 0x26DB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x249E JUMP JUMPDEST PUSH2 0x272C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2769 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x274A JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x27CB 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 0x27D0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x284F JUMPI DUP1 MLOAD ISZERO PUSH2 0x284A JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x284A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1800 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x28A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x2917 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x292E JUMPI PUSH2 0x2924 PUSH2 0x2B29 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x2A0A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x29F4 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x2979 PUSH2 0x2B1D JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x2A01 JUMPI PUSH2 0x2924 PUSH2 0x2B29 JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x2A4F JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xBCC JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x2A67 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x2A53 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2A80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x2AAB JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x2B14 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x2ADA JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x2AB7 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x2B3C PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x2BE5 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2B7A JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x2BC0 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2B93 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x2BC0 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2BC0 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2BC0 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2BA5 JUMP JUMPDEST POP PUSH2 0x2BCC SWAP3 SWAP2 POP PUSH2 0x2BD0 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2BCC JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2BD1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x2BF4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x2C00 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE9 0xD9 EQ 0xCE 0xE3 PUSH7 0x764C264C573AA8 0xE3 PUSH2 0x67D8 0xCA PUSH25 0x8085A328ED7938866EFAC6A0CD64736F6C6343000706003300 ",
              "sourceMap": "969:2419:73:-:0;;;1109:241;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1109:241:73;;;;;;;;538:81:63;;;;;;;;;;-1:-1:-1;;;538:81:63;;;;;;;;;;;;;;-1:-1:-1;;;538:81:63;;;;;;;-1:-1:-1;960:15:2;;-1:-1:-1;;;;;;960:15:2;1332:10:73;960:15:2;;;;;990:40;;1109:241:73;;;;1332:10;;538:81:63;;;;;;1109:241:73;;;;1332:10;;;;990:40:2;;-1:-1:-1;;990:40:2;-1:-1:-1;;;;;;;443:40:85;;;;;;;;493:38;;;;;;2033:13:62;;;;:5;;-1:-1:-1;2033:13:62;;;;:::i;:::-;-1:-1:-1;2056:17:62;;;;:7;;:17;;;;;:::i;:::-;;1967:113;;538:81:63;;476:18:1::1;487:6;476:10;;;:18;;:::i;:::-;422:79:::0;1109:241:73;;969:2419;;1252:122:1;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;969:2419:73:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;969:2419:73;;;-1:-1:-1;969:2419:73;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:379:86",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:86",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "144:233:86",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "182:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "191:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "202:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "184:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "184:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "184:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "160:10:86"
                                  },
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "172:8:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "157:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "157:24:86"
                              },
                              "nodeType": "YulIf",
                              "src": "154:2:86"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "247:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "256:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "267:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "249:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "249:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "229:8:86"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "239:6:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "226:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "226:20:86"
                              },
                              "nodeType": "YulIf",
                              "src": "223:2:86"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "288:36:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "305:6:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "313:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "301:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "301:23:86"
                              },
                              "variableNames": [
                                {
                                  "name": "offsetOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "288:9:86"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "333:38:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "350:8:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "360:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "346:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "346:25:86"
                              },
                              "variableNames": [
                                {
                                  "name": "lengthOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:9:86"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "78:6:86",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "86:6:86",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "94:10:86",
                            "type": ""
                          },
                          {
                            "name": "endIndex",
                            "nodeType": "YulTypedName",
                            "src": "106:8:86",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "offsetOut",
                            "nodeType": "YulTypedName",
                            "src": "119:9:86",
                            "type": ""
                          },
                          {
                            "name": "lengthOut",
                            "nodeType": "YulTypedName",
                            "src": "130:9:86",
                            "type": ""
                          }
                        ],
                        "src": "14:363:86"
                      }
                    ]
                  },
                  "contents": "{\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(offsetOut, offsetOut) }\n        if gt(endIndex, length) { revert(offsetOut, offsetOut) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n}",
                  "id": 86,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "15042": [
                  {
                    "length": 32,
                    "start": 4048
                  },
                  {
                    "length": 32,
                    "start": 9038
                  },
                  {
                    "length": 32,
                    "start": 9185
                  },
                  {
                    "length": 32,
                    "start": 10425
                  },
                  {
                    "length": 32,
                    "start": 10564
                  }
                ],
                "15044": [
                  {
                    "length": 32,
                    "start": 3989
                  },
                  {
                    "length": 32,
                    "start": 9097
                  },
                  {
                    "length": 32,
                    "start": 10467
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101da5760003560e01c80638832e6e311610104578063b88d4fde116100a2578063e985e9c511610071578063e985e9c5146109c8578063f2472965146109f6578063f2fde38b14610aa9578063f3993d1114610acf576101da565b8063b88d4fde146107c9578063c3666c361461088f578063c4c2bfdc146109a3578063c87b56dd146109ab576101da565b8063983b2d56116100de578063983b2d5614610747578063986502751461076d578063a22cb46514610775578063aa271e1a146107a3576101da565b80638832e6e31461067c5780638da5cb5b1461073757806395d89b411461073f576101da565b80634684d7e91161017c57806370a082311161014b57806370a082311461049457806373c8a958146104cc57806379cc6790146105e05780637e518ec81461060c576101da565b80634684d7e914610396578063572b6c05146104495780635b2bd79e1461046f5780636352211e14610477576101da565b8063095ea7b3116101b8578063095ea7b3146102d057806323b872dd146102fe57806340c10f191461033457806342842e0e14610360576101da565b806301ffc9a7146101df57806306fdde031461021a578063081812fc14610297575b600080fd5b610206600480360360208110156101f557600080fd5b50356001600160e01b031916610b8b565b604080519115158252519081900360200190f35b610222610bd1565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025c578181015183820152602001610244565b50505050905090810190601f1680156102895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102b4600480360360208110156102ad57600080fd5b5035610c67565b604080516001600160a01b039092168252519081900360200190f35b6102fc600480360360408110156102e657600080fd5b506001600160a01b038135169060200135610d06565b005b6102fc6004803603606081101561031457600080fd5b506001600160a01b03813581169160208101359091169060400135610f0d565b6102fc6004803603604081101561034a57600080fd5b506001600160a01b038135169060200135610f2f565b6102fc6004803603606081101561037657600080fd5b506001600160a01b03813581169160208101359091169060400135610f5f565b6102fc600480360360408110156103ac57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156103d757600080fd5b8201836020820111156103e957600080fd5b8035906020019184602083028401116401000000008311171561040b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610f7c945050505050565b6102066004803603602081101561045f57600080fd5b50356001600160a01b0316610f91565b61022261100a565b6102b46004803603602081101561048d57600080fd5b5035611098565b6104ba600480360360208110156104aa57600080fd5b50356001600160a01b0316611102565b60408051918252519081900360200190f35b6102fc600480360360608110156104e257600080fd5b8101906020810181356401000000008111156104fd57600080fd5b82018360208201111561050f57600080fd5b8035906020019184602083028401116401000000008311171561053157600080fd5b91939092909160208101903564010000000081111561054f57600080fd5b82018360208201111561056157600080fd5b8035906020019184602083028401116401000000008311171561058357600080fd5b9193909290916020810190356401000000008111156105a157600080fd5b8201836020820111156105b357600080fd5b803590602001918460208302840111640100000000831117156105d557600080fd5b50909250905061117b565b6102fc600480360360408110156105f657600080fd5b506001600160a01b03813516906020013561126d565b6102fc6004803603602081101561062257600080fd5b81019060208101813564010000000081111561063d57600080fd5b82018360208201111561064f57600080fd5b8035906020019184600183028401116401000000008311171561067157600080fd5b5090925090506112d2565b6102fc6004803603606081101561069257600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156106c257600080fd5b8201836020820111156106d457600080fd5b803590602001918460018302840111640100000000831117156106f657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061134e945050505050565b6102b4611366565b610222611375565b6102fc6004803603602081101561075d57600080fd5b50356001600160a01b03166113d3565b6102fc6113ea565b6102fc6004803603604081101561078b57600080fd5b506001600160a01b0381351690602001351515611448565b610206600480360360208110156107b957600080fd5b50356001600160a01b0316611529565b6102fc600480360360808110156107df57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561081a57600080fd5b82018360208201111561082c57600080fd5b8035906020019184600183028401116401000000008311171561084e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061153e945050505050565b6102fc600480360360608110156108a557600080fd5b8101906020810181356401000000008111156108c057600080fd5b8201836020820111156108d257600080fd5b803590602001918460208302840111640100000000831117156108f457600080fd5b91939092909160208101903564010000000081111561091257600080fd5b82018360208201111561092457600080fd5b8035906020019184602083028401116401000000008311171561094657600080fd5b91939092909160208101903564010000000081111561096457600080fd5b82018360208201111561097657600080fd5b8035906020019184602083028401116401000000008311171561099857600080fd5b509092509050611552565b61022261169a565b610222600480360360208110156109c157600080fd5b50356116a9565b610206600480360360408110156109de57600080fd5b506001600160a01b038135811691602001351661171e565b6102fc60048036036040811015610a0c57600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115610a3757600080fd5b820183602082011115610a4957600080fd5b80359060200191846020830284011164010000000083111715610a6b57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061174c945050505050565b6102fc60048036036020811015610abf57600080fd5b50356001600160a01b0316611807565b6102fc60048036036060811015610ae557600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135640100000000811115610b1957600080fd5b820183602082011115610b2b57600080fd5b80359060200191846020830284011164010000000083111715610b4d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611878945050505050565b60006001600160e01b031982167f8b8b4ef5000000000000000000000000000000000000000000000000000000001480610bc95750610bc982611984565b90505b919050565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c5c5780601f10610c3157610100808354040283529160200191610c5c565b820191906000526020600020905b815481529060010190602001808311610c3f57829003601f168201915b505050505090505b90565b6000818152600460205260408120546001600160a01b038116610cd1576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b600160a01b811615610cfc5750506000818152600660205260409020546001600160a01b0316610bcc565b6000915050610bcc565b60008181526004602052604090205480610d67576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b806001600160a01b038481169082161415610dc9576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b610dda81610dd5611a51565b611a5b565b610e2b576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b6001600160a01b038416610e6557600160a01b821615610e605760008381526004602052604090206001600160a01b03821690555b610ec6565b600160a01b8217808314610e855760008481526004602052604090208190555b50600083815260066020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b610f2a838383604051806020016040528060008152506000611aa9565b505050565b610f3f610f3a611a51565b611ba1565b610f5b8282604051806020016040528060008152506000611c0e565b5050565b610f2a838383604051806020016040528060008152506001611aa9565b610f87610f3a611a51565b610f5b8282611cd9565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610bc957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110905780601f1061106557610100808354040283529160200191611090565b820191906000526020600020905b81548152906001019060200180831161107357829003601f168201915b505050505081565b6000818152600460205260408120546001600160a01b038116610bc9576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b60006001600160a01b03821661115f576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b506001600160a01b031660009081526005602052604090205490565b61118b611186611a51565b611dca565b84838114801561119a57508082145b6111eb576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b8181146112635761125b88888381811061120457fe5b905060200201356001600160a01b031685858481811061122057fe5b9050602002013588888581811061123357fe5b905060200201356001600160a01b03166001600160a01b0316611e8e9092919063ffffffff16565b6001016111ee565b5050505050505050565b6000611277611a51565b905060006112858483611a5b565b90506112948484836000611f0e565b60405183906000906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a450505050565b6112dd611186611a51565b6112e960078383612b44565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b611359610f3a611a51565b610f2a8383836001611c0e565b6000546001600160a01b031690565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610c5c5780601f10610c3157610100808354040283529160200191610c5c565b6113de611186611a51565b6113e781612069565b50565b60006113f4611a51565b90506113ff81611ba1565b6001600160a01b038116600081815260086020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b6000611452611a51565b9050806001600160a01b0316836001600160a01b031614156114bb576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260036020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b60086020526000908152604090205460ff1681565b61154c848484846001611aa9565b50505050565b61155d611186611a51565b84838114801561156c57508082145b6115bd576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611263578585828181106115d357fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a858181106115fe57fe5b905060200201356001600160a01b031687878681811061161a57fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561167757600080fd5b505af115801561168b573d6000803e3d6000fd5b505050508060010190506115c0565b60606116a46120b5565b905090565b6000818152600460205260409020546060906001600160a01b0316611715576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b610bc9826120f9565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6000611756611a51565b905060006117648483611a5b565b835190915060005b8181146117d957600085828151811061178157fe5b602002602001015190506117988782866001611f0e565b60405181906000906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45060010161176c565b508015611800576001600160a01b0385166000908152600560205260409020805482900390555b5050505050565b611812611186611a51565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b0382166118d3576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b60006118dd611a51565b905060006118eb8583611a5b565b835190915060005b81811461196a57600085828151811061190857fe5b602002602001015190506119208888838760016121cc565b80876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4506001016118f3565b50801561197c5761197c8686836122f3565b505050505050565b60006001600160e01b031982167f01ffc9a70000000000000000000000000000000000000000000000000000000014806119e757506001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000145b80611a1b57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610bc95750506001600160e01b0319167ff3993d11000000000000000000000000000000000000000000000000000000001490565b60006116a461233e565b6000816001600160a01b0316836001600160a01b03161480611aa257506001600160a01b0380841660009081526003602090815260408083209386168352929052205460ff165b9392505050565b6001600160a01b038416611b04576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b6000611b0e611a51565b90506000611b1c8783611a5b565b9050611b2c8787878460006121cc565b84866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4828015611b875750611b87866001600160a01b031661249e565b15611b9857611b98878787876124a4565b50505050505050565b6001600160a01b03811660009081526008602052604090205460ff166113e7576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416611c69576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b611c7584846000612626565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808015611cc75750611cc7846001600160a01b031661249e565b1561154c5761154c60008585856124a4565b6001600160a01b038216611d34576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b805160005b818114611da5576000838281518110611d4e57fe5b60200260200101519050611d6485826001612626565b60405181906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450600101611d39565b506001600160a01b039092166000908152600560205260409020805490920190915550565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0357600080fd5b505afa158015611e17573d6000803e3d6000fd5b505050506040513d6020811015611e2d57600080fd5b50516001600160a01b038281169116146113e7576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610f2a9084906126c8565b6000838152600460205260409020546001600160a01b0385811690821614611f7d576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a206e6f6e2d6f776e6564204e46540000000000000000000000604482015290519081900360640190fd5b8261200e57600160a01b811615801590611fbd57506000848152600660205260409020546001600160a01b0316611fb2611a51565b6001600160a01b0316145b61200e576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b60008481526004602052604090207fdead00000000000000000000000000000000000000000000000000000000000090558161180057505050506001600160a01b031660009081526005602052604090208054600019019055565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b60606120bf6128ab565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b6060600761210683612a0e565b60405160200180838054600181600116156101000203166002900480156121645780601f10612142576101008083540402835291820191612164565b820191906000526020600020905b815481529060010190602001808311612150575b5050825160208401908083835b602083106121905780518252601f199092019160209182019101612171565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b6000838152600460205260409020546001600160a01b038681169082161461223b576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a206e6f6e2d6f776e6564204e46540000000000000000000000604482015290519081900360640190fd5b826122cc57600160a01b81161580159061227b57506000848152600660205260409020546001600160a01b0316612270611a51565b6001600160a01b0316145b6122cc576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b60008481526004602052604090206001600160a01b03861690558161197c5761197c868660015b816001600160a01b0316836001600160a01b031614610f2a576001600160a01b0380841660009081526005602052604080822080548590039055918416815220805482019055505050565b6000338161234a612b1d565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806123bd57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b156123cb579150610c649050565b6001600160a01b038216321480159061248a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561245d57600080fd5b505afa158015612471573d6000803e3d6000fd5b505050506040513d602081101561248757600080fd5b50515b15612498579150610c649050565b50905090565b3b151590565b7f150b7a02000000000000000000000000000000000000000000000000000000006001600160a01b03841663150b7a026124dc611a51565b8786866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561254f578181015183820152602001612537565b50505050905090810190601f16801561257c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561259e57600080fd5b505af11580156125b2573d6000803e3d6000fd5b505050506040513d60208110156125c857600080fd5b50516001600160e01b0319161461154c576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220726566757365640000000000000000604482015290519081900360640190fd5b60008281526004602052604090205415612687576040805162461bcd60e51b815260206004820152601a60248201527f4552433732313a206578697374696e672f6275726e74204e4654000000000000604482015290519081900360640190fd5b60008281526004602052604090206001600160a01b038416905580610f2a5750506001600160a01b0316600090815260056020526040902080546001019055565b816126db6001600160a01b03821661249e565b61272c576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106127695780518252601f19909201916020918201910161274a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146127cb576040519150601f19603f3d011682016040523d82523d6000602084013e6127d0565b606091505b5091509150811561284f5780511561284a578080602001905160208110156127f757600080fd5b505161284a576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b611800565b80516128a2576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681148061291757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b1561292e57612924612b29565b9250925050612a0a565b6001600160a01b03811632148015906129f457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6612979612b1d565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156129c757600080fd5b505afa1580156129db573d6000803e3d6000fd5b505050506040513d60208110156129f157600080fd5b50515b15612a0157612924612b29565b60003692509250505b9091565b606081612a4f575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610bcc565b8160005b8115612a6757600101600a82049150612a53565b60008167ffffffffffffffff81118015612a8057600080fd5b506040519080825280601f01601f191660200182016040528015612aab576020820181803683370190505b50859350905060001982015b8315612b1457600a840660300160f81b82828060019003935081518110612ada57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350612ab7565b50949350505050565b60131936013560601c90565b366000612b3c6013198301828481612be5565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282612b7a5760008555612bc0565b82601f10612b935782800160ff19823516178555612bc0565b82800160010185558215612bc0579182015b82811115612bc0578235825591602001919060010190612ba5565b50612bcc929150612bd0565b5090565b5b80821115612bcc5760008155600101612bd1565b60008085851115612bf4578182fd5b83861115612c00578182fd5b505082019391909203915056fea2646970667358221220e9d914cee366764c264c573aa8e36167d8ca788085a328ed7938866efac6a0cd64736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8832E6E3 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x9C8 JUMPI DUP1 PUSH4 0xF2472965 EQ PUSH2 0x9F6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xAA9 JUMPI DUP1 PUSH4 0xF3993D11 EQ PUSH2 0xACF JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x7C9 JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0x88F JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0x9A3 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x9AB JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x983B2D56 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x747 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0x76D JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x775 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0x7A3 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x8832E6E3 EQ PUSH2 0x67C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x737 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x73F JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x4684D7E9 GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x4CC JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x5E0 JUMPI DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0x60C JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x4684D7E9 EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x449 JUMPI DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x46F JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x477 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2D0 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x360 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x297 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xB8B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x222 PUSH2 0xBD1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x244 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x289 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC67 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD06 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF0D JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF2F JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF5F JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xF7C SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF91 JUMP JUMPDEST PUSH2 0x222 PUSH2 0x100A JUMP JUMPDEST PUSH2 0x2B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x48D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1098 JUMP JUMPDEST PUSH2 0x4BA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1102 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x561 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x117B JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x126D JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x64F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x12D2 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x134E SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2B4 PUSH2 0x1366 JUMP JUMPDEST PUSH2 0x222 PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x75D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13D3 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x13EA JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x78B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1448 JUMP JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1529 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x7DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x81A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x82C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x153E SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x8F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x912 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x924 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x946 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x964 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x976 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x998 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1552 JUMP JUMPDEST PUSH2 0x222 PUSH2 0x169A JUMP JUMPDEST PUSH2 0x222 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x16A9 JUMP JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x171E JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x174C SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xABF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xAE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1878 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x8B8B4EF500000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xBC9 JUMPI POP PUSH2 0xBC9 DUP3 PUSH2 0x1984 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xC5C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC31 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC5C 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 0xC3F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xCD1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO PUSH2 0xCFC JUMPI POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCC JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0xBCC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0xD67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP1 DUP3 AND EQ ISZERO PUSH2 0xDC9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xDDA DUP2 PUSH2 0xDD5 PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0x1A5B JUMP JUMPDEST PUSH2 0xE2B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xE65 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0xE60 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SSTORE JUMPDEST PUSH2 0xEC6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0xE85 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE JUMPDEST DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0xF2A DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x1AA9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xF3F PUSH2 0xF3A PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0x1BA1 JUMP JUMPDEST PUSH2 0xF5B DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x1C0E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xF2A DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x1AA9 JUMP JUMPDEST PUSH2 0xF87 PUSH2 0xF3A PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0xF5B DUP3 DUP3 PUSH2 0x1CD9 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xBC9 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1090 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1065 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1090 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 0x1073 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xBC9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x115F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207A65726F2061646472657373000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x118B PUSH2 0x1186 PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0x1DCA JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x119A JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x11EB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1263 JUMPI PUSH2 0x125B DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x1204 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1220 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1233 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E8E SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x11EE JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1277 PUSH2 0x1A51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1285 DUP5 DUP4 PUSH2 0x1A5B JUMP JUMPDEST SWAP1 POP PUSH2 0x1294 DUP5 DUP5 DUP4 PUSH1 0x0 PUSH2 0x1F0E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x12DD PUSH2 0x1186 PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0x12E9 PUSH1 0x7 DUP4 DUP4 PUSH2 0x2B44 JUMP JUMPDEST POP PUSH32 0x4B1DC5C136A3CE9FDED8DB0CE3D3366C58764EC3A8E4C2B9E52E4DDFE5EBBF7 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG1 POP POP JUMP JUMPDEST PUSH2 0x1359 PUSH2 0xF3A PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0xF2A DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1C0E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xC5C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC31 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC5C JUMP JUMPDEST PUSH2 0x13DE PUSH2 0x1186 PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0x13E7 DUP2 PUSH2 0x2069 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F4 PUSH2 0x1A51 JUMP JUMPDEST SWAP1 POP PUSH2 0x13FF DUP2 PUSH2 0x1BA1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1452 PUSH2 0x1A51 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x14BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x154C DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x1AA9 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x155D PUSH2 0x1186 PUSH2 0x1A51 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x156C JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x15BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1263 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x15D3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x15FE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x161A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x168B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x15C0 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x16A4 PUSH2 0x20B5 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1715 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xBC9 DUP3 PUSH2 0x20F9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 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 PUSH2 0x1756 PUSH2 0x1A51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1764 DUP5 DUP4 PUSH2 0x1A5B JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x17D9 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1781 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1798 DUP8 DUP3 DUP7 PUSH1 0x1 PUSH2 0x1F0E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP PUSH1 0x1 ADD PUSH2 0x176C JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x1800 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1812 PUSH2 0x1186 PUSH2 0x1A51 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x18D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F207A65726F0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x18DD PUSH2 0x1A51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x18EB DUP6 DUP4 PUSH2 0x1A5B JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x196A JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1908 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1920 DUP9 DUP9 DUP4 DUP8 PUSH1 0x1 PUSH2 0x21CC JUMP JUMPDEST DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 ADD PUSH2 0x18F3 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x197C JUMPI PUSH2 0x197C DUP7 DUP7 DUP4 PUSH2 0x22F3 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x19E7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x1A1B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xBC9 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xF3993D1100000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16A4 PUSH2 0x233E JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1AA2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1B04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F207A65726F0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1B0E PUSH2 0x1A51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B1C DUP8 DUP4 PUSH2 0x1A5B JUMP JUMPDEST SWAP1 POP PUSH2 0x1B2C DUP8 DUP8 DUP8 DUP5 PUSH1 0x0 PUSH2 0x21CC JUMP JUMPDEST DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP3 DUP1 ISZERO PUSH2 0x1B87 JUMPI POP PUSH2 0x1B87 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x249E JUMP JUMPDEST ISZERO PUSH2 0x1B98 JUMPI PUSH2 0x1B98 DUP8 DUP8 DUP8 DUP8 PUSH2 0x24A4 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x13E7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1C69 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F207A65726F000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1C75 DUP5 DUP5 PUSH1 0x0 PUSH2 0x2626 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 DUP1 DUP1 ISZERO PUSH2 0x1CC7 JUMPI POP PUSH2 0x1CC7 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x249E JUMP JUMPDEST ISZERO PUSH2 0x154C JUMPI PUSH2 0x154C PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0x24A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D34 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F207A65726F000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1DA5 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1D4E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1D64 DUP6 DUP3 PUSH1 0x1 PUSH2 0x2626 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP PUSH1 0x1 ADD PUSH2 0x1D39 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E17 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x13E7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xF2A SWAP1 DUP5 SWAP1 PUSH2 0x26C8 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x1F7D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6F776E6564204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x200E JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1FBD JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1FB2 PUSH2 0x1A51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x200E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH32 0xDEAD000000000000000000000000000000000000000000000000000000000000 SWAP1 SSTORE DUP2 PUSH2 0x1800 JUMPI POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x20BF PUSH2 0x28AB JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 PUSH2 0x2106 DUP4 PUSH2 0x2A0E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2164 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2142 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x2164 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 0x2150 JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2190 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2171 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x223B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6F776E6564204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x22CC JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x227B JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2270 PUSH2 0x1A51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x22CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 SSTORE DUP2 PUSH2 0x197C JUMPI PUSH2 0x197C DUP7 DUP7 PUSH1 0x1 JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xF2A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE SWAP2 DUP5 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x234A PUSH2 0x2B1D JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x23BD JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x23CB JUMPI SWAP2 POP PUSH2 0xC64 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x248A JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x245D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2471 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2487 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x2498 JUMPI SWAP2 POP PUSH2 0xC64 SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0x150B7A02 PUSH2 0x24DC PUSH2 0x1A51 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x254F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2537 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x257C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x259E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x25B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x154C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220726566757365640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2687 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206578697374696E672F6275726E74204E4654000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 SSTORE DUP1 PUSH2 0xF2A JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH2 0x26DB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x249E JUMP JUMPDEST PUSH2 0x272C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2769 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x274A JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x27CB 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 0x27D0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x284F JUMPI DUP1 MLOAD ISZERO PUSH2 0x284A JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x284A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1800 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x28A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x2917 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x292E JUMPI PUSH2 0x2924 PUSH2 0x2B29 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x2A0A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x29F4 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x2979 PUSH2 0x2B1D JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x2A01 JUMPI PUSH2 0x2924 PUSH2 0x2B29 JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x2A4F JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xBCC JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x2A67 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x2A53 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2A80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x2AAB JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x2B14 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x2ADA JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x2AB7 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x2B3C PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x2BE5 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2B7A JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x2BC0 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2B93 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x2BC0 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2BC0 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2BC0 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2BA5 JUMP JUMPDEST POP PUSH2 0x2BCC SWAP3 SWAP2 POP PUSH2 0x2BD0 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2BCC JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2BD1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x2BF4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x2C00 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE9 0xD9 EQ 0xCE 0xE3 PUSH7 0x764C264C573AA8 0xE3 PUSH2 0x67D8 0xCA PUSH25 0x8085A328ED7938866EFAC6A0CD64736F6C6343000706003300 ",
              "sourceMap": "969:2419:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;782:203:63;;;;;;;;;;;;;;;;-1:-1:-1;782:203:63;-1:-1:-1;;;;;;782:203:63;;:::i;:::-;;;;;;;;;;;;;;;;;;2770:98:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4685:374;;;;;;;;;;;;;;;;-1:-1:-1;4685:374:62;;:::i;:::-;;;;-1:-1:-1;;;;;4685:374:62;;;;;;;;;;;;;;3665:986;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3665:986:62;;;;;;;;:::i;:::-;;5613:272;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5613:272:62;;;;;;;;;;;;;;;;;:::i;1960:147:73:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1960:147:73;;;;;;;;:::i;5919:275:62:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5919:275:62;;;;;;;;;;;;;;;;;:::i;2201:157:73:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2201:157:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2201:157:73;;-1:-1:-1;2201:157:73;;-1:-1:-1;;;;;2201:157:73:i;544:193:85:-;;;;;;;;;;;;;;;;-1:-1:-1;544:193:85;-1:-1:-1;;;;;544:193:85;;:::i;552:29:11:-;;;:::i;3395:236:62:-;;;;;;;;;;;;;;;;-1:-1:-1;3395:236:62;;:::i;3175:186::-;;;;;;;;;;;;;;;;-1:-1:-1;3175:186:62;-1:-1:-1;;;;;3175:186:62;;:::i;:::-;;;;;;;;;;;;;;;;1137:481:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1137:481:8;;-1:-1:-1;1137:481:8;-1:-1:-1;1137:481:8;:::i;1156:277:63:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1156:277:63;;;;;;;;:::i;588:214:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;588:214:11;;-1:-1:-1;588:214:11;-1:-1:-1;588:214:11;:::i;2452:201:73:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2452:201:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2452:201:73;;-1:-1:-1;2452:201:73;;-1:-1:-1;;;;;2452:201:73:i;1114:94:2:-;;;:::i;2910:102:62:-;;;:::i;694:120:1:-;;;;;;;;;;;;;;;;-1:-1:-1;694:120:1;-1:-1:-1;;;;;694:120:1;;:::i;929:185::-;;;:::i;5093:298:62:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5093:298:62;;;;;;;;;;:::i;339:40:1:-;;;;;;;;;;;;;;;;-1:-1:-1;339:40:1;-1:-1:-1;;;;;339:40:1;;:::i;6228:304:62:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6228:304:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6228:304:62;;-1:-1:-1;6228:304:62;;-1:-1:-1;;;;;6228:304:62:i;2430:511:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2430:511:8;;-1:-1:-1;2430:511:8;-1:-1:-1;2430:511:8;:::i;3292:94:73:-;;;:::i;1521:216::-;;;;;;;;;;;;;;;;-1:-1:-1;1521:216:73;;:::i;5425:154:62:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5425:154:62;;;;;;;;;;:::i;1475:519:63:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1475:519:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1475:519:63;;-1:-1:-1;1475:519:63;;-1:-1:-1;;;;;1475:519:63:i;1448:197:2:-;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;6708:644:62:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6708:644:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6708:644:62;;-1:-1:-1;6708:644:62;;-1:-1:-1;;;;;6708:644:62:i;782:203:63:-;867:4;-1:-1:-1;;;;;;890:48:63;;905:33;890:48;;:88;;;942:36;966:11;942:23;:36::i;:::-;883:95;;782:203;;;;:::o;2770:98:62:-;2856:5;2849:12;;;;;;;;-1:-1:-1;;2849:12:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2824:13;;2849:12;;2856:5;;2849:12;;2856:5;2849:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2770:98;;:::o;4685:374::-;4761:7;4796:16;;;:7;:16;;;;;;-1:-1:-1;;;;;4830:37:62;;4822:74;;;;;-1:-1:-1;;;4822:74:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4910:34:62;;:39;4906:147;;-1:-1:-1;;4972:22:62;;;;:13;:22;;;;;;-1:-1:-1;;;;;4972:22:62;4965:29;;4906:147;5040:1;5025:17;;;;;3665:986;3745:13;3761:16;;;:7;:16;;;;;;3795:10;3787:47;;;;;-1:-1:-1;;;3787:47:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;3883:5;-1:-1:-1;;;;;3908:18:62;;;;;;;;3900:52;;;;;-1:-1:-1;;;3900:52:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:41;3984:12;3998;:10;:12::i;:::-;3970:13;:41::i;:::-;3962:81;;;;;-1:-1:-1;;;3962:81:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4057:16:62;;4053:542;;-1:-1:-1;;;4093:34:62;;:39;4089:178;;4212:16;;;;:7;:16;;;;;-1:-1:-1;;;;;4231:21:62;;4212:40;;4089:178;4053:542;;;-1:-1:-1;;;4328:34:62;;4380:29;;;4376:168;;4490:16;;;;:7;:16;;;;;:39;;;4376:168;-1:-1:-1;4557:22:62;;;;:13;:22;;;;;:27;;;;-1:-1:-1;;;;;4557:27:62;;;;;4053:542;4636:7;4632:2;-1:-1:-1;;;;;4609:35:62;4618:12;-1:-1:-1;;;;;4609:35:62;;;;;;;;;;;3665:986;;;;:::o;5613:272::-;5742:136;5769:4;5787:2;5803:7;5742:136;;;;;;;;;;;;5863:5;5742:13;:136::i;:::-;5613:272;;;:::o;1960:147:73:-;2035:28;2050:12;:10;:12::i;:::-;2035:14;:28::i;:::-;2073:27;2079:2;2083:5;2073:27;;;;;;;;;;;;2094:5;2073;:27::i;:::-;1960:147;;:::o;5919:275:62:-;6052:135;6079:4;6097:2;6113:7;6052:135;;;;;;;;;;;;6173:4;6052:13;:135::i;2201:157:73:-;2291:28;2306:12;:10;:12::i;2291:28::-;2329:22;2340:2;2344:6;2329:10;:22::i;544:193:85:-;631:4;667:19;-1:-1:-1;;;;;654:32:85;:9;-1:-1:-1;;;;;654:32:85;;:76;;;;711:18;-1:-1:-1;;;;;690:40:85;:9;-1:-1:-1;;;;;690:40:85;;647:83;;544:193;;;:::o;552:29:11:-;;;;;;;;;;;;;;;-1:-1:-1;;552:29:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3395:236:62:-;3467:7;3518:16;;;:7;:16;;;;;;-1:-1:-1;;;;;3554:19:62;;3546:56;;;;;-1:-1:-1;;;3546:56:62;;;;;;;;;;;;;;;;;;;;;;;;;;;3175:186;3247:7;-1:-1:-1;;;;;3274:19:62;;3266:52;;;;;-1:-1:-1;;;3266:52:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3335:19:62;;;;;:12;:19;;;;;;;3175:186::o;1137:481:8:-;1301:31;1319:12;:10;:12::i;:::-;1301:17;:31::i;:::-;1359:8;1392:23;;;:51;;;;-1:-1:-1;1419:24:8;;;1392:51;1384:90;;;;;-1:-1:-1;;;1384:90:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;1489:9;1484:128;1509:6;1504:1;:11;1484:128;;1536:65;1577:8;;1586:1;1577:11;;;;;;;;;;;;;-1:-1:-1;;;;;1577:11:8;1590:7;;1598:1;1590:10;;;;;;;;;;;;;1550:6;;1557:1;1550:9;;;;;;;;;;;;;-1:-1:-1;;;;;1550:9:8;-1:-1:-1;;;;;1536:40:8;;;:65;;;;;:::i;:::-;1517:3;;1484:128;;;;1137:481;;;;;;;:::o;1156:277:63:-;1239:14;1256:12;:10;:12::i;:::-;1239:29;;1278:15;1296:27;1310:4;1316:6;1296:13;:27::i;:::-;1278:45;;1334:42;1343:4;1349:7;1358:10;1370:5;1334:8;:42::i;:::-;1391:35;;1418:7;;1414:1;;-1:-1:-1;;;;;1391:35:63;;;;;1414:1;;1391:35;1156:277;;;;:::o;588:214:11:-;669:31;687:12;:10;:12::i;669:31::-;710:34;:15;728:16;;710:34;:::i;:::-;;759:36;778:16;;759:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;759:36:11;;;;;;;;-1:-1:-1;759:36:11;;-1:-1:-1;;;;759:36:11;588:214;;:::o;2452:201:73:-;2580:28;2595:12;:10;:12::i;2580:28::-;2618;2624:2;2628:5;2635:4;2641;2618:5;:28::i;1114:94:2:-;1169:7;1195:6;-1:-1:-1;;;;;1195:6:2;1114:94;:::o;2910:102:62:-;2998:7;2991:14;;;;;;;-1:-1:-1;;2991:14:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2966:13;;2991:14;;2998:7;;2991:14;;2998:7;2991:14;;;;;;;;;;;;;;;;;;;;;;;;694:120:1;747:31;765:12;:10;:12::i;747:31::-;788:19;799:7;788:10;:19::i;:::-;694:120;:::o;929:185::-;972:15;990:12;:10;:12::i;:::-;972:30;;1012:23;1027:7;1012:14;:23::i;:::-;-1:-1:-1;;;;;1045:17:1;;1065:5;1045:17;;;:8;:17;;;;;;:25;;-1:-1:-1;;1045:25:1;;;1085:22;;;1065:5;1085:22;929:185;:::o;5093:298:62:-;5187:14;5204:12;:10;:12::i;:::-;5187:29;;5246:6;-1:-1:-1;;;;;5234:18:62;:8;-1:-1:-1;;;;;5234:18:62;;;5226:52;;;;;-1:-1:-1;;;5226:52:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5288:18:62;;;;;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;;:39;;-1:-1:-1;;5288:39:62;;;;;;;;;;5342:42;;;;;;;;;;;;;;;;;5093:298;;;:::o;339:40:1:-;;;;;;;;;;;;;;;:::o;6228:304:62:-;6388:137;6415:4;6433:2;6449:7;6470:4;6511;6388:13;:137::i;:::-;6228:304;;;;:::o;2430:511:8:-;2599:31;2617:12;:10;:12::i;2599:31::-;2657:8;2690:26;;;:55;;;;-1:-1:-1;2720:25:8;;;2690:55;2682:94;;;;;-1:-1:-1;;;2682:94:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:9;2786:149;2811:6;2806:1;:11;2786:149;;2857:9;;2867:1;2857:12;;;;;;;;;;;;;-1:-1:-1;;;;;2857:12:8;-1:-1:-1;;;;;2838:45:8;;2892:4;2899:8;;2908:1;2899:11;;;;;;;;;;;;;-1:-1:-1;;;;;2899:11:8;2912:8;;2921:1;2912:11;;;;;;;;;;;;;2838:86;;;;;;;;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:3;;;;;2786:149;;3292:94:73;3334:16;3369:10;:8;:10::i;:::-;3362:17;;3292:94;:::o;1521:216::-;1671:1;1643:14;;;:7;:14;;;;;;1594:13;;-1:-1:-1;;;;;1627:46:73;1619:83;;;;;-1:-1:-1;;;1619:83:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;1719:11;1724:5;1719:4;:11::i;5425:154:62:-;-1:-1:-1;;;;;5545:17:62;;;5522:4;5545:17;;;:10;:17;;;;;;;;:27;;;;;;;;;;;;;;;5425:154::o;1475:519:63:-;1573:14;1590:12;:10;:12::i;:::-;1573:29;;1612:15;1630:27;1644:4;1650:6;1630:13;:27::i;:::-;1685:15;;1612:45;;-1:-1:-1;1668:14:63;1711:197;1732:6;1727:1;:11;1711:197;;1759:15;1777:8;1786:1;1777:11;;;;;;;;;;;;;;1759:29;;1802:41;1811:4;1817:7;1826:10;1838:4;1802:8;:41::i;:::-;1862:35;;1889:7;;1885:1;;-1:-1:-1;;;;;1862:35:63;;;;;1885:1;;1862:35;-1:-1:-1;1740:3:63;;1711:197;;;-1:-1:-1;1922:11:63;;1918:70;;-1:-1:-1;;;;;1949:18:63;;;;;;:12;:18;;;;;:28;;;;;;;1918:70;1475:519;;;;;:::o;1448:197:2:-;1527:31;1545:12;:10;:12::i;1527:31::-;1568:6;:17;;;;-1:-1:-1;;;;;1568:17:2;;;;;;;;;1600:38;;1568:17;;1621:6;;;1600:38;;1568:6;1600:38;1448:197;:::o;6708:644:62:-;-1:-1:-1;;;;;6860:16:62;;6852:53;;;;;-1:-1:-1;;;6852:53:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;6915:14;6932:12;:10;:12::i;:::-;6915:29;;6954:15;6972:27;6986:4;6992:6;6972:13;:27::i;:::-;7027:15;;6954:45;;-1:-1:-1;7010:14:62;7053:197;7074:6;7069:1;:11;7053:197;;7101:15;7119:8;7128:1;7119:11;;;;;;;;;;;;;;7101:29;;7144:49;7157:4;7163:2;7167:7;7176:10;7188:4;7144:12;:49::i;:::-;7231:7;7227:2;-1:-1:-1;;;;;7212:27:62;7221:4;-1:-1:-1;;;;;7212:27:62;;;;;;;;;;;-1:-1:-1;7082:3:62;;7053:197;;;-1:-1:-1;7264:11:62;;7260:86;;7291:44;7318:4;7324:2;7328:6;7291:26;:44::i;:::-;6708:644;;;;;;:::o;2243:356::-;2328:4;-1:-1:-1;;;;;;2363:40:62;;2378:25;2363:40;;:96;;-1:-1:-1;;;;;;;2419:40:62;;2434:25;2419:40;2363:96;:160;;;-1:-1:-1;;;;;;;2475:48:62;;2490:33;2475:48;2363:160;:229;;;-1:-1:-1;;;;;;;;2539:53:62;2554:38;2539:53;;2243:356::o;2788:183:73:-;2893:15;2927:37;:35;:37::i;11275:158:62:-;11359:4;11391:6;-1:-1:-1;;;;;11383:14:62;:4;-1:-1:-1;;;;;11383:14:62;;11382:44;;;-1:-1:-1;;;;;;11402:16:62;;;;;;;:10;:16;;;;;;;;:24;;;;;;;;;;;;11382:44;11375:51;11275:158;-1:-1:-1;;;11275:158:62:o;8293:528::-;-1:-1:-1;;;;;8462:16:62;;8454:53;;;;;-1:-1:-1;;;8454:53:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;8517:14;8534:12;:10;:12::i;:::-;8517:29;;8556:15;8574:27;8588:4;8594:6;8574:13;:27::i;:::-;8556:45;;8612:50;8625:4;8631:2;8635:7;8644:10;8656:5;8612:12;:50::i;:::-;8697:7;8693:2;-1:-1:-1;;;;;8678:27:62;8687:4;-1:-1:-1;;;;;8678:27:62;;;;;;;;;;;8719:4;:23;;;;;8727:15;:2;-1:-1:-1;;;;;8727:13:62;;:15::i;:::-;8715:100;;;8758:46;8780:4;8786:2;8790:7;8799:4;8758:21;:46::i;:::-;8293:528;;;;;;;:::o;1120:126:1:-;-1:-1:-1;;;;;1193:17:1;;;;;;:8;:17;;;;;;;;1185:54;;;;;-1:-1:-1;;;1185:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;7487:390:62;-1:-1:-1;;;;;7626:16:62;;7618:49;;;;;-1:-1:-1;;;7618:49:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;7678:28;7687:2;7691:7;7700:5;7678:8;:28::i;:::-;7722:33;;7747:7;;-1:-1:-1;;;;;7722:33:62;;;7739:1;;7722:33;;7739:1;;7722:33;7769:4;:23;;;;;7777:15;:2;-1:-1:-1;;;;;7777:13:62;;:15::i;:::-;7765:106;;;7808:52;7838:1;7842:2;7846:7;7855:4;7808:21;:52::i;7883:404::-;-1:-1:-1;;;;;7969:16:62;;7961:49;;;;;-1:-1:-1;;;7961:49:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;8038:15;;8021:14;8063:181;8084:6;8079:1;:11;8063:181;;8111:15;8129:8;8138:1;8129:11;;;;;;;;;;;;;;8111:29;;8154:27;8163:2;8167:7;8176:4;8154:8;:27::i;:::-;8200:33;;8225:7;;-1:-1:-1;;;;;8200:33:62;;;8217:1;;8200:33;;8217:1;;8200:33;-1:-1:-1;8092:3:62;;8063:181;;;-1:-1:-1;;;;;;8254:16:62;;;;;;;:12;:16;;;;;:26;;;;;;;;-1:-1:-1;7883:404:62:o;1770:136:2:-;1860:4;-1:-1:-1;;;;;1860:10:2;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1860:12:2;-1:-1:-1;;;;;1849:23:2;;;;;;1841:58;;;;;-1:-1:-1;;;1841:58:2;;;;;;;;;;;;;;;;;;;;;;;;;;;416:223:6;573:58;;;-1:-1:-1;;;;;573:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;596:23;573:58;;;538:94;;566:5;;538:27;:94::i;2129:604:63:-;2269:13;2285:11;;;:7;:11;;;;;;-1:-1:-1;;;;;2314:31:63;;;;;;;2306:65;;;;;-1:-1:-1;;;2306:65:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:10;2381:160;;-1:-1:-1;;;2421:34:63;;:39;;;;2420:78;;-1:-1:-1;2481:17:63;;;;:13;:17;;;;;;-1:-1:-1;;;;;2481:17:63;2465:12;:10;:12::i;:::-;-1:-1:-1;;;;;2465:33:63;;2420:78;2412:118;;;;;-1:-1:-1;;;2412:118:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;2550:11;;;;:7;:11;;;;;1351:66:62;2550:30:63;;2596:7;2591:136;;-1:-1:-1;;;;;;;;;2698:18:63;;;;;:12;:18;;;;;2696:20;;-1:-1:-1;;2696:20:63;;;2129:604::o;1252:122:1:-;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;2977:180:73:-;3080:16;3115:35;:33;:35::i;:::-;3108:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3108:42:73;;-1:-1:-1;;;;2977:180:73;:::o;808:159:11:-;865:13;921:15;938:20;:2;:18;:20::i;:::-;904:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:11;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;890:70;;808:159;;;:::o;8956:573:62:-;9120:13;9136:11;;;:7;:11;;;;;;-1:-1:-1;;;;;9165:31:62;;;;;;;9157:65;;;;;-1:-1:-1;;;9157:65:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;9237:10;9232:160;;-1:-1:-1;;;9272:34:62;;:39;;;;9271:78;;-1:-1:-1;9332:17:62;;;;:13;:17;;;;;;-1:-1:-1;;;;;9332:17:62;9316:12;:10;:12::i;:::-;-1:-1:-1;;;;;9316:33:62;;9271:78;9263:118;;;;;-1:-1:-1;;;9263:118:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;9401:11;;;;:7;:11;;;;;-1:-1:-1;;;;;9415:20:62;;9401:34;;9450:7;9445:78;;9473:39;9500:4;9506:2;9510:1;9535:381;9682:2;-1:-1:-1;;;;;9674:10:62;:4;-1:-1:-1;;;;;9674:10:62;;9670:240;;-1:-1:-1;;;;;9773:18:62;;;;;;;:12;:18;;;;;;:28;;;;;;;9873:16;;;;;;:26;;;;;;9535:381;;;:::o;743:904:85:-;796:15;851:10;796:15;896:27;:25;:27::i;:::-;871:52;;958:18;-1:-1:-1;;;;;937:40:85;:9;-1:-1:-1;;;;;937:40:85;;:76;;;;994:19;-1:-1:-1;;;;;981:32:85;:9;-1:-1:-1;;;;;981:32:85;;937:76;933:166;;;1082:6;-1:-1:-1;1075:13:85;;-1:-1:-1;1075:13:85;933:166;-1:-1:-1;;;;;1496:22:85;;1509:9;1496:22;;;;:78;;;1522:18;-1:-1:-1;;;;;1522:33:85;;1556:6;1564:9;1522:52;;;;;;;;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1522:52:85;1496:78;1492:122;;;1597:6;-1:-1:-1;1590:13:85;;-1:-1:-1;1590:13:85;1492:122;-1:-1:-1;1631:9:85;-1:-1:-1;743:904:85;:::o;913:377:9:-;1229:20;1275:8;;;913:377::o;10697:285:62:-;1144:33;-1:-1:-1;;;;;10855:36:62;;;10892:12;:10;:12::i;:::-;10906:4;10912:7;10921:4;10855:71;;;;;;;;;;;;;-1:-1:-1;;;;;10855:71:62;;;;;;-1:-1:-1;;;;;10855:71:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10855:71:62;-1:-1:-1;;;;;;10855:91:62;;10847:128;;;;;-1:-1:-1;;;10847:128:62;;;;;;;;;;;;;;;;;;;;;;;;;;;9922:355;10035:11;;;;:7;:11;;;;;;:16;10027:55;;;;;-1:-1:-1;;;10027:55:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;10093:11;;;;:7;:11;;;;;-1:-1:-1;;;;;10107:20:62;;10093:34;;10143:7;10138:133;;-1:-1:-1;;;;;;;10244:16:62;;;;;:12;:16;;;;;10242:18;;;;;;9922:355::o;1147:870:6:-;1272:5;1296:19;-1:-1:-1;;;;;1296:17:6;;;:19::i;:::-;1288:58;;;;;-1:-1:-1;;;1288:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:12;1431:17;1452:6;-1:-1:-1;;;;;1452:11:6;1464:8;1452:21;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1452:21:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:57;;;;1487:7;1483:528;;;1514:11;;:16;1510:122;;1569:4;1558:24;;;;;;;;;;;;;;;-1:-1:-1;1558:24:6;1550:67;;;;;-1:-1:-1;;;1550:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:528;;;1720:11;;1716:95;;1756:40;;;-1:-1:-1;;;1756:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:95;1938:4;1932:11;1982:4;1975;1971:2;1967:13;1960:27;1653:670:85;1704:14;;1758:10;-1:-1:-1;;;;;1803:18:85;1782:40;;;;:76;;;1839:19;-1:-1:-1;;;;;1826:32:85;:9;-1:-1:-1;;;;;1826:32:85;;1782:76;1778:197;;;1927:37;:35;:37::i;:::-;1920:44;;;;;;;1778:197;-1:-1:-1;;;;;2122:22:85;;2135:9;2122:22;;;;:99;;;2148:18;-1:-1:-1;;;;;2148:33:85;;2182:27;:25;:27::i;:::-;2211:9;2148:73;;;;;;;;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2148:73:85;2122:99;2118:174;;;2244:37;:35;:37::i;2118:174::-;2308:8;;2301:15;;;;;1653:670;;;:::o;276:546:10:-;339:13;368:10;364:51;;-1:-1:-1;394:10:10;;;;;;;;;;;;;;;;;;;364:51;439:5;424:12;478:75;485:9;;478:75;;510:8;;540:2;532:10;;;;478:75;;;562:19;594:6;584:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;584:17:10;-1:-1:-1;654:5:10;;-1:-1:-1;562:39:10;-1:-1:-1;;;627:10:10;;669:116;676:9;;669:116;;745:2;738:4;:9;732:2;:16;719:31;;701:6;708:7;;;;;;;701:15;;;;;;;;;;;:49;;;;;;;;;;-1:-1:-1;772:2:10;764:10;;;;669:116;;;-1:-1:-1;808:6:10;276:546;-1:-1:-1;;;;276:546:10:o;103:519:84:-;-1:-1:-1;;585:14:84;581:23;568:37;564:2;560:46;;536:80::o;628:149::-;706:14;;739:31;-1:-1:-1;;749:20:84;;706:14;;;739:31;:::i;:::-;732:38;;;;628:149;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:363:86;;;172:8;160:10;157:24;154:2;;;202:9;191;184:28;154:2;239:6;229:8;226:20;223:2;;;267:9;256;249:28;223:2;-1:-1:-1;;301:23:86;;;346:25;;;;;-1:-1:-1;144:233:86:o"
            },
            "methodIdentifiers": {
              "addMinter(address)": "983b2d56",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "baseMetadataURI()": "5b2bd79e",
              "batchBurnFrom(address,uint256[])": "f2472965",
              "batchMint(address,uint256[])": "4684d7e9",
              "batchTransferFrom(address,address,uint256[])": "f3993d11",
              "burnFrom(address,uint256)": "79cc6790",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isMinter(address)": "aa271e1a",
              "isTrustedForwarder(address)": "572b6c05",
              "mint(address,uint256)": "40c10f19",
              "msgData()": "c4c2bfdc",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "recoverERC20s(address[],address[],uint256[])": "73c8a958",
              "recoverERC721s(address[],address[],uint256[])": "c3666c36",
              "renounceMinter()": "98650275",
              "safeMint(address,uint256,bytes)": "8832e6e3",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setBaseMetadataURI(string)": "7e518ec8",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "contracts/token/ERC721/mocks/ERC721Mock.sol": {
        "ERC721Mock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IForwarderRegistry",
                  "name": "forwarderRegistry",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "universalForwarder",
                  "type": "address"
                }
              ],
              "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": false,
                  "internalType": "string",
                  "name": "baseMetadataURI",
                  "type": "string"
                }
              ],
              "name": "BaseMetadataURISet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterRemoved",
              "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": "account",
                  "type": "address"
                }
              ],
              "name": "addMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "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": [],
              "name": "baseMetadataURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "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": "",
                  "type": "address"
                }
              ],
              "name": "isMinter",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "forwarder",
                  "type": "address"
                }
              ],
              "name": "isTrustedForwarder",
              "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": "msgData",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "ret",
                  "type": "bytes"
                }
              ],
              "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": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC20s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "contracts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC721s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeMint",
              "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": "string",
                  "name": "baseMetadataURI_",
                  "type": "string"
                }
              ],
              "name": "setBaseMetadataURI",
              "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60c06040523480156200001157600080fd5b5060405162002b9238038062002b92833981810160405260408110156200003757600080fd5b508051602091820151604080518082018252600a8152694552433732314d6f636b60b01b818601528151808301835260048152634537323160e01b95810195909552600080546001600160a01b0319163390811782559251949593949293919286918691869182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606091821b811660a05291901b166080528151620000f490600190602085019062000173565b5080516200010a90600290602084019062000173565b5050506200011e816200012760201b60201c565b5050506200021f565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620001ab5760008555620001f6565b82601f10620001c657805160ff1916838001178555620001f6565b82800160010185558215620001f6579182015b82811115620001f6578251825591602001919060010190620001d9565b506200020492915062000208565b5090565b5b8082111562000204576000815560010162000209565b60805160601c60a05160601c61292b6200026760003980610f6f528061205252806125cb525080610faa528061201752806120aa52806125a1528061262c525061292b6000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80638832e6e3116100f9578063b88d4fde11610097578063c87b56dd11610071578063c87b56dd14610918578063e985e9c514610935578063f2fde38b14610963578063f3993d1114610989576101c4565b8063b88d4fde14610736578063c3666c36146107fc578063c4c2bfdc14610910576101c4565b8063983b2d56116100d3578063983b2d56146106b457806398650275146106da578063a22cb465146106e2578063aa271e1a14610710576101c4565b80638832e6e31461061f5780638da5cb5b146106a457806395d89b41146106ac576101c4565b80634684d7e9116101665780636352211e116101405780636352211e1461044657806370a082311461046357806373c8a9581461049b5780637e518ec8146105af576101c4565b80634684d7e914610398578063572b6c05146104185780635b2bd79e1461043e576101c4565b8063095ea7b3116101a2578063095ea7b3146102d257806323b872dd1461030057806340c10f191461033657806342842e0e14610362576101c4565b806301ffc9a7146101c957806306fdde031461021c578063081812fc14610299575b600080fd5b610208600480360360208110156101df57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610a45565b604080519115158252519081900360200190f35b610224610b78565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025e578181015183820152602001610246565b50505050905090810190601f16801561028b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102b6600480360360208110156102af57600080fd5b5035610c0e565b604080516001600160a01b039092168252519081900360200190f35b6102fe600480360360408110156102e857600080fd5b506001600160a01b038135169060200135610cad565b005b6102fe6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610eb4565b6102fe6004803603604081101561034c57600080fd5b506001600160a01b038135169060200135610ed6565b6102fe6004803603606081101561037857600080fd5b506001600160a01b03813581169160208101359091169060400135610f06565b6102fe600480360360408110156103ae57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156103d957600080fd5b8201836020820111156103eb57600080fd5b8035906020019184602083028401116401000000008311171561040d57600080fd5b509092509050610f23565b6102086004803603602081101561042e57600080fd5b50356001600160a01b0316610f6b565b610224610fe4565b6102b66004803603602081101561045c57600080fd5b5035611072565b6104896004803603602081101561047957600080fd5b50356001600160a01b03166110dc565b60408051918252519081900360200190f35b6102fe600480360360608110156104b157600080fd5b8101906020810181356401000000008111156104cc57600080fd5b8201836020820111156104de57600080fd5b8035906020019184602083028401116401000000008311171561050057600080fd5b91939092909160208101903564010000000081111561051e57600080fd5b82018360208201111561053057600080fd5b8035906020019184602083028401116401000000008311171561055257600080fd5b91939092909160208101903564010000000081111561057057600080fd5b82018360208201111561058257600080fd5b803590602001918460208302840111640100000000831117156105a457600080fd5b509092509050611155565b6102fe600480360360208110156105c557600080fd5b8101906020810181356401000000008111156105e057600080fd5b8201836020820111156105f257600080fd5b8035906020019184600183028401116401000000008311171561061457600080fd5b509092509050611247565b6102fe6004803603606081101561063557600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561066557600080fd5b82018360208201111561067757600080fd5b8035906020019184600183028401116401000000008311171561069957600080fd5b5090925090506112c3565b6102b6611318565b610224611327565b6102fe600480360360208110156106ca57600080fd5b50356001600160a01b0316611385565b6102fe61139c565b6102fe600480360360408110156106f857600080fd5b506001600160a01b03813516906020013515156113fa565b6102086004803603602081101561072657600080fd5b50356001600160a01b03166114db565b6102fe6004803603608081101561074c57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561078757600080fd5b82018360208201111561079957600080fd5b803590602001918460018302840111640100000000831117156107bb57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506114f0945050505050565b6102fe6004803603606081101561081257600080fd5b81019060208101813564010000000081111561082d57600080fd5b82018360208201111561083f57600080fd5b8035906020019184602083028401116401000000008311171561086157600080fd5b91939092909160208101903564010000000081111561087f57600080fd5b82018360208201111561089157600080fd5b803590602001918460208302840111640100000000831117156108b357600080fd5b9193909290916020810190356401000000008111156108d157600080fd5b8201836020820111156108e357600080fd5b8035906020019184602083028401116401000000008311171561090557600080fd5b5090925090506114fe565b610224611646565b6102246004803603602081101561092e57600080fd5b5035611655565b6102086004803603604081101561094b57600080fd5b506001600160a01b03813581169160200135166116ca565b6102fe6004803603602081101561097957600080fd5b50356001600160a01b03166116f8565b6102fe6004803603606081101561099f57600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156109d357600080fd5b8201836020820111156109e557600080fd5b80359060200191846020830284011164010000000083111715610a0757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611769945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610ad857507fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000145b80610b2457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610b7057507fffffffff0000000000000000000000000000000000000000000000000000000082167ff3993d1100000000000000000000000000000000000000000000000000000000145b90505b919050565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c035780601f10610bd857610100808354040283529160200191610c03565b820191906000526020600020905b815481529060010190602001808311610be657829003601f168201915b505050505090505b90565b6000818152600460205260408120546001600160a01b038116610c78576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b600160a01b811615610ca35750506000818152600660205260409020546001600160a01b0316610b73565b6000915050610b73565b60008181526004602052604090205480610d0e576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b806001600160a01b038481169082161415610d70576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b610d8181610d7c611875565b61187f565b610dd2576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b6001600160a01b038416610e0c57600160a01b821615610e075760008381526004602052604090206001600160a01b03821690555b610e6d565b600160a01b8217808314610e2c5760008481526004602052604090208190555b50600083815260066020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b610ed18383836040518060200160405280600081525060006118cd565b505050565b610ee6610ee1611875565b6119c5565b610f028282604051806020016040528060008152506000611a32565b5050565b610ed18383836040518060200160405280600081525060016118cd565b610f2e610ee1611875565b610ed183838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611afd92505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610b7057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6007805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561106a5780601f1061103f5761010080835404028352916020019161106a565b820191906000526020600020905b81548152906001019060200180831161104d57829003601f168201915b505050505081565b6000818152600460205260408120546001600160a01b038116610b70576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b60006001600160a01b038216611139576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b506001600160a01b031660009081526005602052604090205490565b611165611160611875565b611bee565b84838114801561117457508082145b6111c5576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461123d576112358888838181106111de57fe5b905060200201356001600160a01b03168585848181106111fa57fe5b9050602002013588888581811061120d57fe5b905060200201356001600160a01b03166001600160a01b0316611cb29092919063ffffffff16565b6001016111c8565b5050505050505050565b611252611160611875565b61125e6007838361282c565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b6112ce610ee1611875565b611312848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250611a32915050565b50505050565b6000546001600160a01b031690565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610c035780601f10610bd857610100808354040283529160200191610c03565b611390611160611875565b61139981611d32565b50565b60006113a6611875565b90506113b1816119c5565b6001600160a01b038116600081815260086020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b6000611404611875565b9050806001600160a01b0316836001600160a01b0316141561146d576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260036020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b60086020526000908152604090205460ff1681565b6113128484848460016118cd565b611509611160611875565b84838114801561151857508082145b611569576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461123d5785858281811061157f57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a858181106115aa57fe5b905060200201356001600160a01b03168787868181106115c657fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561162357600080fd5b505af1158015611637573d6000803e3d6000fd5b5050505080600101905061156c565b6060611650611d7e565b905090565b6000818152600460205260409020546060906001600160a01b03166116c1576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b610b7082611dc2565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b611703611160611875565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b0382166117c4576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b60006117ce611875565b905060006117dc858361187f565b835190915060005b81811461185b5760008582815181106117f957fe5b60200260200101519050611811888883876001611e95565b80876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4506001016117e4565b50801561186d5761186d868683611fbc565b505050505050565b6000611650612007565b6000816001600160a01b0316836001600160a01b031614806118c657506001600160a01b0380841660009081526003602090815260408083209386168352929052205460ff165b9392505050565b6001600160a01b038416611928576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b6000611932611875565b90506000611940878361187f565b9050611950878787846000611e95565b84866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48280156119ab57506119ab866001600160a01b0316612167565b156119bc576119bc8787878761216d565b50505050505050565b6001600160a01b03811660009081526008602052604090205460ff16611399576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416611a8d576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b611a9984846000612307565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808015611aeb5750611aeb846001600160a01b0316612167565b1561131257611312600085858561216d565b6001600160a01b038216611b58576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b805160005b818114611bc9576000838281518110611b7257fe5b60200260200101519050611b8885826001612307565b60405181906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450600101611b5d565b506001600160a01b039092166000908152600560205260409020805490920190915550565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c2757600080fd5b505afa158015611c3b573d6000803e3d6000fd5b505050506040513d6020811015611c5157600080fd5b50516001600160a01b03828116911614611399576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610ed19084906123a9565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6060611d88612593565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b60606007611dcf836126f6565b6040516020018083805460018160011615610100020316600290048015611e2d5780601f10611e0b576101008083540402835291820191611e2d565b820191906000526020600020905b815481529060010190602001808311611e19575b5050825160208401908083835b60208310611e595780518252601f199092019160209182019101611e3a565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b6000838152600460205260409020546001600160a01b0386811690821614611f04576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a206e6f6e2d6f776e6564204e46540000000000000000000000604482015290519081900360640190fd5b82611f9557600160a01b811615801590611f4457506000848152600660205260409020546001600160a01b0316611f39611875565b6001600160a01b0316145b611f95576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b60008481526004602052604090206001600160a01b03861690558161186d5761186d868660015b816001600160a01b0316836001600160a01b031614610ed1576001600160a01b0380841660009081526005602052604080822080548590039055918416815220805482019055505050565b60003381612013612805565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061208657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15612094579150610c0b9050565b6001600160a01b038216321480159061215357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561212657600080fd5b505afa15801561213a573d6000803e3d6000fd5b505050506040513d602081101561215057600080fd5b50515b15612161579150610c0b9050565b50905090565b3b151590565b7f150b7a02000000000000000000000000000000000000000000000000000000006001600160a01b03841663150b7a026121a5611875565b8786866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612218578181015183820152602001612200565b50505050905090810190601f1680156122455780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561226757600080fd5b505af115801561227b573d6000803e3d6000fd5b505050506040513d602081101561229157600080fd5b50517fffffffff000000000000000000000000000000000000000000000000000000001614611312576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220726566757365640000000000000000604482015290519081900360640190fd5b60008281526004602052604090205415612368576040805162461bcd60e51b815260206004820152601a60248201527f4552433732313a206578697374696e672f6275726e74204e4654000000000000604482015290519081900360640190fd5b60008281526004602052604090206001600160a01b038416905580610ed15750506001600160a01b0316600090815260056020526040902080546001019055565b816123bc6001600160a01b038216612167565b61240d576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b6020831061244a5780518252601f19909201916020918201910161242b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146124ac576040519150601f19603f3d011682016040523d82523d6000602084013e6124b1565b606091505b509150915081156125305780511561252b578080602001905160208110156124d857600080fd5b505161252b576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b61258c565b8051612583576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b366000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168114806125ff57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156126165761260c612811565b92509250506126f2565b6001600160a01b03811632148015906126dc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6612661612805565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156126af57600080fd5b505afa1580156126c3573d6000803e3d6000fd5b505050506040513d60208110156126d957600080fd5b50515b156126e95761260c612811565b60003692509250505b9091565b606081612737575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610b73565b8160005b811561274f57600101600a8204915061273b565b60008167ffffffffffffffff8111801561276857600080fd5b506040519080825280601f01601f191660200182016040528015612793576020820181803683370190505b50859350905060001982015b83156127fc57600a840660300160f81b828280600190039350815181106127c257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8404935061279f565b50949350505050565b60131936013560601c90565b36600061282460131983018284816128cd565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261286257600085556128a8565b82601f1061287b5782800160ff198235161785556128a8565b828001600101855582156128a8579182015b828111156128a857823582559160200191906001019061288d565b506128b49291506128b8565b5090565b5b808211156128b457600081556001016128b9565b600080858511156128dc578182fd5b838611156128e8578182fd5b505082019391909203915056fea2646970667358221220ba7c0fd3286e87a1c79db8b658b44ea870a898f1f1eba44c819a096790857c1b64736f6c63430007060033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2B92 CODESIZE SUB DUP1 PUSH3 0x2B92 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xA DUP2 MSTORE PUSH10 0x4552433732314D6F636B PUSH1 0xB0 SHL DUP2 DUP7 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x45373231 PUSH1 0xE0 SHL SWAP6 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE SWAP3 MLOAD SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 DUP7 SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP3 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0x80 MSTORE DUP2 MLOAD PUSH3 0xF4 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x173 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x10A SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x173 JUMP JUMPDEST POP POP POP PUSH3 0x11E DUP2 PUSH3 0x127 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP PUSH3 0x21F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x1AB JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x1F6 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x1C6 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x1F6 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x1F6 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x1F6 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x1D9 JUMP JUMPDEST POP PUSH3 0x204 SWAP3 SWAP2 POP PUSH3 0x208 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x204 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x209 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x292B PUSH3 0x267 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xF6F MSTORE DUP1 PUSH2 0x2052 MSTORE DUP1 PUSH2 0x25CB MSTORE POP DUP1 PUSH2 0xFAA MSTORE DUP1 PUSH2 0x2017 MSTORE DUP1 PUSH2 0x20AA MSTORE DUP1 PUSH2 0x25A1 MSTORE DUP1 PUSH2 0x262C MSTORE POP PUSH2 0x292B 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 0x1C4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8832E6E3 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xC87B56DD GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x918 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x935 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x963 JUMPI DUP1 PUSH4 0xF3993D11 EQ PUSH2 0x989 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x736 JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0x7FC JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0x910 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x983B2D56 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x6B4 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0x6DA JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x6E2 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0x710 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x8832E6E3 EQ PUSH2 0x61F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6A4 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x6AC JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x4684D7E9 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x6352211E GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x446 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x49B JUMPI DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0x5AF JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x4684D7E9 EQ PUSH2 0x398 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x43E JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2D2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x300 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x336 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x362 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x299 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0xA45 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x224 PUSH2 0xB78 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x246 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x28B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xCAD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xEB4 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xED6 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF06 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF6B JUMP JUMPDEST PUSH2 0x224 PUSH2 0xFE4 JUMP JUMPDEST PUSH2 0x2B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1072 JUMP JUMPDEST PUSH2 0x489 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10DC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x582 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1155 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x614 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1247 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x665 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x12C3 JUMP JUMPDEST PUSH2 0x2B6 PUSH2 0x1318 JUMP JUMPDEST PUSH2 0x224 PUSH2 0x1327 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1385 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x139C JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x13FA JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x726 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14DB JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x74C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x787 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x14F0 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x812 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x82D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x83F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x861 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x87F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x891 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x8B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x14FE JUMP JUMPDEST PUSH2 0x224 PUSH2 0x1646 JUMP JUMPDEST PUSH2 0x224 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x92E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1655 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x94B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x16CA JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x979 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x16F8 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x99F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1769 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xAD8 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xB24 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xB70 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xF3993D1100000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xC03 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xBD8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC03 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 0xBE6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xC78 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO PUSH2 0xCA3 JUMPI POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB73 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0xB73 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0xD0E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP1 DUP3 AND EQ ISZERO PUSH2 0xD70 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD81 DUP2 PUSH2 0xD7C PUSH2 0x1875 JUMP JUMPDEST PUSH2 0x187F JUMP JUMPDEST PUSH2 0xDD2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xE0C JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0xE07 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SSTORE JUMPDEST PUSH2 0xE6D JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE JUMPDEST DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0xED1 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x18CD JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xEE6 PUSH2 0xEE1 PUSH2 0x1875 JUMP JUMPDEST PUSH2 0x19C5 JUMP JUMPDEST PUSH2 0xF02 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x1A32 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xED1 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x18CD JUMP JUMPDEST PUSH2 0xF2E PUSH2 0xEE1 PUSH2 0x1875 JUMP JUMPDEST PUSH2 0xED1 DUP4 DUP4 DUP4 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1AFD SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xB70 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x106A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x103F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x106A 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 0x104D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB70 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1139 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207A65726F2061646472657373000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1165 PUSH2 0x1160 PUSH2 0x1875 JUMP JUMPDEST PUSH2 0x1BEE JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1174 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x11C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x123D JUMPI PUSH2 0x1235 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x11DE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x11FA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x120D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1CB2 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x11C8 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1252 PUSH2 0x1160 PUSH2 0x1875 JUMP JUMPDEST PUSH2 0x125E PUSH1 0x7 DUP4 DUP4 PUSH2 0x282C JUMP JUMPDEST POP PUSH32 0x4B1DC5C136A3CE9FDED8DB0CE3D3366C58764EC3A8E4C2B9E52E4DDFE5EBBF7 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG1 POP POP JUMP JUMPDEST PUSH2 0x12CE PUSH2 0xEE1 PUSH2 0x1875 JUMP JUMPDEST PUSH2 0x1312 DUP5 DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH1 0x1 SWAP3 POP PUSH2 0x1A32 SWAP2 POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xC03 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xBD8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC03 JUMP JUMPDEST PUSH2 0x1390 PUSH2 0x1160 PUSH2 0x1875 JUMP JUMPDEST PUSH2 0x1399 DUP2 PUSH2 0x1D32 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13A6 PUSH2 0x1875 JUMP JUMPDEST SWAP1 POP PUSH2 0x13B1 DUP2 PUSH2 0x19C5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1404 PUSH2 0x1875 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x146D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1312 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x18CD JUMP JUMPDEST PUSH2 0x1509 PUSH2 0x1160 PUSH2 0x1875 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1518 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1569 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x123D JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x157F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x15AA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x15C6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1623 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1637 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x156C JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1650 PUSH2 0x1D7E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x16C1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xB70 DUP3 PUSH2 0x1DC2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 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 PUSH2 0x1703 PUSH2 0x1160 PUSH2 0x1875 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x17C4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F207A65726F0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x17CE PUSH2 0x1875 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x17DC DUP6 DUP4 PUSH2 0x187F JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x185B JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x17F9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1811 DUP9 DUP9 DUP4 DUP8 PUSH1 0x1 PUSH2 0x1E95 JUMP JUMPDEST DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 ADD PUSH2 0x17E4 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x186D JUMPI PUSH2 0x186D DUP7 DUP7 DUP4 PUSH2 0x1FBC JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1650 PUSH2 0x2007 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x18C6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1928 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F207A65726F0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1932 PUSH2 0x1875 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1940 DUP8 DUP4 PUSH2 0x187F JUMP JUMPDEST SWAP1 POP PUSH2 0x1950 DUP8 DUP8 DUP8 DUP5 PUSH1 0x0 PUSH2 0x1E95 JUMP JUMPDEST DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP3 DUP1 ISZERO PUSH2 0x19AB JUMPI POP PUSH2 0x19AB DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2167 JUMP JUMPDEST ISZERO PUSH2 0x19BC JUMPI PUSH2 0x19BC DUP8 DUP8 DUP8 DUP8 PUSH2 0x216D JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1399 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1A8D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F207A65726F000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1A99 DUP5 DUP5 PUSH1 0x0 PUSH2 0x2307 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 DUP1 DUP1 ISZERO PUSH2 0x1AEB JUMPI POP PUSH2 0x1AEB DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2167 JUMP JUMPDEST ISZERO PUSH2 0x1312 JUMPI PUSH2 0x1312 PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0x216D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1B58 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F207A65726F000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1BC9 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B72 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1B88 DUP6 DUP3 PUSH1 0x1 PUSH2 0x2307 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP PUSH1 0x1 ADD PUSH2 0x1B5D JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C3B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1399 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xED1 SWAP1 DUP5 SWAP1 PUSH2 0x23A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D88 PUSH2 0x2593 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 PUSH2 0x1DCF DUP4 PUSH2 0x26F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1E2D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1E0B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x1E2D 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 0x1E19 JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1E59 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1E3A JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x1F04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6F776E6564204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x1F95 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1F44 JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F39 PUSH2 0x1875 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x1F95 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 SSTORE DUP2 PUSH2 0x186D JUMPI PUSH2 0x186D DUP7 DUP7 PUSH1 0x1 JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xED1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE SWAP2 DUP5 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x2013 PUSH2 0x2805 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2086 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x2094 JUMPI SWAP2 POP PUSH2 0xC0B SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x2153 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x213A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x2161 JUMPI SWAP2 POP PUSH2 0xC0B SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0x150B7A02 PUSH2 0x21A5 PUSH2 0x1875 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2218 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2200 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2245 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x227B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ PUSH2 0x1312 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220726566757365640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2368 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206578697374696E672F6275726E74204E4654000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 SSTORE DUP1 PUSH2 0xED1 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH2 0x23BC PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2167 JUMP JUMPDEST PUSH2 0x240D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x244A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x242B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x24AC 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 0x24B1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x2530 JUMPI DUP1 MLOAD ISZERO PUSH2 0x252B JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x252B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x258C JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2583 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x25FF JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x2616 JUMPI PUSH2 0x260C PUSH2 0x2811 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x26F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x26DC JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x2661 PUSH2 0x2805 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x26E9 JUMPI PUSH2 0x260C PUSH2 0x2811 JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x2737 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xB73 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x274F JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x273B JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x2793 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x27FC JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x27C2 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x279F JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x2824 PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x28CD JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2862 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x28A8 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x287B JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x28A8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x28A8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x28A8 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x288D JUMP JUMPDEST POP PUSH2 0x28B4 SWAP3 SWAP2 POP PUSH2 0x28B8 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x28B4 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x28DC JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x28E8 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBA PUSH29 0xFD3286E87A1C79DB8B658B44EA870A898F1F1EBA44C819A096790857C SHL PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "875:2414:74:-:0;;;999:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;999:224:74;;;;;;;;1967:113:62;;;;;;;;;;-1:-1:-1;;;1967:113:62;;;;;;;;;;;;;;-1:-1:-1;;;1967:113:62;;;;;;;-1:-1:-1;960:15:2;;-1:-1:-1;;;;;;960:15:2;1205:10:74;960:15:2;;;;;990:40;;999:224:74;;;;1205:10;;1967:113:62;;999:224:74;;;;1205:10;;;;990:40:2;;-1:-1:-1;;990:40:2;-1:-1:-1;;;;;;;443:40:85;;;;;;;;493:38;;;;;;2033:13:62;;;;:5;;-1:-1:-1;2033:13:62;;;;:::i;:::-;-1:-1:-1;2056:17:62;;;;:7;;:17;;;;;:::i;:::-;;1967:113;;476:18:1::1;487:6;476:10;;;:18;;:::i;:::-;422:79:::0;999:224:74;;875:2414;;1252:122:1;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;875:2414:74:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;875:2414:74;;;-1:-1:-1;875:2414:74;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:379:86",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:86",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "144:233:86",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "182:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "191:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "202:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "184:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "184:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "184:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "160:10:86"
                                  },
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "172:8:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "157:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "157:24:86"
                              },
                              "nodeType": "YulIf",
                              "src": "154:2:86"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "247:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "256:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "267:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "249:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "249:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "229:8:86"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "239:6:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "226:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "226:20:86"
                              },
                              "nodeType": "YulIf",
                              "src": "223:2:86"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "288:36:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "305:6:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "313:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "301:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "301:23:86"
                              },
                              "variableNames": [
                                {
                                  "name": "offsetOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "288:9:86"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "333:38:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "350:8:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "360:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "346:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "346:25:86"
                              },
                              "variableNames": [
                                {
                                  "name": "lengthOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:9:86"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "78:6:86",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "86:6:86",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "94:10:86",
                            "type": ""
                          },
                          {
                            "name": "endIndex",
                            "nodeType": "YulTypedName",
                            "src": "106:8:86",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "offsetOut",
                            "nodeType": "YulTypedName",
                            "src": "119:9:86",
                            "type": ""
                          },
                          {
                            "name": "lengthOut",
                            "nodeType": "YulTypedName",
                            "src": "130:9:86",
                            "type": ""
                          }
                        ],
                        "src": "14:363:86"
                      }
                    ]
                  },
                  "contents": "{\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(offsetOut, offsetOut) }\n        if gt(endIndex, length) { revert(offsetOut, offsetOut) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n}",
                  "id": 86,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "15042": [
                  {
                    "length": 32,
                    "start": 4010
                  },
                  {
                    "length": 32,
                    "start": 8215
                  },
                  {
                    "length": 32,
                    "start": 8362
                  },
                  {
                    "length": 32,
                    "start": 9633
                  },
                  {
                    "length": 32,
                    "start": 9772
                  }
                ],
                "15044": [
                  {
                    "length": 32,
                    "start": 3951
                  },
                  {
                    "length": 32,
                    "start": 8274
                  },
                  {
                    "length": 32,
                    "start": 9675
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101c45760003560e01c80638832e6e3116100f9578063b88d4fde11610097578063c87b56dd11610071578063c87b56dd14610918578063e985e9c514610935578063f2fde38b14610963578063f3993d1114610989576101c4565b8063b88d4fde14610736578063c3666c36146107fc578063c4c2bfdc14610910576101c4565b8063983b2d56116100d3578063983b2d56146106b457806398650275146106da578063a22cb465146106e2578063aa271e1a14610710576101c4565b80638832e6e31461061f5780638da5cb5b146106a457806395d89b41146106ac576101c4565b80634684d7e9116101665780636352211e116101405780636352211e1461044657806370a082311461046357806373c8a9581461049b5780637e518ec8146105af576101c4565b80634684d7e914610398578063572b6c05146104185780635b2bd79e1461043e576101c4565b8063095ea7b3116101a2578063095ea7b3146102d257806323b872dd1461030057806340c10f191461033657806342842e0e14610362576101c4565b806301ffc9a7146101c957806306fdde031461021c578063081812fc14610299575b600080fd5b610208600480360360208110156101df57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610a45565b604080519115158252519081900360200190f35b610224610b78565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025e578181015183820152602001610246565b50505050905090810190601f16801561028b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102b6600480360360208110156102af57600080fd5b5035610c0e565b604080516001600160a01b039092168252519081900360200190f35b6102fe600480360360408110156102e857600080fd5b506001600160a01b038135169060200135610cad565b005b6102fe6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610eb4565b6102fe6004803603604081101561034c57600080fd5b506001600160a01b038135169060200135610ed6565b6102fe6004803603606081101561037857600080fd5b506001600160a01b03813581169160208101359091169060400135610f06565b6102fe600480360360408110156103ae57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156103d957600080fd5b8201836020820111156103eb57600080fd5b8035906020019184602083028401116401000000008311171561040d57600080fd5b509092509050610f23565b6102086004803603602081101561042e57600080fd5b50356001600160a01b0316610f6b565b610224610fe4565b6102b66004803603602081101561045c57600080fd5b5035611072565b6104896004803603602081101561047957600080fd5b50356001600160a01b03166110dc565b60408051918252519081900360200190f35b6102fe600480360360608110156104b157600080fd5b8101906020810181356401000000008111156104cc57600080fd5b8201836020820111156104de57600080fd5b8035906020019184602083028401116401000000008311171561050057600080fd5b91939092909160208101903564010000000081111561051e57600080fd5b82018360208201111561053057600080fd5b8035906020019184602083028401116401000000008311171561055257600080fd5b91939092909160208101903564010000000081111561057057600080fd5b82018360208201111561058257600080fd5b803590602001918460208302840111640100000000831117156105a457600080fd5b509092509050611155565b6102fe600480360360208110156105c557600080fd5b8101906020810181356401000000008111156105e057600080fd5b8201836020820111156105f257600080fd5b8035906020019184600183028401116401000000008311171561061457600080fd5b509092509050611247565b6102fe6004803603606081101561063557600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561066557600080fd5b82018360208201111561067757600080fd5b8035906020019184600183028401116401000000008311171561069957600080fd5b5090925090506112c3565b6102b6611318565b610224611327565b6102fe600480360360208110156106ca57600080fd5b50356001600160a01b0316611385565b6102fe61139c565b6102fe600480360360408110156106f857600080fd5b506001600160a01b03813516906020013515156113fa565b6102086004803603602081101561072657600080fd5b50356001600160a01b03166114db565b6102fe6004803603608081101561074c57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561078757600080fd5b82018360208201111561079957600080fd5b803590602001918460018302840111640100000000831117156107bb57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506114f0945050505050565b6102fe6004803603606081101561081257600080fd5b81019060208101813564010000000081111561082d57600080fd5b82018360208201111561083f57600080fd5b8035906020019184602083028401116401000000008311171561086157600080fd5b91939092909160208101903564010000000081111561087f57600080fd5b82018360208201111561089157600080fd5b803590602001918460208302840111640100000000831117156108b357600080fd5b9193909290916020810190356401000000008111156108d157600080fd5b8201836020820111156108e357600080fd5b8035906020019184602083028401116401000000008311171561090557600080fd5b5090925090506114fe565b610224611646565b6102246004803603602081101561092e57600080fd5b5035611655565b6102086004803603604081101561094b57600080fd5b506001600160a01b03813581169160200135166116ca565b6102fe6004803603602081101561097957600080fd5b50356001600160a01b03166116f8565b6102fe6004803603606081101561099f57600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156109d357600080fd5b8201836020820111156109e557600080fd5b80359060200191846020830284011164010000000083111715610a0757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611769945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610ad857507fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000145b80610b2457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610b7057507fffffffff0000000000000000000000000000000000000000000000000000000082167ff3993d1100000000000000000000000000000000000000000000000000000000145b90505b919050565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c035780601f10610bd857610100808354040283529160200191610c03565b820191906000526020600020905b815481529060010190602001808311610be657829003601f168201915b505050505090505b90565b6000818152600460205260408120546001600160a01b038116610c78576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b600160a01b811615610ca35750506000818152600660205260409020546001600160a01b0316610b73565b6000915050610b73565b60008181526004602052604090205480610d0e576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b806001600160a01b038481169082161415610d70576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b610d8181610d7c611875565b61187f565b610dd2576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b6001600160a01b038416610e0c57600160a01b821615610e075760008381526004602052604090206001600160a01b03821690555b610e6d565b600160a01b8217808314610e2c5760008481526004602052604090208190555b50600083815260066020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b610ed18383836040518060200160405280600081525060006118cd565b505050565b610ee6610ee1611875565b6119c5565b610f028282604051806020016040528060008152506000611a32565b5050565b610ed18383836040518060200160405280600081525060016118cd565b610f2e610ee1611875565b610ed183838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611afd92505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610b7057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6007805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561106a5780601f1061103f5761010080835404028352916020019161106a565b820191906000526020600020905b81548152906001019060200180831161104d57829003601f168201915b505050505081565b6000818152600460205260408120546001600160a01b038116610b70576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b60006001600160a01b038216611139576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b506001600160a01b031660009081526005602052604090205490565b611165611160611875565b611bee565b84838114801561117457508082145b6111c5576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461123d576112358888838181106111de57fe5b905060200201356001600160a01b03168585848181106111fa57fe5b9050602002013588888581811061120d57fe5b905060200201356001600160a01b03166001600160a01b0316611cb29092919063ffffffff16565b6001016111c8565b5050505050505050565b611252611160611875565b61125e6007838361282c565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b6112ce610ee1611875565b611312848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250611a32915050565b50505050565b6000546001600160a01b031690565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610c035780601f10610bd857610100808354040283529160200191610c03565b611390611160611875565b61139981611d32565b50565b60006113a6611875565b90506113b1816119c5565b6001600160a01b038116600081815260086020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b6000611404611875565b9050806001600160a01b0316836001600160a01b0316141561146d576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260036020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b60086020526000908152604090205460ff1681565b6113128484848460016118cd565b611509611160611875565b84838114801561151857508082145b611569576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461123d5785858281811061157f57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a858181106115aa57fe5b905060200201356001600160a01b03168787868181106115c657fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561162357600080fd5b505af1158015611637573d6000803e3d6000fd5b5050505080600101905061156c565b6060611650611d7e565b905090565b6000818152600460205260409020546060906001600160a01b03166116c1576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b610b7082611dc2565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b611703611160611875565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b0382166117c4576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b60006117ce611875565b905060006117dc858361187f565b835190915060005b81811461185b5760008582815181106117f957fe5b60200260200101519050611811888883876001611e95565b80876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4506001016117e4565b50801561186d5761186d868683611fbc565b505050505050565b6000611650612007565b6000816001600160a01b0316836001600160a01b031614806118c657506001600160a01b0380841660009081526003602090815260408083209386168352929052205460ff165b9392505050565b6001600160a01b038416611928576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b6000611932611875565b90506000611940878361187f565b9050611950878787846000611e95565b84866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48280156119ab57506119ab866001600160a01b0316612167565b156119bc576119bc8787878761216d565b50505050505050565b6001600160a01b03811660009081526008602052604090205460ff16611399576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416611a8d576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b611a9984846000612307565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808015611aeb5750611aeb846001600160a01b0316612167565b1561131257611312600085858561216d565b6001600160a01b038216611b58576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b805160005b818114611bc9576000838281518110611b7257fe5b60200260200101519050611b8885826001612307565b60405181906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450600101611b5d565b506001600160a01b039092166000908152600560205260409020805490920190915550565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c2757600080fd5b505afa158015611c3b573d6000803e3d6000fd5b505050506040513d6020811015611c5157600080fd5b50516001600160a01b03828116911614611399576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610ed19084906123a9565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6060611d88612593565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b60606007611dcf836126f6565b6040516020018083805460018160011615610100020316600290048015611e2d5780601f10611e0b576101008083540402835291820191611e2d565b820191906000526020600020905b815481529060010190602001808311611e19575b5050825160208401908083835b60208310611e595780518252601f199092019160209182019101611e3a565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b6000838152600460205260409020546001600160a01b0386811690821614611f04576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a206e6f6e2d6f776e6564204e46540000000000000000000000604482015290519081900360640190fd5b82611f9557600160a01b811615801590611f4457506000848152600660205260409020546001600160a01b0316611f39611875565b6001600160a01b0316145b611f95576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b60008481526004602052604090206001600160a01b03861690558161186d5761186d868660015b816001600160a01b0316836001600160a01b031614610ed1576001600160a01b0380841660009081526005602052604080822080548590039055918416815220805482019055505050565b60003381612013612805565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061208657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15612094579150610c0b9050565b6001600160a01b038216321480159061215357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561212657600080fd5b505afa15801561213a573d6000803e3d6000fd5b505050506040513d602081101561215057600080fd5b50515b15612161579150610c0b9050565b50905090565b3b151590565b7f150b7a02000000000000000000000000000000000000000000000000000000006001600160a01b03841663150b7a026121a5611875565b8786866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612218578181015183820152602001612200565b50505050905090810190601f1680156122455780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561226757600080fd5b505af115801561227b573d6000803e3d6000fd5b505050506040513d602081101561229157600080fd5b50517fffffffff000000000000000000000000000000000000000000000000000000001614611312576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220726566757365640000000000000000604482015290519081900360640190fd5b60008281526004602052604090205415612368576040805162461bcd60e51b815260206004820152601a60248201527f4552433732313a206578697374696e672f6275726e74204e4654000000000000604482015290519081900360640190fd5b60008281526004602052604090206001600160a01b038416905580610ed15750506001600160a01b0316600090815260056020526040902080546001019055565b816123bc6001600160a01b038216612167565b61240d576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b6020831061244a5780518252601f19909201916020918201910161242b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146124ac576040519150601f19603f3d011682016040523d82523d6000602084013e6124b1565b606091505b509150915081156125305780511561252b578080602001905160208110156124d857600080fd5b505161252b576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b61258c565b8051612583576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b366000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168114806125ff57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156126165761260c612811565b92509250506126f2565b6001600160a01b03811632148015906126dc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6612661612805565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156126af57600080fd5b505afa1580156126c3573d6000803e3d6000fd5b505050506040513d60208110156126d957600080fd5b50515b156126e95761260c612811565b60003692509250505b9091565b606081612737575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610b73565b8160005b811561274f57600101600a8204915061273b565b60008167ffffffffffffffff8111801561276857600080fd5b506040519080825280601f01601f191660200182016040528015612793576020820181803683370190505b50859350905060001982015b83156127fc57600a840660300160f81b828280600190039350815181106127c257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8404935061279f565b50949350505050565b60131936013560601c90565b36600061282460131983018284816128cd565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261286257600085556128a8565b82601f1061287b5782800160ff198235161785556128a8565b828001600101855582156128a8579182015b828111156128a857823582559160200191906001019061288d565b506128b49291506128b8565b5090565b5b808211156128b457600081556001016128b9565b600080858511156128dc578182fd5b838611156128e8578182fd5b505082019391909203915056fea2646970667358221220ba7c0fd3286e87a1c79db8b658b44ea870a898f1f1eba44c819a096790857c1b64736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8832E6E3 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xC87B56DD GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x918 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x935 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x963 JUMPI DUP1 PUSH4 0xF3993D11 EQ PUSH2 0x989 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x736 JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0x7FC JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0x910 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x983B2D56 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x6B4 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0x6DA JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x6E2 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0x710 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x8832E6E3 EQ PUSH2 0x61F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6A4 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x6AC JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x4684D7E9 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x6352211E GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x446 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x49B JUMPI DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0x5AF JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x4684D7E9 EQ PUSH2 0x398 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x43E JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2D2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x300 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x336 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x362 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x299 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0xA45 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x224 PUSH2 0xB78 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x246 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x28B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xCAD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xEB4 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xED6 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF06 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF6B JUMP JUMPDEST PUSH2 0x224 PUSH2 0xFE4 JUMP JUMPDEST PUSH2 0x2B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1072 JUMP JUMPDEST PUSH2 0x489 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10DC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x582 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1155 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x614 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1247 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x665 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x12C3 JUMP JUMPDEST PUSH2 0x2B6 PUSH2 0x1318 JUMP JUMPDEST PUSH2 0x224 PUSH2 0x1327 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1385 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x139C JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x13FA JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x726 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14DB JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x74C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x787 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x14F0 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x812 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x82D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x83F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x861 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x87F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x891 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x8B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x14FE JUMP JUMPDEST PUSH2 0x224 PUSH2 0x1646 JUMP JUMPDEST PUSH2 0x224 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x92E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1655 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x94B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x16CA JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x979 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x16F8 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x99F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1769 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xAD8 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xB24 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xB70 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xF3993D1100000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xC03 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xBD8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC03 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 0xBE6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xC78 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO PUSH2 0xCA3 JUMPI POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB73 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0xB73 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0xD0E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP1 DUP3 AND EQ ISZERO PUSH2 0xD70 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD81 DUP2 PUSH2 0xD7C PUSH2 0x1875 JUMP JUMPDEST PUSH2 0x187F JUMP JUMPDEST PUSH2 0xDD2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xE0C JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0xE07 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SSTORE JUMPDEST PUSH2 0xE6D JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE JUMPDEST DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0xED1 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x18CD JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xEE6 PUSH2 0xEE1 PUSH2 0x1875 JUMP JUMPDEST PUSH2 0x19C5 JUMP JUMPDEST PUSH2 0xF02 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x1A32 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xED1 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x18CD JUMP JUMPDEST PUSH2 0xF2E PUSH2 0xEE1 PUSH2 0x1875 JUMP JUMPDEST PUSH2 0xED1 DUP4 DUP4 DUP4 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1AFD SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xB70 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x106A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x103F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x106A 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 0x104D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB70 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1139 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207A65726F2061646472657373000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1165 PUSH2 0x1160 PUSH2 0x1875 JUMP JUMPDEST PUSH2 0x1BEE JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1174 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x11C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x123D JUMPI PUSH2 0x1235 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x11DE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x11FA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x120D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1CB2 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x11C8 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1252 PUSH2 0x1160 PUSH2 0x1875 JUMP JUMPDEST PUSH2 0x125E PUSH1 0x7 DUP4 DUP4 PUSH2 0x282C JUMP JUMPDEST POP PUSH32 0x4B1DC5C136A3CE9FDED8DB0CE3D3366C58764EC3A8E4C2B9E52E4DDFE5EBBF7 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG1 POP POP JUMP JUMPDEST PUSH2 0x12CE PUSH2 0xEE1 PUSH2 0x1875 JUMP JUMPDEST PUSH2 0x1312 DUP5 DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH1 0x1 SWAP3 POP PUSH2 0x1A32 SWAP2 POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xC03 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xBD8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC03 JUMP JUMPDEST PUSH2 0x1390 PUSH2 0x1160 PUSH2 0x1875 JUMP JUMPDEST PUSH2 0x1399 DUP2 PUSH2 0x1D32 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13A6 PUSH2 0x1875 JUMP JUMPDEST SWAP1 POP PUSH2 0x13B1 DUP2 PUSH2 0x19C5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1404 PUSH2 0x1875 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x146D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1312 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x18CD JUMP JUMPDEST PUSH2 0x1509 PUSH2 0x1160 PUSH2 0x1875 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1518 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1569 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x123D JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x157F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x15AA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x15C6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1623 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1637 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x156C JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1650 PUSH2 0x1D7E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x16C1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xB70 DUP3 PUSH2 0x1DC2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 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 PUSH2 0x1703 PUSH2 0x1160 PUSH2 0x1875 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x17C4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F207A65726F0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x17CE PUSH2 0x1875 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x17DC DUP6 DUP4 PUSH2 0x187F JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x185B JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x17F9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1811 DUP9 DUP9 DUP4 DUP8 PUSH1 0x1 PUSH2 0x1E95 JUMP JUMPDEST DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 ADD PUSH2 0x17E4 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x186D JUMPI PUSH2 0x186D DUP7 DUP7 DUP4 PUSH2 0x1FBC JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1650 PUSH2 0x2007 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x18C6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1928 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F207A65726F0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1932 PUSH2 0x1875 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1940 DUP8 DUP4 PUSH2 0x187F JUMP JUMPDEST SWAP1 POP PUSH2 0x1950 DUP8 DUP8 DUP8 DUP5 PUSH1 0x0 PUSH2 0x1E95 JUMP JUMPDEST DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP3 DUP1 ISZERO PUSH2 0x19AB JUMPI POP PUSH2 0x19AB DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2167 JUMP JUMPDEST ISZERO PUSH2 0x19BC JUMPI PUSH2 0x19BC DUP8 DUP8 DUP8 DUP8 PUSH2 0x216D JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1399 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1A8D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F207A65726F000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1A99 DUP5 DUP5 PUSH1 0x0 PUSH2 0x2307 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 DUP1 DUP1 ISZERO PUSH2 0x1AEB JUMPI POP PUSH2 0x1AEB DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2167 JUMP JUMPDEST ISZERO PUSH2 0x1312 JUMPI PUSH2 0x1312 PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0x216D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1B58 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F207A65726F000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1BC9 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B72 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1B88 DUP6 DUP3 PUSH1 0x1 PUSH2 0x2307 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP PUSH1 0x1 ADD PUSH2 0x1B5D JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C3B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1399 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xED1 SWAP1 DUP5 SWAP1 PUSH2 0x23A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D88 PUSH2 0x2593 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 PUSH2 0x1DCF DUP4 PUSH2 0x26F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1E2D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1E0B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x1E2D 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 0x1E19 JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1E59 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1E3A JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x1F04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6F776E6564204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x1F95 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1F44 JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F39 PUSH2 0x1875 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x1F95 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 SSTORE DUP2 PUSH2 0x186D JUMPI PUSH2 0x186D DUP7 DUP7 PUSH1 0x1 JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xED1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE SWAP2 DUP5 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x2013 PUSH2 0x2805 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2086 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x2094 JUMPI SWAP2 POP PUSH2 0xC0B SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x2153 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x213A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x2161 JUMPI SWAP2 POP PUSH2 0xC0B SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0x150B7A02 PUSH2 0x21A5 PUSH2 0x1875 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2218 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2200 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2245 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x227B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ PUSH2 0x1312 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220726566757365640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2368 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206578697374696E672F6275726E74204E4654000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 SSTORE DUP1 PUSH2 0xED1 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH2 0x23BC PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2167 JUMP JUMPDEST PUSH2 0x240D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x244A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x242B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x24AC 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 0x24B1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x2530 JUMPI DUP1 MLOAD ISZERO PUSH2 0x252B JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x252B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x258C JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2583 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x25FF JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x2616 JUMPI PUSH2 0x260C PUSH2 0x2811 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x26F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x26DC JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x2661 PUSH2 0x2805 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x26E9 JUMPI PUSH2 0x260C PUSH2 0x2811 JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x2737 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xB73 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x274F JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x273B JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x2793 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x27FC JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x27C2 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x279F JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x2824 PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x28CD JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2862 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x28A8 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x287B JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x28A8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x28A8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x28A8 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x288D JUMP JUMPDEST POP PUSH2 0x28B4 SWAP3 SWAP2 POP PUSH2 0x28B8 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x28B4 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x28DC JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x28E8 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBA PUSH29 0xFD3286E87A1C79DB8B658B44EA870A898F1F1EBA44C819A096790857C SHL PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "875:2414:74:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2243:356:62;;;;;;;;;;;;;;;;-1:-1:-1;2243:356:62;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2770:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4685:374;;;;;;;;;;;;;;;;-1:-1:-1;4685:374:62;;:::i;:::-;;;;-1:-1:-1;;;;;4685:374:62;;;;;;;;;;;;;;3665:986;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3665:986:62;;;;;;;;:::i;:::-;;5613:272;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5613:272:62;;;;;;;;;;;;;;;;;:::i;1839:153:74:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1839:153:74;;;;;;;;:::i;5919:275:62:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5919:275:62;;;;;;;;;;;;;;;;;:::i;2086:165:74:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2086:165:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2086:165:74;;-1:-1:-1;2086:165:74;-1:-1:-1;2086:165:74;:::i;544:193:85:-;;;;;;;;;;;;;;;;-1:-1:-1;544:193:85;-1:-1:-1;;;;;544:193:85;;:::i;552:29:11:-;;;:::i;3395:236:62:-;;;;;;;;;;;;;;;;-1:-1:-1;3395:236:62;;:::i;3175:186::-;;;;;;;;;;;;;;;;-1:-1:-1;3175:186:62;-1:-1:-1;;;;;3175:186:62;;:::i;:::-;;;;;;;;;;;;;;;;1137:481:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1137:481:8;;-1:-1:-1;1137:481:8;-1:-1:-1;1137:481:8;:::i;588:214:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;588:214:11;;-1:-1:-1;588:214:11;-1:-1:-1;588:214:11;:::i;2345:209:74:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2345:209:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2345:209:74;;-1:-1:-1;2345:209:74;-1:-1:-1;2345:209:74;:::i;1114:94:2:-;;;:::i;2910:102:62:-;;;:::i;694:120:1:-;;;;;;;;;;;;;;;;-1:-1:-1;694:120:1;-1:-1:-1;;;;;694:120:1;;:::i;929:185::-;;;:::i;5093:298:62:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5093:298:62;;;;;;;;;;:::i;339:40:1:-;;;;;;;;;;;;;;;;-1:-1:-1;339:40:1;-1:-1:-1;;;;;339:40:1;;:::i;6228:304:62:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6228:304:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6228:304:62;;-1:-1:-1;6228:304:62;;-1:-1:-1;;;;;6228:304:62:i;2430:511:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2430:511:8;;-1:-1:-1;2430:511:8;-1:-1:-1;2430:511:8;:::i;3193:94:74:-;;;:::i;1394:222::-;;;;;;;;;;;;;;;;-1:-1:-1;1394:222:74;;:::i;5425:154:62:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5425:154:62;;;;;;;;;;:::i;1448:197:2:-;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;6708:644:62:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6708:644:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6708:644:62;;-1:-1:-1;6708:644:62;;-1:-1:-1;;;;;6708:644:62:i;2243:356::-;2328:4;2363:40;;;2378:25;2363:40;;:96;;-1:-1:-1;2419:40:62;;;2434:25;2419:40;2363:96;:160;;;-1:-1:-1;2475:48:62;;;2490:33;2475:48;2363:160;:229;;;-1:-1:-1;2539:53:62;;;2554:38;2539:53;2363:229;2344:248;;2243:356;;;;:::o;2770:98::-;2856:5;2849:12;;;;;;;;-1:-1:-1;;2849:12:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2824:13;;2849:12;;2856:5;;2849:12;;2856:5;2849:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2770:98;;:::o;4685:374::-;4761:7;4796:16;;;:7;:16;;;;;;-1:-1:-1;;;;;4830:37:62;;4822:74;;;;;-1:-1:-1;;;4822:74:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4910:34:62;;:39;4906:147;;-1:-1:-1;;4972:22:62;;;;:13;:22;;;;;;-1:-1:-1;;;;;4972:22:62;4965:29;;4906:147;5040:1;5025:17;;;;;3665:986;3745:13;3761:16;;;:7;:16;;;;;;3795:10;3787:47;;;;;-1:-1:-1;;;3787:47:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;3883:5;-1:-1:-1;;;;;3908:18:62;;;;;;;;3900:52;;;;;-1:-1:-1;;;3900:52:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:41;3984:12;3998;:10;:12::i;:::-;3970:13;:41::i;:::-;3962:81;;;;;-1:-1:-1;;;3962:81:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4057:16:62;;4053:542;;-1:-1:-1;;;4093:34:62;;:39;4089:178;;4212:16;;;;:7;:16;;;;;-1:-1:-1;;;;;4231:21:62;;4212:40;;4089:178;4053:542;;;-1:-1:-1;;;4328:34:62;;4380:29;;;4376:168;;4490:16;;;;:7;:16;;;;;:39;;;4376:168;-1:-1:-1;4557:22:62;;;;:13;:22;;;;;:27;;;;-1:-1:-1;;;;;4557:27:62;;;;;4053:542;4636:7;4632:2;-1:-1:-1;;;;;4609:35:62;4618:12;-1:-1:-1;;;;;4609:35:62;;;;;;;;;;;3665:986;;;;:::o;5613:272::-;5742:136;5769:4;5787:2;5803:7;5742:136;;;;;;;;;;;;5863:5;5742:13;:136::i;:::-;5613:272;;;:::o;1839:153:74:-;1918:28;1933:12;:10;:12::i;:::-;1918:14;:28::i;:::-;1956:29;1962:2;1966:7;1956:29;;;;;;;;;;;;1979:5;1956;:29::i;:::-;1839:153;;:::o;5919:275:62:-;6052:135;6079:4;6097:2;6113:7;6052:135;;;;;;;;;;;;6173:4;6052:13;:135::i;2086:165:74:-;2182:28;2197:12;:10;:12::i;2182:28::-;2220:24;2231:2;2235:8;;2220:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2220:10:74;;-1:-1:-1;;;2220:24:74:i;544:193:85:-;631:4;667:19;-1:-1:-1;;;;;654:32:85;:9;-1:-1:-1;;;;;654:32:85;;:76;;;;711:18;-1:-1:-1;;;;;690:40:85;:9;-1:-1:-1;;;;;690:40:85;;647:83;;544:193;;;:::o;552:29:11:-;;;;;;;;;;;;;;;-1:-1:-1;;552:29:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3395:236:62:-;3467:7;3518:16;;;:7;:16;;;;;;-1:-1:-1;;;;;3554:19:62;;3546:56;;;;;-1:-1:-1;;;3546:56:62;;;;;;;;;;;;;;;;;;;;;;;;;;;3175:186;3247:7;-1:-1:-1;;;;;3274:19:62;;3266:52;;;;;-1:-1:-1;;;3266:52:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3335:19:62;;;;;:12;:19;;;;;;;3175:186::o;1137:481:8:-;1301:31;1319:12;:10;:12::i;:::-;1301:17;:31::i;:::-;1359:8;1392:23;;;:51;;;;-1:-1:-1;1419:24:8;;;1392:51;1384:90;;;;;-1:-1:-1;;;1384:90:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;1489:9;1484:128;1509:6;1504:1;:11;1484:128;;1536:65;1577:8;;1586:1;1577:11;;;;;;;;;;;;;-1:-1:-1;;;;;1577:11:8;1590:7;;1598:1;1590:10;;;;;;;;;;;;;1550:6;;1557:1;1550:9;;;;;;;;;;;;;-1:-1:-1;;;;;1550:9:8;-1:-1:-1;;;;;1536:40:8;;;:65;;;;;:::i;:::-;1517:3;;1484:128;;;;1137:481;;;;;;;:::o;588:214:11:-;669:31;687:12;:10;:12::i;669:31::-;710:34;:15;728:16;;710:34;:::i;:::-;;759:36;778:16;;759:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;759:36:11;;;;;;;;-1:-1:-1;759:36:11;;-1:-1:-1;;;;759:36:11;588:214;;:::o;2345:209:74:-;2479:28;2494:12;:10;:12::i;2479:28::-;2517:30;2523:2;2527:7;2536:4;;2517:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2542:4:74;;-1:-1:-1;2517:5:74;;-1:-1:-1;;2517:30:74:i;:::-;2345:209;;;;:::o;1114:94:2:-;1169:7;1195:6;-1:-1:-1;;;;;1195:6:2;1114:94;:::o;2910:102:62:-;2998:7;2991:14;;;;;;;-1:-1:-1;;2991:14:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2966:13;;2991:14;;2998:7;;2991:14;;2998:7;2991:14;;;;;;;;;;;;;;;;;;;;;;;;694:120:1;747:31;765:12;:10;:12::i;747:31::-;788:19;799:7;788:10;:19::i;:::-;694:120;:::o;929:185::-;972:15;990:12;:10;:12::i;:::-;972:30;;1012:23;1027:7;1012:14;:23::i;:::-;-1:-1:-1;;;;;1045:17:1;;1065:5;1045:17;;;:8;:17;;;;;;:25;;-1:-1:-1;;1045:25:1;;;1085:22;;;1065:5;1085:22;929:185;:::o;5093:298:62:-;5187:14;5204:12;:10;:12::i;:::-;5187:29;;5246:6;-1:-1:-1;;;;;5234:18:62;:8;-1:-1:-1;;;;;5234:18:62;;;5226:52;;;;;-1:-1:-1;;;5226:52:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5288:18:62;;;;;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;;:39;;-1:-1:-1;;5288:39:62;;;;;;;;;;5342:42;;;;;;;;;;;;;;;;;5093:298;;;:::o;339:40:1:-;;;;;;;;;;;;;;;:::o;6228:304:62:-;6388:137;6415:4;6433:2;6449:7;6470:4;6511;6388:13;:137::i;2430:511:8:-;2599:31;2617:12;:10;:12::i;2599:31::-;2657:8;2690:26;;;:55;;;;-1:-1:-1;2720:25:8;;;2690:55;2682:94;;;;;-1:-1:-1;;;2682:94:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:9;2786:149;2811:6;2806:1;:11;2786:149;;2857:9;;2867:1;2857:12;;;;;;;;;;;;;-1:-1:-1;;;;;2857:12:8;-1:-1:-1;;;;;2838:45:8;;2892:4;2899:8;;2908:1;2899:11;;;;;;;;;;;;;-1:-1:-1;;;;;2899:11:8;2912:8;;2921:1;2912:11;;;;;;;;;;;;;2838:86;;;;;;;;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:3;;;;;2786:149;;3193:94:74;3235:16;3270:10;:8;:10::i;:::-;3263:17;;3193:94;:::o;1394:222::-;1548:1;1518:16;;;:7;:16;;;;;;1469:13;;-1:-1:-1;;;;;1502:48:74;1494:85;;;;;-1:-1:-1;;;1494:85:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;1596:13;1601:7;1596:4;:13::i;5425:154:62:-;-1:-1:-1;;;;;5545:17:62;;;5522:4;5545:17;;;:10;:17;;;;;;;;:27;;;;;;;;;;;;;;;5425:154::o;1448:197:2:-;1527:31;1545:12;:10;:12::i;1527:31::-;1568:6;:17;;;;-1:-1:-1;;;;;1568:17:2;;;;;;;;;1600:38;;1568:17;;1621:6;;;1600:38;;1568:6;1600:38;1448:197;:::o;6708:644:62:-;-1:-1:-1;;;;;6860:16:62;;6852:53;;;;;-1:-1:-1;;;6852:53:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;6915:14;6932:12;:10;:12::i;:::-;6915:29;;6954:15;6972:27;6986:4;6992:6;6972:13;:27::i;:::-;7027:15;;6954:45;;-1:-1:-1;7010:14:62;7053:197;7074:6;7069:1;:11;7053:197;;7101:15;7119:8;7128:1;7119:11;;;;;;;;;;;;;;7101:29;;7144:49;7157:4;7163:2;7167:7;7176:10;7188:4;7144:12;:49::i;:::-;7231:7;7227:2;-1:-1:-1;;;;;7212:27:62;7221:4;-1:-1:-1;;;;;7212:27:62;;;;;;;;;;;-1:-1:-1;7082:3:62;;7053:197;;;-1:-1:-1;7264:11:62;;7260:86;;7291:44;7318:4;7324:2;7328:6;7291:26;:44::i;:::-;6708:644;;;;;;:::o;2689:183:74:-;2794:15;2828:37;:35;:37::i;11275:158:62:-;11359:4;11391:6;-1:-1:-1;;;;;11383:14:62;:4;-1:-1:-1;;;;;11383:14:62;;11382:44;;;-1:-1:-1;;;;;;11402:16:62;;;;;;;:10;:16;;;;;;;;:24;;;;;;;;;;;;11382:44;11375:51;11275:158;-1:-1:-1;;;11275:158:62:o;8293:528::-;-1:-1:-1;;;;;8462:16:62;;8454:53;;;;;-1:-1:-1;;;8454:53:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;8517:14;8534:12;:10;:12::i;:::-;8517:29;;8556:15;8574:27;8588:4;8594:6;8574:13;:27::i;:::-;8556:45;;8612:50;8625:4;8631:2;8635:7;8644:10;8656:5;8612:12;:50::i;:::-;8697:7;8693:2;-1:-1:-1;;;;;8678:27:62;8687:4;-1:-1:-1;;;;;8678:27:62;;;;;;;;;;;8719:4;:23;;;;;8727:15;:2;-1:-1:-1;;;;;8727:13:62;;:15::i;:::-;8715:100;;;8758:46;8780:4;8786:2;8790:7;8799:4;8758:21;:46::i;:::-;8293:528;;;;;;;:::o;1120:126:1:-;-1:-1:-1;;;;;1193:17:1;;;;;;:8;:17;;;;;;;;1185:54;;;;;-1:-1:-1;;;1185:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;7487:390:62;-1:-1:-1;;;;;7626:16:62;;7618:49;;;;;-1:-1:-1;;;7618:49:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;7678:28;7687:2;7691:7;7700:5;7678:8;:28::i;:::-;7722:33;;7747:7;;-1:-1:-1;;;;;7722:33:62;;;7739:1;;7722:33;;7739:1;;7722:33;7769:4;:23;;;;;7777:15;:2;-1:-1:-1;;;;;7777:13:62;;:15::i;:::-;7765:106;;;7808:52;7838:1;7842:2;7846:7;7855:4;7808:21;:52::i;7883:404::-;-1:-1:-1;;;;;7969:16:62;;7961:49;;;;;-1:-1:-1;;;7961:49:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;8038:15;;8021:14;8063:181;8084:6;8079:1;:11;8063:181;;8111:15;8129:8;8138:1;8129:11;;;;;;;;;;;;;;8111:29;;8154:27;8163:2;8167:7;8176:4;8154:8;:27::i;:::-;8200:33;;8225:7;;-1:-1:-1;;;;;8200:33:62;;;8217:1;;8200:33;;8217:1;;8200:33;-1:-1:-1;8092:3:62;;8063:181;;;-1:-1:-1;;;;;;8254:16:62;;;;;;;:12;:16;;;;;:26;;;;;;;;-1:-1:-1;7883:404:62:o;1770:136:2:-;1860:4;-1:-1:-1;;;;;1860:10:2;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1860:12:2;-1:-1:-1;;;;;1849:23:2;;;;;;1841:58;;;;;-1:-1:-1;;;1841:58:2;;;;;;;;;;;;;;;;;;;;;;;;;;;416:223:6;573:58;;;-1:-1:-1;;;;;573:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;596:23;573:58;;;538:94;;566:5;;538:27;:94::i;1252:122:1:-;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;2878:180:74:-;2981:16;3016:35;:33;:35::i;:::-;3009:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3009:42:74;;-1:-1:-1;;;;2878:180:74;:::o;808:159:11:-;865:13;921:15;938:20;:2;:18;:20::i;:::-;904:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:11;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;890:70;;808:159;;;:::o;8956:573:62:-;9120:13;9136:11;;;:7;:11;;;;;;-1:-1:-1;;;;;9165:31:62;;;;;;;9157:65;;;;;-1:-1:-1;;;9157:65:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;9237:10;9232:160;;-1:-1:-1;;;9272:34:62;;:39;;;;9271:78;;-1:-1:-1;9332:17:62;;;;:13;:17;;;;;;-1:-1:-1;;;;;9332:17:62;9316:12;:10;:12::i;:::-;-1:-1:-1;;;;;9316:33:62;;9271:78;9263:118;;;;;-1:-1:-1;;;9263:118:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;9401:11;;;;:7;:11;;;;;-1:-1:-1;;;;;9415:20:62;;9401:34;;9450:7;9445:78;;9473:39;9500:4;9506:2;9510:1;9535:381;9682:2;-1:-1:-1;;;;;9674:10:62;:4;-1:-1:-1;;;;;9674:10:62;;9670:240;;-1:-1:-1;;;;;9773:18:62;;;;;;;:12;:18;;;;;;:28;;;;;;;9873:16;;;;;;:26;;;;;;9535:381;;;:::o;743:904:85:-;796:15;851:10;796:15;896:27;:25;:27::i;:::-;871:52;;958:18;-1:-1:-1;;;;;937:40:85;:9;-1:-1:-1;;;;;937:40:85;;:76;;;;994:19;-1:-1:-1;;;;;981:32:85;:9;-1:-1:-1;;;;;981:32:85;;937:76;933:166;;;1082:6;-1:-1:-1;1075:13:85;;-1:-1:-1;1075:13:85;933:166;-1:-1:-1;;;;;1496:22:85;;1509:9;1496:22;;;;:78;;;1522:18;-1:-1:-1;;;;;1522:33:85;;1556:6;1564:9;1522:52;;;;;;;;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1522:52:85;1496:78;1492:122;;;1597:6;-1:-1:-1;1590:13:85;;-1:-1:-1;1590:13:85;1492:122;-1:-1:-1;1631:9:85;-1:-1:-1;743:904:85;:::o;913:377:9:-;1229:20;1275:8;;;913:377::o;10697:285:62:-;1144:33;-1:-1:-1;;;;;10855:36:62;;;10892:12;:10;:12::i;:::-;10906:4;10912:7;10921:4;10855:71;;;;;;;;;;;;;-1:-1:-1;;;;;10855:71:62;;;;;;-1:-1:-1;;;;;10855:71:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10855:71:62;:91;;;10847:128;;;;;-1:-1:-1;;;10847:128:62;;;;;;;;;;;;;;;;;;;;;;;;;;;9922:355;10035:11;;;;:7;:11;;;;;;:16;10027:55;;;;;-1:-1:-1;;;10027:55:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;10093:11;;;;:7;:11;;;;;-1:-1:-1;;;;;10107:20:62;;10093:34;;10143:7;10138:133;;-1:-1:-1;;;;;;;10244:16:62;;;;;:12;:16;;;;;10242:18;;;;;;9922:355::o;1147:870:6:-;1272:5;1296:19;-1:-1:-1;;;;;1296:17:6;;;:19::i;:::-;1288:58;;;;;-1:-1:-1;;;1288:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:12;1431:17;1452:6;-1:-1:-1;;;;;1452:11:6;1464:8;1452:21;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1452:21:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:57;;;;1487:7;1483:528;;;1514:11;;:16;1510:122;;1569:4;1558:24;;;;;;;;;;;;;;;-1:-1:-1;1558:24:6;1550:67;;;;;-1:-1:-1;;;1550:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:528;;;1720:11;;1716:95;;1756:40;;;-1:-1:-1;;;1756:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:95;1938:4;1932:11;1982:4;1975;1971:2;1967:13;1960:27;1902:99;1147:870;;;;;:::o;1653:670:85:-;1704:14;;1758:10;-1:-1:-1;;;;;1803:18:85;1782:40;;;;:76;;;1839:19;-1:-1:-1;;;;;1826:32:85;:9;-1:-1:-1;;;;;1826:32:85;;1782:76;1778:197;;;1927:37;:35;:37::i;:::-;1920:44;;;;;;;1778:197;-1:-1:-1;;;;;2122:22:85;;2135:9;2122:22;;;;:99;;;2148:18;-1:-1:-1;;;;;2148:33:85;;2182:27;:25;:27::i;:::-;2211:9;2148:73;;;;;;;;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2148:73:85;2122:99;2118:174;;;2244:37;:35;:37::i;2118:174::-;2308:8;;2301:15;;;;;1653:670;;;:::o;276:546:10:-;339:13;368:10;364:51;;-1:-1:-1;394:10:10;;;;;;;;;;;;;;;;;;;364:51;439:5;424:12;478:75;485:9;;478:75;;510:8;;540:2;532:10;;;;478:75;;;562:19;594:6;584:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;584:17:10;-1:-1:-1;654:5:10;;-1:-1:-1;562:39:10;-1:-1:-1;;;627:10:10;;669:116;676:9;;669:116;;745:2;738:4;:9;732:2;:16;719:31;;701:6;708:7;;;;;;;701:15;;;;;;;;;;;:49;;;;;;;;;;-1:-1:-1;772:2:10;764:10;;;;669:116;;;-1:-1:-1;808:6:10;276:546;-1:-1:-1;;;;276:546:10:o;103:519:84:-;-1:-1:-1;;585:14:84;581:23;568:37;564:2;560:46;;536:80::o;628:149::-;706:14;;739:31;-1:-1:-1;;749:20:84;;706:14;;;739:31;:::i;:::-;732:38;;;;628:149;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:363:86;;;172:8;160:10;157:24;154:2;;;202:9;191;184:28;154:2;239:6;229:8;226:20;223:2;;;267:9;256;249:28;223:2;-1:-1:-1;;301:23:86;;;346:25;;;;;-1:-1:-1;144:233:86:o"
            },
            "methodIdentifiers": {
              "addMinter(address)": "983b2d56",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "baseMetadataURI()": "5b2bd79e",
              "batchMint(address,uint256[])": "4684d7e9",
              "batchTransferFrom(address,address,uint256[])": "f3993d11",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isMinter(address)": "aa271e1a",
              "isTrustedForwarder(address)": "572b6c05",
              "mint(address,uint256)": "40c10f19",
              "msgData()": "c4c2bfdc",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "recoverERC20s(address[],address[],uint256[])": "73c8a958",
              "recoverERC721s(address[],address[],uint256[])": "c3666c36",
              "renounceMinter()": "98650275",
              "safeMint(address,uint256,bytes)": "8832e6e3",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setBaseMetadataURI(string)": "7e518ec8",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "contracts/token/ERC721/mocks/ERC721PausableMock.sol": {
        "ERC721PausableMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IForwarderRegistry",
                  "name": "forwarderRegistry",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "universalForwarder",
                  "type": "address"
                }
              ],
              "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": false,
                  "internalType": "string",
                  "name": "baseMetadataURI",
                  "type": "string"
                }
              ],
              "name": "BaseMetadataURISet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterRemoved",
              "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": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Paused",
              "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"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Unpaused",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "addMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "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": [],
              "name": "baseMetadataURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "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": "",
                  "type": "address"
                }
              ],
              "name": "isMinter",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "forwarder",
                  "type": "address"
                }
              ],
              "name": "isTrustedForwarder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "msgData",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "ret",
                  "type": "bytes"
                }
              ],
              "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": "pause",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "paused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC20s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "contracts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC721s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeMint",
              "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": "string",
                  "name": "baseMetadataURI_",
                  "type": "string"
                }
              ],
              "name": "setBaseMetadataURI",
              "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": "nftId",
                  "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"
            },
            {
              "inputs": [],
              "name": "unpause",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60c06040523480156200001157600080fd5b506040516200310338038062003103833981810160405260408110156200003757600080fd5b50805160209182015160408051808201825260128152714552433732314275726e61626c654d6f636b60701b81860152815180830183526005815264229b9918a160d91b95810195909552600080546001600160a81b03191633610100810291909117825592519495939486948694939290918391839188918891889182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606091821b811660a05291901b1660805281516200010b9060019060208501906200018e565b508051620001219060029060208401906200018e565b505050505062000137816200014260201b60201c565b50505050506200023a565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620001c6576000855562000211565b82601f10620001e157805160ff191683800117855562000211565b8280016001018555821562000211579182015b8281111562000211578251825591602001919060010190620001f4565b506200021f92915062000223565b5090565b5b808211156200021f576000815560010162000224565b60805160601c60a05160601c612e816200028260003980610fe452806121ab52806129af52508061101f5280612170528061220352806129855280612a105250612e816000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c80637e518ec81161012a578063aa271e1a116100bd578063c87b56dd1161008c578063f247296511610071578063f247296514610a3f578063f2fde38b14610af2578063f3993d1114610b185761020b565b8063c87b56dd146109f4578063e985e9c514610a115761020b565b8063aa271e1a146107ec578063b88d4fde14610812578063c3666c36146108d8578063c4c2bfdc146109ec5761020b565b806395d89b41116100f957806395d89b4114610788578063983b2d561461079057806398650275146107b6578063a22cb465146107be5761020b565b80637e518ec81461064d5780638456cb59146106bd5780638832e6e3146106c55780638da5cb5b146107805761020b565b80634684d7e9116101a25780636352211e116101715780636352211e146104b857806370a08231146104d557806373c8a9581461050d57806379cc6790146106215761020b565b80634684d7e9146103cf578063572b6c05146104825780635b2bd79e146104a85780635c975abb146104b05761020b565b806323b872dd116101de57806323b872dd1461032f5780633f4ba83a1461036557806340c10f191461036d57806342842e0e146103995761020b565b806301ffc9a71461021057806306fdde031461024b578063081812fc146102c8578063095ea7b314610301575b600080fd5b6102376004803603602081101561022657600080fd5b50356001600160e01b031916610bd4565b604080519115158252519081900360200190f35b610253610c1a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028d578181015183820152602001610275565b50505050905090810190601f1680156102ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e5600480360360208110156102de57600080fd5b5035610cb0565b604080516001600160a01b039092168252519081900360200190f35b61032d6004803603604081101561031757600080fd5b506001600160a01b038135169060200135610d4f565b005b61032d6004803603606081101561034557600080fd5b506001600160a01b03813581169160208101359091169060400135610f56565b61032d610f6e565b61032d6004803603604081101561038357600080fd5b506001600160a01b038135169060200135610f88565b61032d600480360360608110156103af57600080fd5b506001600160a01b03813581169160208101359091169060400135610fb8565b61032d600480360360408110156103e557600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561041057600080fd5b82018360208201111561042257600080fd5b8035906020019184602083028401116401000000008311171561044457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610fcb945050505050565b6102376004803603602081101561049857600080fd5b50356001600160a01b0316610fe0565b610253611059565b6102376110e7565b6102e5600480360360208110156104ce57600080fd5b50356110f0565b6104fb600480360360208110156104eb57600080fd5b50356001600160a01b031661115a565b60408051918252519081900360200190f35b61032d6004803603606081101561052357600080fd5b81019060208101813564010000000081111561053e57600080fd5b82018360208201111561055057600080fd5b8035906020019184602083028401116401000000008311171561057257600080fd5b91939092909160208101903564010000000081111561059057600080fd5b8201836020820111156105a257600080fd5b803590602001918460208302840111640100000000831117156105c457600080fd5b9193909290916020810190356401000000008111156105e257600080fd5b8201836020820111156105f457600080fd5b8035906020019184602083028401116401000000008311171561061657600080fd5b5090925090506111d3565b61032d6004803603604081101561063757600080fd5b506001600160a01b0381351690602001356112c0565b61032d6004803603602081101561066357600080fd5b81019060208101813564010000000081111561067e57600080fd5b82018360208201111561069057600080fd5b803590602001918460018302840111640100000000831117156106b257600080fd5b5090925090506112d2565b61032d61134e565b61032d600480360360608110156106db57600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561070b57600080fd5b82018360208201111561071d57600080fd5b8035906020019184600183028401116401000000008311171561073f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611361945050505050565b6102e5611379565b61025361138d565b61032d600480360360208110156107a657600080fd5b50356001600160a01b03166113eb565b61032d611402565b61032d600480360360408110156107d457600080fd5b506001600160a01b0381351690602001351515611460565b6102376004803603602081101561080257600080fd5b50356001600160a01b0316611541565b61032d6004803603608081101561082857600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561086357600080fd5b82018360208201111561087557600080fd5b8035906020019184600183028401116401000000008311171561089757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611556945050505050565b61032d600480360360608110156108ee57600080fd5b81019060208101813564010000000081111561090957600080fd5b82018360208201111561091b57600080fd5b8035906020019184602083028401116401000000008311171561093d57600080fd5b91939092909160208101903564010000000081111561095b57600080fd5b82018360208201111561096d57600080fd5b8035906020019184602083028401116401000000008311171561098f57600080fd5b9193909290916020810190356401000000008111156109ad57600080fd5b8201836020820111156109bf57600080fd5b803590602001918460208302840111640100000000831117156109e157600080fd5b509092509050611570565b6102536116b8565b61025360048036036020811015610a0a57600080fd5b50356116c7565b61023760048036036040811015610a2757600080fd5b506001600160a01b038135811691602001351661173c565b61032d60048036036040811015610a5557600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115610a8057600080fd5b820183602082011115610a9257600080fd5b80359060200191846020830284011164010000000083111715610ab457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061176a945050505050565b61032d60048036036020811015610b0857600080fd5b50356001600160a01b031661177c565b61032d60048036036060811015610b2e57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135640100000000811115610b6257600080fd5b820183602082011115610b7457600080fd5b80359060200191846020830284011164010000000083111715610b9657600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506117f6945050505050565b60006001600160e01b031982167f8b8b4ef5000000000000000000000000000000000000000000000000000000001480610c125750610c1282611809565b90505b919050565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ca55780601f10610c7a57610100808354040283529160200191610ca5565b820191906000526020600020905b815481529060010190602001808311610c8857829003601f168201915b505050505090505b90565b6000818152600460205260408120546001600160a01b038116610d1a576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b600160a01b811615610d455750506000818152600660205260409020546001600160a01b0316610c15565b6000915050610c15565b60008181526004602052604090205480610db0576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b806001600160a01b038481169082161415610e12576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b610e2381610e1e6118d6565b6118e0565b610e74576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b6001600160a01b038416610eae57600160a01b821615610ea95760008381526004602052604090206001600160a01b03821690555b610f0f565b600160a01b8217808314610ece5760008481526004602052604090208190555b50600083815260066020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b610f5e61192e565b610f69838383611986565b505050565b610f7e610f796118d6565b6119a3565b610f86611a67565b565b610f98610f936118d6565b611abf565b610fb48282604051806020016040528060008152506000611b2c565b5050565b610fc061192e565b610f69838383611bf7565b610fd6610f936118d6565b610fb48282611c14565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610c1257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110df5780601f106110b4576101008083540402835291602001916110df565b820191906000526020600020905b8154815290600101906020018083116110c257829003601f168201915b505050505081565b60005460ff1681565b6000818152600460205260408120546001600160a01b038116610c12576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b60006001600160a01b0382166111b7576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b506001600160a01b031660009081526005602052604090205490565b6111de610f796118d6565b8483811480156111ed57508082145b61123e576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b8181146112b6576112ae88888381811061125757fe5b905060200201356001600160a01b031685858481811061127357fe5b9050602002013588888581811061128657fe5b905060200201356001600160a01b03166001600160a01b0316611d059092919063ffffffff16565b600101611241565b5050505050505050565b6112c861192e565b610fb48282611d85565b6112dd610f796118d6565b6112e960078383612d82565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b611359610f796118d6565b610f86611dea565b61136c610f936118d6565b610f698383836001611b2c565b60005461010090046001600160a01b031690565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610ca55780601f10610c7a57610100808354040283529160200191610ca5565b6113f6610f796118d6565b6113ff81611e28565b50565b600061140c6118d6565b905061141781611abf565b6001600160a01b038116600081815260086020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b600061146a6118d6565b9050806001600160a01b0316836001600160a01b031614156114d3576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260036020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b60086020526000908152604090205460ff1681565b61155e61192e565b61156a84848484611e74565b50505050565b61157b610f796118d6565b84838114801561158a57508082145b6115db576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b8181146112b6578585828181106115f157fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a8581811061161c57fe5b905060200201356001600160a01b031687878681811061163857fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561169557600080fd5b505af11580156116a9573d6000803e3d6000fd5b505050508060010190506115de565b60606116c2611e82565b905090565b6000818152600460205260409020546060906001600160a01b0316611733576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b610c1282611ec6565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b61177261192e565b610fb48282611f99565b611787610f796118d6565b600080547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682810293909317808555604051939492900416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6117fe61192e565b610f69838383612054565b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061186c57506001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000145b806118a057506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610c125750506001600160e01b0319167ff3993d11000000000000000000000000000000000000000000000000000000001490565b60006116c2612160565b6000816001600160a01b0316836001600160a01b0316148061192757506001600160a01b0380841660009081526003602090815260408083209386168352929052205460ff165b9392505050565b60005460ff1615610f86576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b610f698383836040518060200160405280600081525060006122c0565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156119dc57600080fd5b505afa1580156119f0573d6000803e3d6000fd5b505050506040513d6020811015611a0657600080fd5b50516001600160a01b038281169116146113ff576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b611a6f6123b8565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611aa26118d6565b604080516001600160a01b039092168252519081900360200190a1565b6001600160a01b03811660009081526008602052604090205460ff166113ff576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416611b87576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b611b938484600061240f565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808015611be55750611be5846001600160a01b03166124b1565b1561156a5761156a60008585856124b7565b610f698383836040518060200160405280600081525060016122c0565b6001600160a01b038216611c6f576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b805160005b818114611ce0576000838281518110611c8957fe5b60200260200101519050611c9f8582600161240f565b60405181906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450600101611c74565b506001600160a01b039092166000908152600560205260409020805490920190915550565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610f69908490612639565b6000611d8f6118d6565b90506000611d9d84836118e0565b9050611dac848483600061281c565b60405183906000906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a450505050565b611df261192e565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611aa26118d6565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b61156a8484848460016122c0565b6060611e8c612977565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b60606007611ed383612ada565b6040516020018083805460018160011615610100020316600290048015611f315780601f10611f0f576101008083540402835291820191611f31565b820191906000526020600020905b815481529060010190602001808311611f1d575b5050825160208401908083835b60208310611f5d5780518252601f199092019160209182019101611f3e565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b6000611fa36118d6565b90506000611fb184836118e0565b835190915060005b818114612026576000858281518110611fce57fe5b60200260200101519050611fe5878286600161281c565b60405181906000906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a450600101611fb9565b50801561204d576001600160a01b0385166000908152600560205260409020805482900390555b5050505050565b6001600160a01b0382166120af576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b60006120b96118d6565b905060006120c785836118e0565b835190915060005b8181146121465760008582815181106120e457fe5b602002602001015190506120fc888883876001612be9565b80876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4506001016120cf565b50801561215857612158868683612d10565b505050505050565b6000338161216c612d5b565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806121df57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b156121ed579150610cad9050565b6001600160a01b03821632148015906122ac57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561227f57600080fd5b505afa158015612293573d6000803e3d6000fd5b505050506040513d60208110156122a957600080fd5b50515b156122ba579150610cad9050565b50905090565b6001600160a01b03841661231b576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b60006123256118d6565b9050600061233387836118e0565b9050612343878787846000612be9565b84866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a482801561239e575061239e866001600160a01b03166124b1565b156123af576123af878787876124b7565b50505050505050565b60005460ff16610f86576040805162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b60008281526004602052604090205415612470576040805162461bcd60e51b815260206004820152601a60248201527f4552433732313a206578697374696e672f6275726e74204e4654000000000000604482015290519081900360640190fd5b60008281526004602052604090206001600160a01b038416905580610f695750506001600160a01b0316600090815260056020526040902080546001019055565b3b151590565b7f150b7a02000000000000000000000000000000000000000000000000000000006001600160a01b03841663150b7a026124ef6118d6565b8786866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561256257818101518382015260200161254a565b50505050905090810190601f16801561258f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156125b157600080fd5b505af11580156125c5573d6000803e3d6000fd5b505050506040513d60208110156125db57600080fd5b50516001600160e01b0319161461156a576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220726566757365640000000000000000604482015290519081900360640190fd5b8161264c6001600160a01b0382166124b1565b61269d576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106126da5780518252601f1990920191602091820191016126bb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461273c576040519150601f19603f3d011682016040523d82523d6000602084013e612741565b606091505b509150915081156127c0578051156127bb5780806020019051602081101561276857600080fd5b50516127bb576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b61204d565b8051612813576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b6000838152600460205260409020546001600160a01b038581169082161461288b576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a206e6f6e2d6f776e6564204e46540000000000000000000000604482015290519081900360640190fd5b8261291c57600160a01b8116158015906128cb57506000848152600660205260409020546001600160a01b03166128c06118d6565b6001600160a01b0316145b61291c576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b60008481526004602052604090207fdead00000000000000000000000000000000000000000000000000000000000090558161204d57505050506001600160a01b031660009081526005602052604090208054600019019055565b366000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168114806129e357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156129fa576129f0612d67565b9250925050612ad6565b6001600160a01b0381163214801590612ac057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6612a45612d5b565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015612a9357600080fd5b505afa158015612aa7573d6000803e3d6000fd5b505050506040513d6020811015612abd57600080fd5b50515b15612acd576129f0612d67565b60003692509250505b9091565b606081612b1b575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610c15565b8160005b8115612b3357600101600a82049150612b1f565b60008167ffffffffffffffff81118015612b4c57600080fd5b506040519080825280601f01601f191660200182016040528015612b77576020820181803683370190505b50859350905060001982015b8315612be057600a840660300160f81b82828060019003935081518110612ba657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350612b83565b50949350505050565b6000838152600460205260409020546001600160a01b0386811690821614612c58576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a206e6f6e2d6f776e6564204e46540000000000000000000000604482015290519081900360640190fd5b82612ce957600160a01b811615801590612c9857506000848152600660205260409020546001600160a01b0316612c8d6118d6565b6001600160a01b0316145b612ce9576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b60008481526004602052604090206001600160a01b03861690558161215857612158868660015b816001600160a01b0316836001600160a01b031614610f69576001600160a01b0380841660009081526005602052604080822080548590039055918416815220805482019055505050565b60131936013560601c90565b366000612d7a6013198301828481612e23565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282612db85760008555612dfe565b82601f10612dd15782800160ff19823516178555612dfe565b82800160010185558215612dfe579182015b82811115612dfe578235825591602001919060010190612de3565b50612e0a929150612e0e565b5090565b5b80821115612e0a5760008155600101612e0f565b60008085851115612e32578182fd5b83861115612e3e578182fd5b505082019391909203915056fea2646970667358221220935a86cf157d7f8c1c7dedb32dffe669f6df39d8c3319a7f1ded02fbf63a4e3064736f6c63430007060033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x3103 CODESIZE SUB DUP1 PUSH3 0x3103 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x12 DUP2 MSTORE PUSH18 0x4552433732314275726E61626C654D6F636B PUSH1 0x70 SHL DUP2 DUP7 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH5 0x229B9918A1 PUSH1 0xD9 SHL SWAP6 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND CALLER PUSH2 0x100 DUP2 MUL SWAP2 SWAP1 SWAP2 OR DUP3 SSTORE SWAP3 MLOAD SWAP5 SWAP6 SWAP4 SWAP5 DUP7 SWAP5 DUP7 SWAP5 SWAP4 SWAP3 SWAP1 SWAP2 DUP4 SWAP2 DUP4 SWAP2 DUP9 SWAP2 DUP9 SWAP2 DUP9 SWAP2 DUP3 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0x80 MSTORE DUP2 MLOAD PUSH3 0x10B SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x18E JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x121 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x18E JUMP JUMPDEST POP POP POP POP POP PUSH3 0x137 DUP2 PUSH3 0x142 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP POP POP PUSH3 0x23A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x1C6 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x211 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x1E1 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x211 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x211 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x211 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x1F4 JUMP JUMPDEST POP PUSH3 0x21F SWAP3 SWAP2 POP PUSH3 0x223 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x21F JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x224 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x2E81 PUSH3 0x282 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xFE4 MSTORE DUP1 PUSH2 0x21AB MSTORE DUP1 PUSH2 0x29AF MSTORE POP DUP1 PUSH2 0x101F MSTORE DUP1 PUSH2 0x2170 MSTORE DUP1 PUSH2 0x2203 MSTORE DUP1 PUSH2 0x2985 MSTORE DUP1 PUSH2 0x2A10 MSTORE POP PUSH2 0x2E81 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 0x20B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E518EC8 GT PUSH2 0x12A JUMPI DUP1 PUSH4 0xAA271E1A GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xC87B56DD GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xF2472965 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xF2472965 EQ PUSH2 0xA3F JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xAF2 JUMPI DUP1 PUSH4 0xF3993D11 EQ PUSH2 0xB18 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x9F4 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0xA11 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0xAA271E1A EQ PUSH2 0x7EC JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x812 JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0x8D8 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0x9EC JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x788 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x790 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0x7B6 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x7BE JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x6BD JUMPI DUP1 PUSH4 0x8832E6E3 EQ PUSH2 0x6C5 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x780 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x4684D7E9 GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x6352211E GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x4B8 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4D5 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x50D JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x621 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x4684D7E9 EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x482 JUMPI DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x4A8 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x4B0 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x1DE JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x32F JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x365 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x399 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x24B JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2C8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x301 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xBD4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x253 PUSH2 0xC1A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x275 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2BA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xCB0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD4F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF56 JUMP JUMPDEST PUSH2 0x32D PUSH2 0xF6E JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF88 JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xFB8 JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xFCB SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFE0 JUMP JUMPDEST PUSH2 0x253 PUSH2 0x1059 JUMP JUMPDEST PUSH2 0x237 PUSH2 0x10E7 JUMP JUMPDEST PUSH2 0x2E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x10F0 JUMP JUMPDEST PUSH2 0x4FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x115A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x523 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x572 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x616 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x663 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x67E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x12D2 JUMP JUMPDEST PUSH2 0x32D PUSH2 0x134E JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x6DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x70B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x71D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x73F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1361 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2E5 PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x253 PUSH2 0x138D JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13EB JUMP JUMPDEST PUSH2 0x32D PUSH2 0x1402 JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1460 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1541 JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x863 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x875 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x897 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1556 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x909 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x91B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x93D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x95B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x96D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x98F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1570 JUMP JUMPDEST PUSH2 0x253 PUSH2 0x16B8 JUMP JUMPDEST PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x16C7 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x173C JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xAB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x176A SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x177C JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xB2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x17F6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x8B8B4EF500000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xC12 JUMPI POP PUSH2 0xC12 DUP3 PUSH2 0x1809 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xCA5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC7A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xCA5 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 0xC88 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xD1A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO PUSH2 0xD45 JUMPI POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC15 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0xC15 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0xDB0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP1 DUP3 AND EQ ISZERO PUSH2 0xE12 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE23 DUP2 PUSH2 0xE1E PUSH2 0x18D6 JUMP JUMPDEST PUSH2 0x18E0 JUMP JUMPDEST PUSH2 0xE74 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xEAE JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0xEA9 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SSTORE JUMPDEST PUSH2 0xF0F JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0xECE JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE JUMPDEST DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0xF5E PUSH2 0x192E JUMP JUMPDEST PUSH2 0xF69 DUP4 DUP4 DUP4 PUSH2 0x1986 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xF7E PUSH2 0xF79 PUSH2 0x18D6 JUMP JUMPDEST PUSH2 0x19A3 JUMP JUMPDEST PUSH2 0xF86 PUSH2 0x1A67 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xF98 PUSH2 0xF93 PUSH2 0x18D6 JUMP JUMPDEST PUSH2 0x1ABF JUMP JUMPDEST PUSH2 0xFB4 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x1B2C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xFC0 PUSH2 0x192E JUMP JUMPDEST PUSH2 0xF69 DUP4 DUP4 DUP4 PUSH2 0x1BF7 JUMP JUMPDEST PUSH2 0xFD6 PUSH2 0xF93 PUSH2 0x18D6 JUMP JUMPDEST PUSH2 0xFB4 DUP3 DUP3 PUSH2 0x1C14 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xC12 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x10DF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x10B4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x10DF 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 0x10C2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xC12 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x11B7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207A65726F2061646472657373000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x11DE PUSH2 0xF79 PUSH2 0x18D6 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x11ED JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x123E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x12B6 JUMPI PUSH2 0x12AE DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x1257 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1273 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1286 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D05 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1241 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x12C8 PUSH2 0x192E JUMP JUMPDEST PUSH2 0xFB4 DUP3 DUP3 PUSH2 0x1D85 JUMP JUMPDEST PUSH2 0x12DD PUSH2 0xF79 PUSH2 0x18D6 JUMP JUMPDEST PUSH2 0x12E9 PUSH1 0x7 DUP4 DUP4 PUSH2 0x2D82 JUMP JUMPDEST POP PUSH32 0x4B1DC5C136A3CE9FDED8DB0CE3D3366C58764EC3A8E4C2B9E52E4DDFE5EBBF7 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG1 POP POP JUMP JUMPDEST PUSH2 0x1359 PUSH2 0xF79 PUSH2 0x18D6 JUMP JUMPDEST PUSH2 0xF86 PUSH2 0x1DEA JUMP JUMPDEST PUSH2 0x136C PUSH2 0xF93 PUSH2 0x18D6 JUMP JUMPDEST PUSH2 0xF69 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1B2C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xCA5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC7A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xCA5 JUMP JUMPDEST PUSH2 0x13F6 PUSH2 0xF79 PUSH2 0x18D6 JUMP JUMPDEST PUSH2 0x13FF DUP2 PUSH2 0x1E28 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x140C PUSH2 0x18D6 JUMP JUMPDEST SWAP1 POP PUSH2 0x1417 DUP2 PUSH2 0x1ABF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x146A PUSH2 0x18D6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x14D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x155E PUSH2 0x192E JUMP JUMPDEST PUSH2 0x156A DUP5 DUP5 DUP5 DUP5 PUSH2 0x1E74 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x157B PUSH2 0xF79 PUSH2 0x18D6 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x158A JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x15DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x12B6 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x15F1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x161C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x1638 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x15DE JUMP JUMPDEST PUSH1 0x60 PUSH2 0x16C2 PUSH2 0x1E82 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1733 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xC12 DUP3 PUSH2 0x1EC6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 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 PUSH2 0x1772 PUSH2 0x192E JUMP JUMPDEST PUSH2 0xFB4 DUP3 DUP3 PUSH2 0x1F99 JUMP JUMPDEST PUSH2 0x1787 PUSH2 0xF79 PUSH2 0x18D6 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND DUP3 DUP2 MUL SWAP4 SWAP1 SWAP4 OR DUP1 DUP6 SSTORE PUSH1 0x40 MLOAD SWAP4 SWAP5 SWAP3 SWAP1 DIV AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH2 0x17FE PUSH2 0x192E JUMP JUMPDEST PUSH2 0xF69 DUP4 DUP4 DUP4 PUSH2 0x2054 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x186C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x18A0 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xC12 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xF3993D1100000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16C2 PUSH2 0x2160 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1927 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xF86 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A2070617573656400000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xF69 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x22C0 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19F0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x13FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1A6F PUSH2 0x23B8 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH2 0x1AA2 PUSH2 0x18D6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x13FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1B87 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F207A65726F000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B93 DUP5 DUP5 PUSH1 0x0 PUSH2 0x240F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 DUP1 DUP1 ISZERO PUSH2 0x1BE5 JUMPI POP PUSH2 0x1BE5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x24B1 JUMP JUMPDEST ISZERO PUSH2 0x156A JUMPI PUSH2 0x156A PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0x24B7 JUMP JUMPDEST PUSH2 0xF69 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x22C0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1C6F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F207A65726F000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1CE0 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C89 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1C9F DUP6 DUP3 PUSH1 0x1 PUSH2 0x240F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP PUSH1 0x1 ADD PUSH2 0x1C74 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xF69 SWAP1 DUP5 SWAP1 PUSH2 0x2639 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D8F PUSH2 0x18D6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1D9D DUP5 DUP4 PUSH2 0x18E0 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DAC DUP5 DUP5 DUP4 PUSH1 0x0 PUSH2 0x281C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1DF2 PUSH2 0x192E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x1AA2 PUSH2 0x18D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x156A DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x22C0 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1E8C PUSH2 0x2977 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 PUSH2 0x1ED3 DUP4 PUSH2 0x2ADA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1F31 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1F0F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x1F31 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 0x1F1D JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1F5D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1F3E JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FA3 PUSH2 0x18D6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1FB1 DUP5 DUP4 PUSH2 0x18E0 JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x2026 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1FCE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1FE5 DUP8 DUP3 DUP7 PUSH1 0x1 PUSH2 0x281C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP PUSH1 0x1 ADD PUSH2 0x1FB9 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x204D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x20AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F207A65726F0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x20B9 PUSH2 0x18D6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x20C7 DUP6 DUP4 PUSH2 0x18E0 JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x2146 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x20E4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x20FC DUP9 DUP9 DUP4 DUP8 PUSH1 0x1 PUSH2 0x2BE9 JUMP JUMPDEST DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 ADD PUSH2 0x20CF JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x2158 JUMPI PUSH2 0x2158 DUP7 DUP7 DUP4 PUSH2 0x2D10 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x216C PUSH2 0x2D5B JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x21DF JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x21ED JUMPI SWAP2 POP PUSH2 0xCAD SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x22AC JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x227F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2293 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x22BA JUMPI SWAP2 POP PUSH2 0xCAD SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x231B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F207A65726F0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2325 PUSH2 0x18D6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2333 DUP8 DUP4 PUSH2 0x18E0 JUMP JUMPDEST SWAP1 POP PUSH2 0x2343 DUP8 DUP8 DUP8 DUP5 PUSH1 0x0 PUSH2 0x2BE9 JUMP JUMPDEST DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP3 DUP1 ISZERO PUSH2 0x239E JUMPI POP PUSH2 0x239E DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x24B1 JUMP JUMPDEST ISZERO PUSH2 0x23AF JUMPI PUSH2 0x23AF DUP8 DUP8 DUP8 DUP8 PUSH2 0x24B7 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0xF86 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A206E6F7420706175736564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2470 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206578697374696E672F6275726E74204E4654000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 SSTORE DUP1 PUSH2 0xF69 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0x150B7A02 PUSH2 0x24EF PUSH2 0x18D6 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2562 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x254A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x258F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x25C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x156A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220726566757365640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x264C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x24B1 JUMP JUMPDEST PUSH2 0x269D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x26DA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x26BB JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x273C 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 0x2741 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x27C0 JUMPI DUP1 MLOAD ISZERO PUSH2 0x27BB JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x27BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x204D JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2813 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x288B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6F776E6564204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x291C JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x28CB JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x28C0 PUSH2 0x18D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x291C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH32 0xDEAD000000000000000000000000000000000000000000000000000000000000 SWAP1 SSTORE DUP2 PUSH2 0x204D JUMPI POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x29E3 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x29FA JUMPI PUSH2 0x29F0 PUSH2 0x2D67 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x2AD6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x2AC0 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x2A45 PUSH2 0x2D5B JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2AA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2ABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x2ACD JUMPI PUSH2 0x29F0 PUSH2 0x2D67 JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x2B1B JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xC15 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x2B33 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x2B1F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2B4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x2B77 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x2BE0 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x2BA6 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x2B83 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x2C58 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6F776E6564204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x2CE9 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2C98 JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C8D PUSH2 0x18D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x2CE9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 SSTORE DUP2 PUSH2 0x2158 JUMPI PUSH2 0x2158 DUP7 DUP7 PUSH1 0x1 JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xF69 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE SWAP2 DUP5 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x2D7A PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x2E23 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2DB8 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x2DFE JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2DD1 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x2DFE JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2DFE JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2DFE JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2DE3 JUMP JUMPDEST POP PUSH2 0x2E0A SWAP3 SWAP2 POP PUSH2 0x2E0E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2E0A JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x2E32 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x2E3E JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP4 GAS DUP7 0xCF ISZERO PUSH30 0x7F8C1C7DEDB32DFFE669F6DF39D8C3319A7F1DED02FBF63A4E3064736F6C PUSH4 0x43000706 STOP CALLER ",
              "sourceMap": "921:3306:75:-:0;;;987:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;987:174:75;;;;;;;;538:81:63;;;;;;;;;;-1:-1:-1;;;538:81:63;;;;;;;;;;;;;;-1:-1:-1;;;538:81:63;;;;;;;-1:-1:-1;543:16:4;;-1:-1:-1;;;;;;960:15:2;1332:10:73;543:16:4;960:15:2;;;;;;;;990:40;;987:174:75;;;;;;;;1332:10:73;538:81:63;;;;;;;987:174:75;;;;1332:10:73;;;;990:40:2;;-1:-1:-1;;990:40:2;-1:-1:-1;;;;;;;443:40:85;;;;;;;;493:38;;;;;;2033:13:62;;;;:5;;-1:-1:-1;2033:13:62;;;;:::i;:::-;-1:-1:-1;2056:17:62;;;;:7;;:17;;;;;:::i;:::-;;1967:113;;538:81:63;;476:18:1::1;487:6;476:10;;;:18;;:::i;:::-;422:79:::0;1109:241:73;;987:174:75;;921:3306;;1252:122:1;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;921:3306:75:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;921:3306:75;;;-1:-1:-1;921:3306:75;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:379:86",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:86",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "144:233:86",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "182:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "191:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "202:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "184:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "184:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "184:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "160:10:86"
                                  },
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "172:8:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "157:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "157:24:86"
                              },
                              "nodeType": "YulIf",
                              "src": "154:2:86"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "247:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "256:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "267:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "249:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "249:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "229:8:86"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "239:6:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "226:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "226:20:86"
                              },
                              "nodeType": "YulIf",
                              "src": "223:2:86"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "288:36:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "305:6:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "313:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "301:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "301:23:86"
                              },
                              "variableNames": [
                                {
                                  "name": "offsetOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "288:9:86"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "333:38:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "350:8:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "360:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "346:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "346:25:86"
                              },
                              "variableNames": [
                                {
                                  "name": "lengthOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:9:86"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "78:6:86",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "86:6:86",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "94:10:86",
                            "type": ""
                          },
                          {
                            "name": "endIndex",
                            "nodeType": "YulTypedName",
                            "src": "106:8:86",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "offsetOut",
                            "nodeType": "YulTypedName",
                            "src": "119:9:86",
                            "type": ""
                          },
                          {
                            "name": "lengthOut",
                            "nodeType": "YulTypedName",
                            "src": "130:9:86",
                            "type": ""
                          }
                        ],
                        "src": "14:363:86"
                      }
                    ]
                  },
                  "contents": "{\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(offsetOut, offsetOut) }\n        if gt(endIndex, length) { revert(offsetOut, offsetOut) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n}",
                  "id": 86,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "15042": [
                  {
                    "length": 32,
                    "start": 4127
                  },
                  {
                    "length": 32,
                    "start": 8560
                  },
                  {
                    "length": 32,
                    "start": 8707
                  },
                  {
                    "length": 32,
                    "start": 10629
                  },
                  {
                    "length": 32,
                    "start": 10768
                  }
                ],
                "15044": [
                  {
                    "length": 32,
                    "start": 4068
                  },
                  {
                    "length": 32,
                    "start": 8619
                  },
                  {
                    "length": 32,
                    "start": 10671
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061020b5760003560e01c80637e518ec81161012a578063aa271e1a116100bd578063c87b56dd1161008c578063f247296511610071578063f247296514610a3f578063f2fde38b14610af2578063f3993d1114610b185761020b565b8063c87b56dd146109f4578063e985e9c514610a115761020b565b8063aa271e1a146107ec578063b88d4fde14610812578063c3666c36146108d8578063c4c2bfdc146109ec5761020b565b806395d89b41116100f957806395d89b4114610788578063983b2d561461079057806398650275146107b6578063a22cb465146107be5761020b565b80637e518ec81461064d5780638456cb59146106bd5780638832e6e3146106c55780638da5cb5b146107805761020b565b80634684d7e9116101a25780636352211e116101715780636352211e146104b857806370a08231146104d557806373c8a9581461050d57806379cc6790146106215761020b565b80634684d7e9146103cf578063572b6c05146104825780635b2bd79e146104a85780635c975abb146104b05761020b565b806323b872dd116101de57806323b872dd1461032f5780633f4ba83a1461036557806340c10f191461036d57806342842e0e146103995761020b565b806301ffc9a71461021057806306fdde031461024b578063081812fc146102c8578063095ea7b314610301575b600080fd5b6102376004803603602081101561022657600080fd5b50356001600160e01b031916610bd4565b604080519115158252519081900360200190f35b610253610c1a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028d578181015183820152602001610275565b50505050905090810190601f1680156102ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e5600480360360208110156102de57600080fd5b5035610cb0565b604080516001600160a01b039092168252519081900360200190f35b61032d6004803603604081101561031757600080fd5b506001600160a01b038135169060200135610d4f565b005b61032d6004803603606081101561034557600080fd5b506001600160a01b03813581169160208101359091169060400135610f56565b61032d610f6e565b61032d6004803603604081101561038357600080fd5b506001600160a01b038135169060200135610f88565b61032d600480360360608110156103af57600080fd5b506001600160a01b03813581169160208101359091169060400135610fb8565b61032d600480360360408110156103e557600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561041057600080fd5b82018360208201111561042257600080fd5b8035906020019184602083028401116401000000008311171561044457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610fcb945050505050565b6102376004803603602081101561049857600080fd5b50356001600160a01b0316610fe0565b610253611059565b6102376110e7565b6102e5600480360360208110156104ce57600080fd5b50356110f0565b6104fb600480360360208110156104eb57600080fd5b50356001600160a01b031661115a565b60408051918252519081900360200190f35b61032d6004803603606081101561052357600080fd5b81019060208101813564010000000081111561053e57600080fd5b82018360208201111561055057600080fd5b8035906020019184602083028401116401000000008311171561057257600080fd5b91939092909160208101903564010000000081111561059057600080fd5b8201836020820111156105a257600080fd5b803590602001918460208302840111640100000000831117156105c457600080fd5b9193909290916020810190356401000000008111156105e257600080fd5b8201836020820111156105f457600080fd5b8035906020019184602083028401116401000000008311171561061657600080fd5b5090925090506111d3565b61032d6004803603604081101561063757600080fd5b506001600160a01b0381351690602001356112c0565b61032d6004803603602081101561066357600080fd5b81019060208101813564010000000081111561067e57600080fd5b82018360208201111561069057600080fd5b803590602001918460018302840111640100000000831117156106b257600080fd5b5090925090506112d2565b61032d61134e565b61032d600480360360608110156106db57600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561070b57600080fd5b82018360208201111561071d57600080fd5b8035906020019184600183028401116401000000008311171561073f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611361945050505050565b6102e5611379565b61025361138d565b61032d600480360360208110156107a657600080fd5b50356001600160a01b03166113eb565b61032d611402565b61032d600480360360408110156107d457600080fd5b506001600160a01b0381351690602001351515611460565b6102376004803603602081101561080257600080fd5b50356001600160a01b0316611541565b61032d6004803603608081101561082857600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561086357600080fd5b82018360208201111561087557600080fd5b8035906020019184600183028401116401000000008311171561089757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611556945050505050565b61032d600480360360608110156108ee57600080fd5b81019060208101813564010000000081111561090957600080fd5b82018360208201111561091b57600080fd5b8035906020019184602083028401116401000000008311171561093d57600080fd5b91939092909160208101903564010000000081111561095b57600080fd5b82018360208201111561096d57600080fd5b8035906020019184602083028401116401000000008311171561098f57600080fd5b9193909290916020810190356401000000008111156109ad57600080fd5b8201836020820111156109bf57600080fd5b803590602001918460208302840111640100000000831117156109e157600080fd5b509092509050611570565b6102536116b8565b61025360048036036020811015610a0a57600080fd5b50356116c7565b61023760048036036040811015610a2757600080fd5b506001600160a01b038135811691602001351661173c565b61032d60048036036040811015610a5557600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115610a8057600080fd5b820183602082011115610a9257600080fd5b80359060200191846020830284011164010000000083111715610ab457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061176a945050505050565b61032d60048036036020811015610b0857600080fd5b50356001600160a01b031661177c565b61032d60048036036060811015610b2e57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135640100000000811115610b6257600080fd5b820183602082011115610b7457600080fd5b80359060200191846020830284011164010000000083111715610b9657600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506117f6945050505050565b60006001600160e01b031982167f8b8b4ef5000000000000000000000000000000000000000000000000000000001480610c125750610c1282611809565b90505b919050565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ca55780601f10610c7a57610100808354040283529160200191610ca5565b820191906000526020600020905b815481529060010190602001808311610c8857829003601f168201915b505050505090505b90565b6000818152600460205260408120546001600160a01b038116610d1a576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b600160a01b811615610d455750506000818152600660205260409020546001600160a01b0316610c15565b6000915050610c15565b60008181526004602052604090205480610db0576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b806001600160a01b038481169082161415610e12576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b610e2381610e1e6118d6565b6118e0565b610e74576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b6001600160a01b038416610eae57600160a01b821615610ea95760008381526004602052604090206001600160a01b03821690555b610f0f565b600160a01b8217808314610ece5760008481526004602052604090208190555b50600083815260066020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b610f5e61192e565b610f69838383611986565b505050565b610f7e610f796118d6565b6119a3565b610f86611a67565b565b610f98610f936118d6565b611abf565b610fb48282604051806020016040528060008152506000611b2c565b5050565b610fc061192e565b610f69838383611bf7565b610fd6610f936118d6565b610fb48282611c14565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610c1257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110df5780601f106110b4576101008083540402835291602001916110df565b820191906000526020600020905b8154815290600101906020018083116110c257829003601f168201915b505050505081565b60005460ff1681565b6000818152600460205260408120546001600160a01b038116610c12576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b60006001600160a01b0382166111b7576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b506001600160a01b031660009081526005602052604090205490565b6111de610f796118d6565b8483811480156111ed57508082145b61123e576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b8181146112b6576112ae88888381811061125757fe5b905060200201356001600160a01b031685858481811061127357fe5b9050602002013588888581811061128657fe5b905060200201356001600160a01b03166001600160a01b0316611d059092919063ffffffff16565b600101611241565b5050505050505050565b6112c861192e565b610fb48282611d85565b6112dd610f796118d6565b6112e960078383612d82565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b611359610f796118d6565b610f86611dea565b61136c610f936118d6565b610f698383836001611b2c565b60005461010090046001600160a01b031690565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610ca55780601f10610c7a57610100808354040283529160200191610ca5565b6113f6610f796118d6565b6113ff81611e28565b50565b600061140c6118d6565b905061141781611abf565b6001600160a01b038116600081815260086020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b600061146a6118d6565b9050806001600160a01b0316836001600160a01b031614156114d3576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260036020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b60086020526000908152604090205460ff1681565b61155e61192e565b61156a84848484611e74565b50505050565b61157b610f796118d6565b84838114801561158a57508082145b6115db576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b8181146112b6578585828181106115f157fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a8581811061161c57fe5b905060200201356001600160a01b031687878681811061163857fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561169557600080fd5b505af11580156116a9573d6000803e3d6000fd5b505050508060010190506115de565b60606116c2611e82565b905090565b6000818152600460205260409020546060906001600160a01b0316611733576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b610c1282611ec6565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b61177261192e565b610fb48282611f99565b611787610f796118d6565b600080547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682810293909317808555604051939492900416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6117fe61192e565b610f69838383612054565b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061186c57506001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000145b806118a057506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610c125750506001600160e01b0319167ff3993d11000000000000000000000000000000000000000000000000000000001490565b60006116c2612160565b6000816001600160a01b0316836001600160a01b0316148061192757506001600160a01b0380841660009081526003602090815260408083209386168352929052205460ff165b9392505050565b60005460ff1615610f86576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b610f698383836040518060200160405280600081525060006122c0565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156119dc57600080fd5b505afa1580156119f0573d6000803e3d6000fd5b505050506040513d6020811015611a0657600080fd5b50516001600160a01b038281169116146113ff576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b611a6f6123b8565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611aa26118d6565b604080516001600160a01b039092168252519081900360200190a1565b6001600160a01b03811660009081526008602052604090205460ff166113ff576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416611b87576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b611b938484600061240f565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808015611be55750611be5846001600160a01b03166124b1565b1561156a5761156a60008585856124b7565b610f698383836040518060200160405280600081525060016122c0565b6001600160a01b038216611c6f576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b805160005b818114611ce0576000838281518110611c8957fe5b60200260200101519050611c9f8582600161240f565b60405181906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450600101611c74565b506001600160a01b039092166000908152600560205260409020805490920190915550565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610f69908490612639565b6000611d8f6118d6565b90506000611d9d84836118e0565b9050611dac848483600061281c565b60405183906000906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a450505050565b611df261192e565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611aa26118d6565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b61156a8484848460016122c0565b6060611e8c612977565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b60606007611ed383612ada565b6040516020018083805460018160011615610100020316600290048015611f315780601f10611f0f576101008083540402835291820191611f31565b820191906000526020600020905b815481529060010190602001808311611f1d575b5050825160208401908083835b60208310611f5d5780518252601f199092019160209182019101611f3e565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b6000611fa36118d6565b90506000611fb184836118e0565b835190915060005b818114612026576000858281518110611fce57fe5b60200260200101519050611fe5878286600161281c565b60405181906000906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a450600101611fb9565b50801561204d576001600160a01b0385166000908152600560205260409020805482900390555b5050505050565b6001600160a01b0382166120af576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b60006120b96118d6565b905060006120c785836118e0565b835190915060005b8181146121465760008582815181106120e457fe5b602002602001015190506120fc888883876001612be9565b80876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4506001016120cf565b50801561215857612158868683612d10565b505050505050565b6000338161216c612d5b565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806121df57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b156121ed579150610cad9050565b6001600160a01b03821632148015906122ac57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561227f57600080fd5b505afa158015612293573d6000803e3d6000fd5b505050506040513d60208110156122a957600080fd5b50515b156122ba579150610cad9050565b50905090565b6001600160a01b03841661231b576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b60006123256118d6565b9050600061233387836118e0565b9050612343878787846000612be9565b84866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a482801561239e575061239e866001600160a01b03166124b1565b156123af576123af878787876124b7565b50505050505050565b60005460ff16610f86576040805162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b60008281526004602052604090205415612470576040805162461bcd60e51b815260206004820152601a60248201527f4552433732313a206578697374696e672f6275726e74204e4654000000000000604482015290519081900360640190fd5b60008281526004602052604090206001600160a01b038416905580610f695750506001600160a01b0316600090815260056020526040902080546001019055565b3b151590565b7f150b7a02000000000000000000000000000000000000000000000000000000006001600160a01b03841663150b7a026124ef6118d6565b8786866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561256257818101518382015260200161254a565b50505050905090810190601f16801561258f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156125b157600080fd5b505af11580156125c5573d6000803e3d6000fd5b505050506040513d60208110156125db57600080fd5b50516001600160e01b0319161461156a576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220726566757365640000000000000000604482015290519081900360640190fd5b8161264c6001600160a01b0382166124b1565b61269d576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106126da5780518252601f1990920191602091820191016126bb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461273c576040519150601f19603f3d011682016040523d82523d6000602084013e612741565b606091505b509150915081156127c0578051156127bb5780806020019051602081101561276857600080fd5b50516127bb576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b61204d565b8051612813576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b6000838152600460205260409020546001600160a01b038581169082161461288b576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a206e6f6e2d6f776e6564204e46540000000000000000000000604482015290519081900360640190fd5b8261291c57600160a01b8116158015906128cb57506000848152600660205260409020546001600160a01b03166128c06118d6565b6001600160a01b0316145b61291c576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b60008481526004602052604090207fdead00000000000000000000000000000000000000000000000000000000000090558161204d57505050506001600160a01b031660009081526005602052604090208054600019019055565b366000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168114806129e357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156129fa576129f0612d67565b9250925050612ad6565b6001600160a01b0381163214801590612ac057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6612a45612d5b565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015612a9357600080fd5b505afa158015612aa7573d6000803e3d6000fd5b505050506040513d6020811015612abd57600080fd5b50515b15612acd576129f0612d67565b60003692509250505b9091565b606081612b1b575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610c15565b8160005b8115612b3357600101600a82049150612b1f565b60008167ffffffffffffffff81118015612b4c57600080fd5b506040519080825280601f01601f191660200182016040528015612b77576020820181803683370190505b50859350905060001982015b8315612be057600a840660300160f81b82828060019003935081518110612ba657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350612b83565b50949350505050565b6000838152600460205260409020546001600160a01b0386811690821614612c58576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a206e6f6e2d6f776e6564204e46540000000000000000000000604482015290519081900360640190fd5b82612ce957600160a01b811615801590612c9857506000848152600660205260409020546001600160a01b0316612c8d6118d6565b6001600160a01b0316145b612ce9576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b60008481526004602052604090206001600160a01b03861690558161215857612158868660015b816001600160a01b0316836001600160a01b031614610f69576001600160a01b0380841660009081526005602052604080822080548590039055918416815220805482019055505050565b60131936013560601c90565b366000612d7a6013198301828481612e23565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282612db85760008555612dfe565b82601f10612dd15782800160ff19823516178555612dfe565b82800160010185558215612dfe579182015b82811115612dfe578235825591602001919060010190612de3565b50612e0a929150612e0e565b5090565b5b80821115612e0a5760008155600101612e0f565b60008085851115612e32578182fd5b83861115612e3e578182fd5b505082019391909203915056fea2646970667358221220935a86cf157d7f8c1c7dedb32dffe669f6df39d8c3319a7f1ded02fbf63a4e3064736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x20B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E518EC8 GT PUSH2 0x12A JUMPI DUP1 PUSH4 0xAA271E1A GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xC87B56DD GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xF2472965 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xF2472965 EQ PUSH2 0xA3F JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xAF2 JUMPI DUP1 PUSH4 0xF3993D11 EQ PUSH2 0xB18 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x9F4 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0xA11 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0xAA271E1A EQ PUSH2 0x7EC JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x812 JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0x8D8 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0x9EC JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x788 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x790 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0x7B6 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x7BE JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x6BD JUMPI DUP1 PUSH4 0x8832E6E3 EQ PUSH2 0x6C5 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x780 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x4684D7E9 GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x6352211E GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x4B8 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4D5 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x50D JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x621 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x4684D7E9 EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x482 JUMPI DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x4A8 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x4B0 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x1DE JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x32F JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x365 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x399 JUMPI PUSH2 0x20B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x24B JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2C8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x301 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xBD4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x253 PUSH2 0xC1A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x275 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2BA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xCB0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD4F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF56 JUMP JUMPDEST PUSH2 0x32D PUSH2 0xF6E JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF88 JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xFB8 JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xFCB SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFE0 JUMP JUMPDEST PUSH2 0x253 PUSH2 0x1059 JUMP JUMPDEST PUSH2 0x237 PUSH2 0x10E7 JUMP JUMPDEST PUSH2 0x2E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x10F0 JUMP JUMPDEST PUSH2 0x4FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x115A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x523 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x572 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x616 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x663 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x67E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x12D2 JUMP JUMPDEST PUSH2 0x32D PUSH2 0x134E JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x6DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x70B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x71D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x73F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1361 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2E5 PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x253 PUSH2 0x138D JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13EB JUMP JUMPDEST PUSH2 0x32D PUSH2 0x1402 JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1460 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1541 JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x863 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x875 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x897 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1556 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x909 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x91B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x93D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x95B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x96D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x98F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1570 JUMP JUMPDEST PUSH2 0x253 PUSH2 0x16B8 JUMP JUMPDEST PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x16C7 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x173C JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xAB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x176A SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x177C JUMP JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xB2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x17F6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x8B8B4EF500000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xC12 JUMPI POP PUSH2 0xC12 DUP3 PUSH2 0x1809 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xCA5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC7A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xCA5 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 0xC88 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xD1A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO PUSH2 0xD45 JUMPI POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC15 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0xC15 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0xDB0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP1 DUP3 AND EQ ISZERO PUSH2 0xE12 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE23 DUP2 PUSH2 0xE1E PUSH2 0x18D6 JUMP JUMPDEST PUSH2 0x18E0 JUMP JUMPDEST PUSH2 0xE74 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xEAE JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0xEA9 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SSTORE JUMPDEST PUSH2 0xF0F JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0xECE JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE JUMPDEST DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0xF5E PUSH2 0x192E JUMP JUMPDEST PUSH2 0xF69 DUP4 DUP4 DUP4 PUSH2 0x1986 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xF7E PUSH2 0xF79 PUSH2 0x18D6 JUMP JUMPDEST PUSH2 0x19A3 JUMP JUMPDEST PUSH2 0xF86 PUSH2 0x1A67 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xF98 PUSH2 0xF93 PUSH2 0x18D6 JUMP JUMPDEST PUSH2 0x1ABF JUMP JUMPDEST PUSH2 0xFB4 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x1B2C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xFC0 PUSH2 0x192E JUMP JUMPDEST PUSH2 0xF69 DUP4 DUP4 DUP4 PUSH2 0x1BF7 JUMP JUMPDEST PUSH2 0xFD6 PUSH2 0xF93 PUSH2 0x18D6 JUMP JUMPDEST PUSH2 0xFB4 DUP3 DUP3 PUSH2 0x1C14 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xC12 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x10DF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x10B4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x10DF 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 0x10C2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xC12 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x11B7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207A65726F2061646472657373000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x11DE PUSH2 0xF79 PUSH2 0x18D6 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x11ED JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x123E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x12B6 JUMPI PUSH2 0x12AE DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x1257 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1273 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1286 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D05 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1241 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x12C8 PUSH2 0x192E JUMP JUMPDEST PUSH2 0xFB4 DUP3 DUP3 PUSH2 0x1D85 JUMP JUMPDEST PUSH2 0x12DD PUSH2 0xF79 PUSH2 0x18D6 JUMP JUMPDEST PUSH2 0x12E9 PUSH1 0x7 DUP4 DUP4 PUSH2 0x2D82 JUMP JUMPDEST POP PUSH32 0x4B1DC5C136A3CE9FDED8DB0CE3D3366C58764EC3A8E4C2B9E52E4DDFE5EBBF7 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG1 POP POP JUMP JUMPDEST PUSH2 0x1359 PUSH2 0xF79 PUSH2 0x18D6 JUMP JUMPDEST PUSH2 0xF86 PUSH2 0x1DEA JUMP JUMPDEST PUSH2 0x136C PUSH2 0xF93 PUSH2 0x18D6 JUMP JUMPDEST PUSH2 0xF69 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1B2C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xCA5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC7A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xCA5 JUMP JUMPDEST PUSH2 0x13F6 PUSH2 0xF79 PUSH2 0x18D6 JUMP JUMPDEST PUSH2 0x13FF DUP2 PUSH2 0x1E28 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x140C PUSH2 0x18D6 JUMP JUMPDEST SWAP1 POP PUSH2 0x1417 DUP2 PUSH2 0x1ABF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x146A PUSH2 0x18D6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x14D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x155E PUSH2 0x192E JUMP JUMPDEST PUSH2 0x156A DUP5 DUP5 DUP5 DUP5 PUSH2 0x1E74 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x157B PUSH2 0xF79 PUSH2 0x18D6 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x158A JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x15DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x12B6 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x15F1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x161C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x1638 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x15DE JUMP JUMPDEST PUSH1 0x60 PUSH2 0x16C2 PUSH2 0x1E82 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1733 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xC12 DUP3 PUSH2 0x1EC6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 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 PUSH2 0x1772 PUSH2 0x192E JUMP JUMPDEST PUSH2 0xFB4 DUP3 DUP3 PUSH2 0x1F99 JUMP JUMPDEST PUSH2 0x1787 PUSH2 0xF79 PUSH2 0x18D6 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND DUP3 DUP2 MUL SWAP4 SWAP1 SWAP4 OR DUP1 DUP6 SSTORE PUSH1 0x40 MLOAD SWAP4 SWAP5 SWAP3 SWAP1 DIV AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH2 0x17FE PUSH2 0x192E JUMP JUMPDEST PUSH2 0xF69 DUP4 DUP4 DUP4 PUSH2 0x2054 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x186C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x18A0 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xC12 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xF3993D1100000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16C2 PUSH2 0x2160 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1927 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xF86 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A2070617573656400000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xF69 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x22C0 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19F0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x13FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1A6F PUSH2 0x23B8 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH2 0x1AA2 PUSH2 0x18D6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x13FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1B87 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F207A65726F000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B93 DUP5 DUP5 PUSH1 0x0 PUSH2 0x240F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 DUP1 DUP1 ISZERO PUSH2 0x1BE5 JUMPI POP PUSH2 0x1BE5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x24B1 JUMP JUMPDEST ISZERO PUSH2 0x156A JUMPI PUSH2 0x156A PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0x24B7 JUMP JUMPDEST PUSH2 0xF69 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x22C0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1C6F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F207A65726F000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1CE0 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C89 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1C9F DUP6 DUP3 PUSH1 0x1 PUSH2 0x240F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP PUSH1 0x1 ADD PUSH2 0x1C74 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xF69 SWAP1 DUP5 SWAP1 PUSH2 0x2639 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D8F PUSH2 0x18D6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1D9D DUP5 DUP4 PUSH2 0x18E0 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DAC DUP5 DUP5 DUP4 PUSH1 0x0 PUSH2 0x281C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1DF2 PUSH2 0x192E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x1AA2 PUSH2 0x18D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x156A DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x22C0 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1E8C PUSH2 0x2977 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 PUSH2 0x1ED3 DUP4 PUSH2 0x2ADA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1F31 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1F0F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x1F31 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 0x1F1D JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1F5D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1F3E JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FA3 PUSH2 0x18D6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1FB1 DUP5 DUP4 PUSH2 0x18E0 JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x2026 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1FCE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1FE5 DUP8 DUP3 DUP7 PUSH1 0x1 PUSH2 0x281C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP PUSH1 0x1 ADD PUSH2 0x1FB9 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x204D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x20AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F207A65726F0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x20B9 PUSH2 0x18D6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x20C7 DUP6 DUP4 PUSH2 0x18E0 JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x2146 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x20E4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x20FC DUP9 DUP9 DUP4 DUP8 PUSH1 0x1 PUSH2 0x2BE9 JUMP JUMPDEST DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 ADD PUSH2 0x20CF JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x2158 JUMPI PUSH2 0x2158 DUP7 DUP7 DUP4 PUSH2 0x2D10 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x216C PUSH2 0x2D5B JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x21DF JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x21ED JUMPI SWAP2 POP PUSH2 0xCAD SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x22AC JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x227F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2293 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x22BA JUMPI SWAP2 POP PUSH2 0xCAD SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x231B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F207A65726F0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2325 PUSH2 0x18D6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2333 DUP8 DUP4 PUSH2 0x18E0 JUMP JUMPDEST SWAP1 POP PUSH2 0x2343 DUP8 DUP8 DUP8 DUP5 PUSH1 0x0 PUSH2 0x2BE9 JUMP JUMPDEST DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP3 DUP1 ISZERO PUSH2 0x239E JUMPI POP PUSH2 0x239E DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x24B1 JUMP JUMPDEST ISZERO PUSH2 0x23AF JUMPI PUSH2 0x23AF DUP8 DUP8 DUP8 DUP8 PUSH2 0x24B7 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0xF86 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A206E6F7420706175736564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2470 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206578697374696E672F6275726E74204E4654000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 SSTORE DUP1 PUSH2 0xF69 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0x150B7A02 PUSH2 0x24EF PUSH2 0x18D6 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2562 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x254A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x258F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x25C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x156A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220726566757365640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x264C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x24B1 JUMP JUMPDEST PUSH2 0x269D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x26DA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x26BB JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x273C 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 0x2741 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x27C0 JUMPI DUP1 MLOAD ISZERO PUSH2 0x27BB JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x27BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x204D JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2813 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x288B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6F776E6564204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x291C JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x28CB JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x28C0 PUSH2 0x18D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x291C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH32 0xDEAD000000000000000000000000000000000000000000000000000000000000 SWAP1 SSTORE DUP2 PUSH2 0x204D JUMPI POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x29E3 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x29FA JUMPI PUSH2 0x29F0 PUSH2 0x2D67 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x2AD6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x2AC0 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x2A45 PUSH2 0x2D5B JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2AA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2ABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x2ACD JUMPI PUSH2 0x29F0 PUSH2 0x2D67 JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x2B1B JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xC15 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x2B33 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x2B1F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2B4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x2B77 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x2BE0 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x2BA6 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x2B83 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x2C58 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6F776E6564204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x2CE9 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2C98 JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C8D PUSH2 0x18D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x2CE9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 SSTORE DUP2 PUSH2 0x2158 JUMPI PUSH2 0x2158 DUP7 DUP7 PUSH1 0x1 JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xF69 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE SWAP2 DUP5 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x2D7A PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x2E23 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2DB8 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x2DFE JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2DD1 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x2DFE JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2DFE JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2DFE JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2DE3 JUMP JUMPDEST POP PUSH2 0x2E0A SWAP3 SWAP2 POP PUSH2 0x2E0E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2E0A JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x2E32 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x2E3E JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP4 GAS DUP7 0xCF ISZERO PUSH30 0x7F8C1C7DEDB32DFFE669F6DF39D8C3319A7F1DED02FBF63A4E3064736F6C PUSH4 0x43000706 STOP CALLER ",
              "sourceMap": "921:3306:75:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;782:203:63;;;;;;;;;;;;;;;;-1:-1:-1;782:203:63;-1:-1:-1;;;;;;782:203:63;;:::i;:::-;;;;;;;;;;;;;;;;;;2770:98:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4685:374;;;;;;;;;;;;;;;;-1:-1:-1;4685:374:62;;:::i;:::-;;;;-1:-1:-1;;;;;4685:374:62;;;;;;;;;;;;;;3665:986;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3665:986:62;;;;;;;;:::i;:::-;;1841:202:75;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1841:202:75;;;;;;;;;;;;;;;;;:::i;1526:104::-;;;:::i;1960:147:73:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1960:147:73;;;;;;;;:::i;2125:210:75:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2125:210:75;;;;;;;;;;;;;;;;;:::i;2201:157:73:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2201:157:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2201:157:73;;-1:-1:-1;2201:157:73;;-1:-1:-1;;;;;2201:157:73:i;544:193:85:-;;;;;;;;;;;;;;;;-1:-1:-1;544:193:85;-1:-1:-1;;;;;544:193:85;;:::i;552:29:11:-;;;:::i;482:18:4:-;;;:::i;3395:236:62:-;;;;;;;;;;;;;;;;-1:-1:-1;3395:236:62;;:::i;3175:186::-;;;;;;;;;;;;;;;;-1:-1:-1;3175:186:62;-1:-1:-1;;;;;3175:186:62;;:::i;:::-;;;;;;;;;;;;;;;;1137:481:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1137:481:8;;-1:-1:-1;1137:481:8;-1:-1:-1;1137:481:8;:::i;3326:148:75:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3326:148:75;;;;;;;;:::i;588:214:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;588:214:11;;-1:-1:-1;588:214:11;-1:-1:-1;588:214:11;:::i;1358:100:75:-;;;:::i;2452:201:73:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2452:201:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2452:201:73;;-1:-1:-1;2452:201:73;;-1:-1:-1;;;;;2452:201:73:i;1114:94:2:-;;;:::i;2910:102:62:-;;;:::i;694:120:1:-;;;;;;;;;;;;;;;;-1:-1:-1;694:120:1;-1:-1:-1;;;;;694:120:1;;:::i;929:185::-;;;:::i;5093:298:62:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5093:298:62;;;;;;;;;;:::i;339:40:1:-;;;;;;;;;;;;;;;;-1:-1:-1;339:40:1;-1:-1:-1;;;;;339:40:1;;:::i;2417:243:75:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2417:243:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2417:243:75;;-1:-1:-1;2417:243:75;;-1:-1:-1;;;;;2417:243:75:i;2430:511:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2430:511:8;;-1:-1:-1;2430:511:8;-1:-1:-1;2430:511:8;:::i;3292:94:73:-;;;:::i;1521:216::-;;;;;;;;;;;;;;;;-1:-1:-1;1521:216:73;;:::i;5425:154:62:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5425:154:62;;;;;;;;;;:::i;3564:169:75:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3564:169:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3564:169:75;;-1:-1:-1;3564:169:75;;-1:-1:-1;;;;;3564:169:75:i;1448:197:2:-;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;2884:223:75:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2884:223:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2884:223:75;;-1:-1:-1;2884:223:75;;-1:-1:-1;;;;;2884:223:75:i;782:203:63:-;867:4;-1:-1:-1;;;;;;890:48:63;;905:33;890:48;;:88;;;942:36;966:11;942:23;:36::i;:::-;883:95;;782:203;;;;:::o;2770:98:62:-;2856:5;2849:12;;;;;;;;-1:-1:-1;;2849:12:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2824:13;;2849:12;;2856:5;;2849:12;;2856:5;2849:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2770:98;;:::o;4685:374::-;4761:7;4796:16;;;:7;:16;;;;;;-1:-1:-1;;;;;4830:37:62;;4822:74;;;;;-1:-1:-1;;;4822:74:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4910:34:62;;:39;4906:147;;-1:-1:-1;;4972:22:62;;;;:13;:22;;;;;;-1:-1:-1;;;;;4972:22:62;4965:29;;4906:147;5040:1;5025:17;;;;;3665:986;3745:13;3761:16;;;:7;:16;;;;;;3795:10;3787:47;;;;;-1:-1:-1;;;3787:47:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;3883:5;-1:-1:-1;;;;;3908:18:62;;;;;;;;3900:52;;;;;-1:-1:-1;;;3900:52:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:41;3984:12;3998;:10;:12::i;:::-;3970:13;:41::i;:::-;3962:81;;;;;-1:-1:-1;;;3962:81:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4057:16:62;;4053:542;;-1:-1:-1;;;4093:34:62;;:39;4089:178;;4212:16;;;;:7;:16;;;;;-1:-1:-1;;;;;4231:21:62;;4212:40;;4089:178;4053:542;;;-1:-1:-1;;;4328:34:62;;4380:29;;;4376:168;;4490:16;;;;:7;:16;;;;;:39;;;4376:168;-1:-1:-1;4557:22:62;;;;:13;:22;;;;;:27;;;;-1:-1:-1;;;;;4557:27:62;;;;;4053:542;4636:7;4632:2;-1:-1:-1;;;;;4609:35:62;4618:12;-1:-1:-1;;;;;4609:35:62;;;;;;;;;;;3665:986;;;;:::o;1841:202:75:-;1970:19;:17;:19::i;:::-;1999:37;2018:4;2024:2;2028:7;1999:18;:37::i;:::-;1841:202;;;:::o;1526:104::-;1572:31;1590:12;:10;:12::i;:::-;1572:17;:31::i;:::-;1613:10;:8;:10::i;:::-;1526:104::o;1960:147:73:-;2035:28;2050:12;:10;:12::i;:::-;2035:14;:28::i;:::-;2073:27;2079:2;2083:5;2073:27;;;;;;;;;;;;2094:5;2073;:27::i;:::-;1960:147;;:::o;2125:210:75:-;2258:19;:17;:19::i;:::-;2287:41;2310:4;2316:2;2320:7;2287:22;:41::i;2201:157:73:-;2291:28;2306:12;:10;:12::i;2291:28::-;2329:22;2340:2;2344:6;2329:10;:22::i;544:193:85:-;631:4;667:19;-1:-1:-1;;;;;654:32:85;:9;-1:-1:-1;;;;;654:32:85;;:76;;;;711:18;-1:-1:-1;;;;;690:40:85;:9;-1:-1:-1;;;;;690:40:85;;647:83;;544:193;;;:::o;552:29:11:-;;;;;;;;;;;;;;;-1:-1:-1;;552:29:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;482:18:4:-;;;;;;:::o;3395:236:62:-;3467:7;3518:16;;;:7;:16;;;;;;-1:-1:-1;;;;;3554:19:62;;3546:56;;;;;-1:-1:-1;;;3546:56:62;;;;;;;;;;;;;;;;;;;;;;;;;;;3175:186;3247:7;-1:-1:-1;;;;;3274:19:62;;3266:52;;;;;-1:-1:-1;;;3266:52:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3335:19:62;;;;;:12;:19;;;;;;;3175:186::o;1137:481:8:-;1301:31;1319:12;:10;:12::i;1301:31::-;1359:8;1392:23;;;:51;;;;-1:-1:-1;1419:24:8;;;1392:51;1384:90;;;;;-1:-1:-1;;;1384:90:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;1489:9;1484:128;1509:6;1504:1;:11;1484:128;;1536:65;1577:8;;1586:1;1577:11;;;;;;;;;;;;;-1:-1:-1;;;;;1577:11:8;1590:7;;1598:1;1590:10;;;;;;;;;;;;;1550:6;;1557:1;1550:9;;;;;;;;;;;;;-1:-1:-1;;;;;1550:9:8;-1:-1:-1;;;;;1536:40:8;;;:65;;;;;:::i;:::-;1517:3;;1484:128;;;;1137:481;;;;;;;:::o;3326:148:75:-;3409:19;:17;:19::i;:::-;3438:29;3453:4;3459:7;3438:14;:29::i;588:214:11:-;669:31;687:12;:10;:12::i;669:31::-;710:34;:15;728:16;;710:34;:::i;:::-;;759:36;778:16;;759:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;759:36:11;;;;;;;;-1:-1:-1;759:36:11;;-1:-1:-1;;;;759:36:11;588:214;;:::o;1358:100:75:-;1402:31;1420:12;:10;:12::i;1402:31::-;1443:8;:6;:8::i;2452:201:73:-;2580:28;2595:12;:10;:12::i;2580:28::-;2618;2624:2;2628:5;2635:4;2641;2618:5;:28::i;1114:94:2:-;1169:7;1195:6;;;;-1:-1:-1;;;;;1195:6:2;;1114:94::o;2910:102:62:-;2998:7;2991:14;;;;;;;-1:-1:-1;;2991:14:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2966:13;;2991:14;;2998:7;;2991:14;;2998:7;2991:14;;;;;;;;;;;;;;;;;;;;;;;;694:120:1;747:31;765:12;:10;:12::i;747:31::-;788:19;799:7;788:10;:19::i;:::-;694:120;:::o;929:185::-;972:15;990:12;:10;:12::i;:::-;972:30;;1012:23;1027:7;1012:14;:23::i;:::-;-1:-1:-1;;;;;1045:17:1;;1065:5;1045:17;;;:8;:17;;;;;;:25;;-1:-1:-1;;1045:25:1;;;1085:22;;;1065:5;1085:22;929:185;:::o;5093:298:62:-;5187:14;5204:12;:10;:12::i;:::-;5187:29;;5246:6;-1:-1:-1;;;;;5234:18:62;:8;-1:-1:-1;;;;;5234:18:62;;;5226:52;;;;;-1:-1:-1;;;5226:52:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5288:18:62;;;;;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;;:39;;-1:-1:-1;;5288:39:62;;;;;;;;;;5342:42;;;;;;;;;;;;;;;;;5093:298;;;:::o;339:40:1:-;;;;;;;;;;;;;;;:::o;2417:243:75:-;2577:19;:17;:19::i;:::-;2606:47;2629:4;2635:2;2639:7;2648:4;2606:22;:47::i;:::-;2417:243;;;;:::o;2430:511:8:-;2599:31;2617:12;:10;:12::i;2599:31::-;2657:8;2690:26;;;:55;;;;-1:-1:-1;2720:25:8;;;2690:55;2682:94;;;;;-1:-1:-1;;;2682:94:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:9;2786:149;2811:6;2806:1;:11;2786:149;;2857:9;;2867:1;2857:12;;;;;;;;;;;;;-1:-1:-1;;;;;2857:12:8;-1:-1:-1;;;;;2838:45:8;;2892:4;2899:8;;2908:1;2899:11;;;;;;;;;;;;;-1:-1:-1;;;;;2899:11:8;2912:8;;2921:1;2912:11;;;;;;;;;;;;;2838:86;;;;;;;;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:3;;;;;2786:149;;3292:94:73;3334:16;3369:10;:8;:10::i;:::-;3362:17;;3292:94;:::o;1521:216::-;1671:1;1643:14;;;:7;:14;;;;;;1594:13;;-1:-1:-1;;;;;1627:46:73;1619:83;;;;;-1:-1:-1;;;1619:83:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;1719:11;1724:5;1719:4;:11::i;5425:154:62:-;-1:-1:-1;;;;;5545:17:62;;;5522:4;5545:17;;;:10;:17;;;;;;;;:27;;;;;;;;;;;;;;;5425:154::o;3564:169:75:-;3662:19;:17;:19::i;:::-;3691:35;3711:4;3717:8;3691:19;:35::i;1448:197:2:-;1527:31;1545:12;:10;:12::i;1527:31::-;1568:6;:17;;;;;-1:-1:-1;;;;;1568:17:2;;;;;;;;;;;;;1600:38;;1568:17;;1621:6;;;;;1600:38;;1568:6;1600:38;1448:197;:::o;2884:223:75:-;3028:19;:17;:19::i;:::-;3057:43;3081:4;3087:2;3091:8;3057:23;:43::i;2243:356:62:-;2328:4;-1:-1:-1;;;;;;2363:40:62;;2378:25;2363:40;;:96;;-1:-1:-1;;;;;;;2419:40:62;;2434:25;2419:40;2363:96;:160;;;-1:-1:-1;;;;;;;2475:48:62;;2490:33;2475:48;2363:160;:229;;;-1:-1:-1;;;;;;;;2539:53:62;2554:38;2539:53;;2243:356::o;3868:177:75:-;3967:15;4001:37;:35;:37::i;11275:158:62:-;11359:4;11391:6;-1:-1:-1;;;;;11383:14:62;:4;-1:-1:-1;;;;;11383:14:62;;11382:44;;;-1:-1:-1;;;;;;11402:16:62;;;;;;;:10;:16;;;;;;;;:24;;;;;;;;;;;;11382:44;11375:51;11275:158;-1:-1:-1;;;11275:158:62:o;572:96:4:-;634:6;;;;633:7;625:36;;;;;-1:-1:-1;;;625:36:4;;;;;;;;;;;;;;;;;;;;;;;;;;;5613:272:62;5742:136;5769:4;5787:2;5803:7;5742:136;;;;;;;;;;;;5863:5;5742:13;:136::i;1770::2:-;1860:4;-1:-1:-1;;;;;1860:10:2;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1860:12:2;-1:-1:-1;;;;;1849:23:2;;;;;;1841:58;;;;;-1:-1:-1;;;1841:58:2;;;;;;;;;;;;;;;;;;;;;;;;;;;1166:131:4;1213:16;:14;:16::i;:::-;1248:5;1239:14;;-1:-1:-1;;1239:14:4;;;1268:22;1277:12;:10;:12::i;:::-;1268:22;;;-1:-1:-1;;;;;1268:22:4;;;;;;;;;;;;;;1166:131::o;1120:126:1:-;-1:-1:-1;;;;;1193:17:1;;;;;;:8;:17;;;;;;;;1185:54;;;;;-1:-1:-1;;;1185:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;7487:390:62;-1:-1:-1;;;;;7626:16:62;;7618:49;;;;;-1:-1:-1;;;7618:49:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;7678:28;7687:2;7691:7;7700:5;7678:8;:28::i;:::-;7722:33;;7747:7;;-1:-1:-1;;;;;7722:33:62;;;7739:1;;7722:33;;7739:1;;7722:33;7769:4;:23;;;;;7777:15;:2;-1:-1:-1;;;;;7777:13:62;;:15::i;:::-;7765:106;;;7808:52;7838:1;7842:2;7846:7;7855:4;7808:21;:52::i;5919:275::-;6052:135;6079:4;6097:2;6113:7;6052:135;;;;;;;;;;;;6173:4;6052:13;:135::i;7883:404::-;-1:-1:-1;;;;;7969:16:62;;7961:49;;;;;-1:-1:-1;;;7961:49:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;8038:15;;8021:14;8063:181;8084:6;8079:1;:11;8063:181;;8111:15;8129:8;8138:1;8129:11;;;;;;;;;;;;;;8111:29;;8154:27;8163:2;8167:7;8176:4;8154:8;:27::i;:::-;8200:33;;8225:7;;-1:-1:-1;;;;;8200:33:62;;;8217:1;;8200:33;;8217:1;;8200:33;-1:-1:-1;8092:3:62;;8063:181;;;-1:-1:-1;;;;;;8254:16:62;;;;;;;:12;:16;;;;;:26;;;;;;;;-1:-1:-1;7883:404:62:o;416:223:6:-;573:58;;;-1:-1:-1;;;;;573:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;596:23;573:58;;;538:94;;566:5;;538:27;:94::i;1156:277:63:-;1239:14;1256:12;:10;:12::i;:::-;1239:29;;1278:15;1296:27;1310:4;1316:6;1296:13;:27::i;:::-;1278:45;;1334:42;1343:4;1349:7;1358:10;1370:5;1334:8;:42::i;:::-;1391:35;;1418:7;;1414:1;;-1:-1:-1;;;;;1391:35:63;;;;;1414:1;;1391:35;1156:277;;;;:::o;905:129:4:-;950:19;:17;:19::i;:::-;979:6;:13;;-1:-1:-1;;979:13:4;988:4;979:13;;;1007:20;1014:12;:10;:12::i;1252:122:1:-;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;6228:304:62:-;6388:137;6415:4;6433:2;6449:7;6470:4;6511;6388:13;:137::i;4051:174:75:-;4148:16;4183:35;:33;:35::i;:::-;4176:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4176:42:75;;-1:-1:-1;;;;4051:174:75;:::o;808:159:11:-;865:13;921:15;938:20;:2;:18;:20::i;:::-;904:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:11;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;890:70;;808:159;;;:::o;1475:519:63:-;1573:14;1590:12;:10;:12::i;:::-;1573:29;;1612:15;1630:27;1644:4;1650:6;1630:13;:27::i;:::-;1685:15;;1612:45;;-1:-1:-1;1668:14:63;1711:197;1732:6;1727:1;:11;1711:197;;1759:15;1777:8;1786:1;1777:11;;;;;;;;;;;;;;1759:29;;1802:41;1811:4;1817:7;1826:10;1838:4;1802:8;:41::i;:::-;1862:35;;1889:7;;1885:1;;-1:-1:-1;;;;;1862:35:63;;;;;1885:1;;1862:35;-1:-1:-1;1740:3:63;;1711:197;;;-1:-1:-1;1922:11:63;;1918:70;;-1:-1:-1;;;;;1949:18:63;;;;;;:12;:18;;;;;:28;;;;;;;1918:70;1475:519;;;;;:::o;6708:644:62:-;-1:-1:-1;;;;;6860:16:62;;6852:53;;;;;-1:-1:-1;;;6852:53:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;6915:14;6932:12;:10;:12::i;:::-;6915:29;;6954:15;6972:27;6986:4;6992:6;6972:13;:27::i;:::-;7027:15;;6954:45;;-1:-1:-1;7010:14:62;7053:197;7074:6;7069:1;:11;7053:197;;7101:15;7119:8;7128:1;7119:11;;;;;;;;;;;;;;7101:29;;7144:49;7157:4;7163:2;7167:7;7176:10;7188:4;7144:12;:49::i;:::-;7231:7;7227:2;-1:-1:-1;;;;;7212:27:62;7221:4;-1:-1:-1;;;;;7212:27:62;;;;;;;;;;;-1:-1:-1;7082:3:62;;7053:197;;;-1:-1:-1;7264:11:62;;7260:86;;7291:44;7318:4;7324:2;7328:6;7291:26;:44::i;:::-;6708:644;;;;;;:::o;743:904:85:-;796:15;851:10;796:15;896:27;:25;:27::i;:::-;871:52;;958:18;-1:-1:-1;;;;;937:40:85;:9;-1:-1:-1;;;;;937:40:85;;:76;;;;994:19;-1:-1:-1;;;;;981:32:85;:9;-1:-1:-1;;;;;981:32:85;;937:76;933:166;;;1082:6;-1:-1:-1;1075:13:85;;-1:-1:-1;1075:13:85;933:166;-1:-1:-1;;;;;1496:22:85;;1509:9;1496:22;;;;:78;;;1522:18;-1:-1:-1;;;;;1522:33:85;;1556:6;1564:9;1522:52;;;;;;;;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1522:52:85;1496:78;1492:122;;;1597:6;-1:-1:-1;1590:13:85;;-1:-1:-1;1590:13:85;1492:122;-1:-1:-1;1631:9:85;-1:-1:-1;743:904:85;:::o;8293:528:62:-;-1:-1:-1;;;;;8462:16:62;;8454:53;;;;;-1:-1:-1;;;8454:53:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;8517:14;8534:12;:10;:12::i;:::-;8517:29;;8556:15;8574:27;8588:4;8594:6;8574:13;:27::i;:::-;8556:45;;8612:50;8625:4;8631:2;8635:7;8644:10;8656:5;8612:12;:50::i;:::-;8697:7;8693:2;-1:-1:-1;;;;;8678:27:62;8687:4;-1:-1:-1;;;;;8678:27:62;;;;;;;;;;;8719:4;:23;;;;;8727:15;:2;-1:-1:-1;;;;;8727:13:62;;:15::i;:::-;8715:100;;;8758:46;8780:4;8786:2;8790:7;8799:4;8758:21;:46::i;:::-;8293:528;;;;;;;:::o;674:96:4:-;732:6;;;;724:39;;;;;-1:-1:-1;;;724:39:4;;;;;;;;;;;;;;;;;;;;;;;;;;;9922:355:62;10035:11;;;;:7;:11;;;;;;:16;10027:55;;;;;-1:-1:-1;;;10027:55:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;10093:11;;;;:7;:11;;;;;-1:-1:-1;;;;;10107:20:62;;10093:34;;10143:7;10138:133;;-1:-1:-1;;;;;;;10244:16:62;;;;;:12;:16;;;;;10242:18;;;;;;9922:355::o;913:377:9:-;1229:20;1275:8;;;913:377::o;10697:285:62:-;1144:33;-1:-1:-1;;;;;10855:36:62;;;10892:12;:10;:12::i;:::-;10906:4;10912:7;10921:4;10855:71;;;;;;;;;;;;;-1:-1:-1;;;;;10855:71:62;;;;;;-1:-1:-1;;;;;10855:71:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10855:71:62;-1:-1:-1;;;;;;10855:91:62;;10847:128;;;;;-1:-1:-1;;;10847:128:62;;;;;;;;;;;;;;;;;;;;;;;;;;;1147:870:6;1272:5;1296:19;-1:-1:-1;;;;;1296:17:6;;;:19::i;:::-;1288:58;;;;;-1:-1:-1;;;1288:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:12;1431:17;1452:6;-1:-1:-1;;;;;1452:11:6;1464:8;1452:21;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1452:21:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:57;;;;1487:7;1483:528;;;1514:11;;:16;1510:122;;1569:4;1558:24;;;;;;;;;;;;;;;-1:-1:-1;1558:24:6;1550:67;;;;;-1:-1:-1;;;1550:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:528;;;1720:11;;1716:95;;1756:40;;;-1:-1:-1;;;1756:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:95;1938:4;1932:11;1982:4;1975;1971:2;1967:13;1960:27;2129:604:63;2269:13;2285:11;;;:7;:11;;;;;;-1:-1:-1;;;;;2314:31:63;;;;;;;2306:65;;;;;-1:-1:-1;;;2306:65:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:10;2381:160;;-1:-1:-1;;;2421:34:63;;:39;;;;2420:78;;-1:-1:-1;2481:17:63;;;;:13;:17;;;;;;-1:-1:-1;;;;;2481:17:63;2465:12;:10;:12::i;:::-;-1:-1:-1;;;;;2465:33:63;;2420:78;2412:118;;;;;-1:-1:-1;;;2412:118:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;2550:11;;;;:7;:11;;;;;1351:66:62;2550:30:63;;2596:7;2591:136;;-1:-1:-1;;;;;;;;;2698:18:63;;;;;:12;:18;;;;;2696:20;;-1:-1:-1;;2696:20:63;;;2129:604::o;1653:670:85:-;1704:14;;1758:10;-1:-1:-1;;;;;1803:18:85;1782:40;;;;:76;;;1839:19;-1:-1:-1;;;;;1826:32:85;:9;-1:-1:-1;;;;;1826:32:85;;1782:76;1778:197;;;1927:37;:35;:37::i;:::-;1920:44;;;;;;;1778:197;-1:-1:-1;;;;;2122:22:85;;2135:9;2122:22;;;;:99;;;2148:18;-1:-1:-1;;;;;2148:33:85;;2182:27;:25;:27::i;:::-;2211:9;2148:73;;;;;;;;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2148:73:85;2122:99;2118:174;;;2244:37;:35;:37::i;2118:174::-;2308:8;;2301:15;;;;;1653:670;;;:::o;276:546:10:-;339:13;368:10;364:51;;-1:-1:-1;394:10:10;;;;;;;;;;;;;;;;;;;364:51;439:5;424:12;478:75;485:9;;478:75;;510:8;;540:2;532:10;;;;478:75;;;562:19;594:6;584:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;584:17:10;-1:-1:-1;654:5:10;;-1:-1:-1;562:39:10;-1:-1:-1;;;627:10:10;;669:116;676:9;;669:116;;745:2;738:4;:9;732:2;:16;719:31;;701:6;708:7;;;;;;;701:15;;;;;;;;;;;:49;;;;;;;;;;-1:-1:-1;772:2:10;764:10;;;;669:116;;;-1:-1:-1;808:6:10;276:546;-1:-1:-1;;;;276:546:10:o;8956:573:62:-;9120:13;9136:11;;;:7;:11;;;;;;-1:-1:-1;;;;;9165:31:62;;;;;;;9157:65;;;;;-1:-1:-1;;;9157:65:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;9237:10;9232:160;;-1:-1:-1;;;9272:34:62;;:39;;;;9271:78;;-1:-1:-1;9332:17:62;;;;:13;:17;;;;;;-1:-1:-1;;;;;9332:17:62;9316:12;:10;:12::i;:::-;-1:-1:-1;;;;;9316:33:62;;9271:78;9263:118;;;;;-1:-1:-1;;;9263:118:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;9401:11;;;;:7;:11;;;;;-1:-1:-1;;;;;9415:20:62;;9401:34;;9450:7;9445:78;;9473:39;9500:4;9506:2;9510:1;9535:381;9682:2;-1:-1:-1;;;;;9674:10:62;:4;-1:-1:-1;;;;;9674:10:62;;9670:240;;-1:-1:-1;;;;;9773:18:62;;;;;;;:12;:18;;;;;;:28;;;;;;;9873:16;;;;;;:26;;;;;;9535:381;;;:::o;103:519:84:-;-1:-1:-1;;585:14:84;581:23;568:37;564:2;560:46;;536:80::o;628:149::-;706:14;;739:31;-1:-1:-1;;749:20:84;;706:14;;;739:31;:::i;:::-;732:38;;;;628:149;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:363:86;;;172:8;160:10;157:24;154:2;;;202:9;191;184:28;154:2;239:6;229:8;226:20;223:2;;;267:9;256;249:28;223:2;-1:-1:-1;;301:23:86;;;346:25;;;;;-1:-1:-1;144:233:86:o"
            },
            "methodIdentifiers": {
              "addMinter(address)": "983b2d56",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "baseMetadataURI()": "5b2bd79e",
              "batchBurnFrom(address,uint256[])": "f2472965",
              "batchMint(address,uint256[])": "4684d7e9",
              "batchTransferFrom(address,address,uint256[])": "f3993d11",
              "burnFrom(address,uint256)": "79cc6790",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isMinter(address)": "aa271e1a",
              "isTrustedForwarder(address)": "572b6c05",
              "mint(address,uint256)": "40c10f19",
              "msgData()": "c4c2bfdc",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "pause()": "8456cb59",
              "paused()": "5c975abb",
              "recoverERC20s(address[],address[],uint256[])": "73c8a958",
              "recoverERC721s(address[],address[],uint256[])": "c3666c36",
              "renounceMinter()": "98650275",
              "safeMint(address,uint256,bytes)": "8832e6e3",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setBaseMetadataURI(string)": "7e518ec8",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "unpause()": "3f4ba83a"
            }
          }
        }
      },
      "contracts/token/ERC721/mocks/ERC721ReceiverMock.sol": {
        "ERC721ReceiverMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "accept721",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "gas",
                  "type": "uint256"
                }
              ],
              "name": "Received",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC721Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60c060405234801561001057600080fd5b506040516104eb3803806104eb8339818101604052604081101561003357600080fd5b50805160209091015190151560f881901b608052606082901b6001600160601b03191660a05260ff16906001600160a01b0316610468610083600039806102495250806102d752506104686000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b578063150b7a021461008e575b600080fd5b61007a6004803603602081101561005157600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610196565b604080519115158252519081900360200190f35b610161600480360360808110156100a457600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013590911691604082013591908101906080810160608201356401000000008111156100ec57600080fd5b8201836020820111156100fe57600080fd5b8035906020019184600183028401116401000000008311171561012057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061022f945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061022957507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b92915050565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f45524337323152656365697665723a2077726f6e6720746f6b656e0000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000015610407577f28fa6e16458f9c24aa59ddd4085264573006dbe30304837873c7deafc702b038858585855a604051808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156103a257818101518382015260200161038a565b50505050905090810190601f1680156103cf5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1507f150b7a020000000000000000000000000000000000000000000000000000000061042a565b507fffffffff000000000000000000000000000000000000000000000000000000005b94935050505056fea26469706673582212208c2252b98b630f22e5ffd10234d5d9eae1f9f8d519e869b054ba12e7a88a8e3264736f6c63430007060033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x4EB CODESIZE SUB DUP1 PUSH2 0x4EB DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 ISZERO ISZERO PUSH1 0xF8 DUP2 SWAP1 SHL PUSH1 0x80 MSTORE PUSH1 0x60 DUP3 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE PUSH1 0xFF AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x468 PUSH2 0x83 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x249 MSTORE POP DUP1 PUSH2 0x2D7 MSTORE POP PUSH2 0x468 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x8E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x196 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x161 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x22F SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x229 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x2D5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524337323152656365697665723A2077726F6E6720746F6B656E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x407 JUMPI PUSH32 0x28FA6E16458F9C24AA59DDD4085264573006DBE30304837873C7DEAFC702B038 DUP6 DUP6 DUP6 DUP6 GAS PUSH1 0x40 MLOAD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3A2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x38A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3CF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH2 0x42A JUMP JUMPDEST POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0x22 MSTORE 0xB9 DUP12 PUSH4 0xF22E5FF 0xD1 MUL CALLVALUE 0xD5 0xD9 0xEA 0xE1 0xF9 0xF8 0xD5 NOT 0xE8 PUSH10 0xB054BA12E7A88A8E3264 PUSH20 0x6F6C634300070600330000000000000000000000 ",
              "sourceMap": "232:1086:76:-:0;;;469:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;469:147:76;;;;;;;546:22;::::1;;;::::0;;::::1;;::::0;578:31:::1;::::0;;;-1:-1:-1;;;;;;578:31:76;::::1;::::0;232:1086;;;-1:-1:-1;;;;;232:1086:76;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {
                "14468": [
                  {
                    "length": 32,
                    "start": 727
                  }
                ],
                "14470": [
                  {
                    "length": 32,
                    "start": 585
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b578063150b7a021461008e575b600080fd5b61007a6004803603602081101561005157600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610196565b604080519115158252519081900360200190f35b610161600480360360808110156100a457600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013590911691604082013591908101906080810160608201356401000000008111156100ec57600080fd5b8201836020820111156100fe57600080fd5b8035906020019184600183028401116401000000008311171561012057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061022f945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061022957507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b92915050565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f45524337323152656365697665723a2077726f6e6720746f6b656e0000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000015610407577f28fa6e16458f9c24aa59ddd4085264573006dbe30304837873c7deafc702b038858585855a604051808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156103a257818101518382015260200161038a565b50505050905090810190601f1680156103cf5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1507f150b7a020000000000000000000000000000000000000000000000000000000061042a565b507fffffffff000000000000000000000000000000000000000000000000000000005b94935050505056fea26469706673582212208c2252b98b630f22e5ffd10234d5d9eae1f9f8d519e869b054ba12e7a88a8e3264736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x8E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x196 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x161 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x22F SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x229 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x2D5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524337323152656365697665723A2077726F6E6720746F6B656E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x407 JUMPI PUSH32 0x28FA6E16458F9C24AA59DDD4085264573006DBE30304837873C7DEAFC702B038 DUP6 DUP6 DUP6 DUP6 GAS PUSH1 0x40 MLOAD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3A2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x38A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3CF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH2 0x42A JUMP JUMPDEST POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0x22 MSTORE 0xB9 DUP12 PUSH4 0xF22E5FF 0xD1 MUL CALLVALUE 0xD5 0xD9 0xEA 0xE1 0xF9 0xF8 0xD5 NOT 0xE8 PUSH10 0xB054BA12E7A88A8E3264 PUSH20 0x6F6C634300070600330000000000000000000000 ",
              "sourceMap": "232:1086:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;770:207:64;;;;;;;;;;;;;;;;-1:-1:-1;770:207:64;;;;:::i;:::-;;;;;;;;;;;;;;;;;;860:456:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;860:456:76;;-1:-1:-1;860:456:76;;-1:-1:-1;;;;;860:456:76:i;:::-;;;;;;;;;;;;;;;;;;;770:207:64;855:4;878:40;;;893:25;878:40;;:92;;-1:-1:-1;922:48:64;;;937:33;922:48;878:92;871:99;770:207;-1:-1:-1;;770:207:64:o;860:456:76:-;1025:6;1051:10;:30;1065:16;1051:30;;1043:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1127:10;1123:187;;;1158:50;1167:8;1177:4;1183:7;1192:4;1198:9;1158:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;513:33:64;1222:23:76;;1123:187;-1:-1:-1;1283:16:76;1123:187;860:456;;;;;;:::o"
            },
            "methodIdentifiers": {
              "onERC721Received(address,address,uint256,bytes)": "150b7a02",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "contracts/token/ERC721/mocks/ERC721SimpleMock.sol": {
        "ERC721SimpleMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IForwarderRegistry",
                  "name": "forwarderRegistry",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "universalForwarder",
                  "type": "address"
                }
              ],
              "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": "account",
                  "type": "address"
                }
              ],
              "name": "MinterAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterRemoved",
              "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": "account",
                  "type": "address"
                }
              ],
              "name": "addMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "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": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "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": "",
                  "type": "address"
                }
              ],
              "name": "isMinter",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "forwarder",
                  "type": "address"
                }
              ],
              "name": "isTrustedForwarder",
              "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": "msgData",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "ret",
                  "type": "bytes"
                }
              ],
              "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": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC20s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "contracts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC721s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceMinter",
              "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": [
                {
                  "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60c060405234801561001057600080fd5b5060405161200c38038061200c8339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b03191633908117825560405190918491849184918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606091821b811660a05291901b166080526100a7816100af565b5050506100fb565b6001600160a01b038116600081815260056020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b60805160601c60a05160601c611eca61014260003980610b6852806119bf5280611d1a525080610ba352806119845280611a175280611cf05280611d7b5250611eca6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806373c8a958116100d8578063aa271e1a1161008c578063c4c2bfdc11610066578063c4c2bfdc146106de578063e985e9c51461075b578063f2fde38b1461078957610177565b8063aa271e1a146104de578063b88d4fde14610504578063c3666c36146105ca57610177565b8063983b2d56116100bd578063983b2d561461048257806398650275146104a8578063a22cb465146104b057610177565b806373c8a958146103665780638da5cb5b1461047a57610177565b806342842e0e1161012f578063572b6c0511610114578063572b6c05146102eb5780636352211e1461031157806370a082311461032e57610177565b806342842e0e1461029857806342966c68146102ce57610177565b8063095ea7b311610160578063095ea7b31461020857806323b872dd1461023657806340c10f191461026c57610177565b806301ffc9a71461017c578063081812fc146101cf575b600080fd5b6101bb6004803603602081101561019257600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166107af565b604080519115158252519081900360200190f35b6101ec600480360360208110156101e557600080fd5b503561084a565b604080516001600160a01b039092168252519081900360200190f35b6102346004803603604081101561021e57600080fd5b506001600160a01b0381351690602001356108e9565b005b6102346004803603606081101561024c57600080fd5b506001600160a01b03813581169160208101359091169060400135610af0565b6102346004803603604081101561028257600080fd5b506001600160a01b038135169060200135610b12565b610234600480360360608110156102ae57600080fd5b506001600160a01b03813581169160208101359091169060400135610b30565b610234600480360360208110156102e457600080fd5b5035610b4d565b6101bb6004803603602081101561030157600080fd5b50356001600160a01b0316610b64565b6101ec6004803603602081101561032757600080fd5b5035610bdd565b6103546004803603602081101561034457600080fd5b50356001600160a01b0316610c47565b60408051918252519081900360200190f35b6102346004803603606081101561037c57600080fd5b81019060208101813564010000000081111561039757600080fd5b8201836020820111156103a957600080fd5b803590602001918460208302840111640100000000831117156103cb57600080fd5b9193909290916020810190356401000000008111156103e957600080fd5b8201836020820111156103fb57600080fd5b8035906020019184602083028401116401000000008311171561041d57600080fd5b91939092909160208101903564010000000081111561043b57600080fd5b82018360208201111561044d57600080fd5b8035906020019184602083028401116401000000008311171561046f57600080fd5b509092509050610cc0565b6101ec610db2565b6102346004803603602081101561049857600080fd5b50356001600160a01b0316610dc2565b610234610dd6565b610234600480360360408110156104c657600080fd5b506001600160a01b0381351690602001351515610e34565b6101bb600480360360208110156104f457600080fd5b50356001600160a01b0316610f15565b6102346004803603608081101561051a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561055557600080fd5b82018360208201111561056757600080fd5b8035906020019184600183028401116401000000008311171561058957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f2a945050505050565b610234600480360360608110156105e057600080fd5b8101906020810181356401000000008111156105fb57600080fd5b82018360208201111561060d57600080fd5b8035906020019184602083028401116401000000008311171561062f57600080fd5b91939092909160208101903564010000000081111561064d57600080fd5b82018360208201111561065f57600080fd5b8035906020019184602083028401116401000000008311171561068157600080fd5b91939092909160208101903564010000000081111561069f57600080fd5b8201836020820111156106b157600080fd5b803590602001918460208302840111640100000000831117156106d357600080fd5b509092509050610f3e565b6106e6611086565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610720578181015183820152602001610708565b50505050905090810190601f16801561074d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101bb6004803603604081101561077157600080fd5b506001600160a01b0381358116916020013516611095565b6102346004803603602081101561079f57600080fd5b50356001600160a01b03166110c3565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061084257507fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000145b90505b919050565b6000818152600260205260408120546001600160a01b0381166108b4576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b600160a01b8116156108df5750506000818152600460205260409020546001600160a01b0316610845565b6000915050610845565b6000818152600260205260409020548061094a576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b806001600160a01b0384811690821614156109ac576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b6109bd816109b8611134565b61113e565b610a0e576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b6001600160a01b038416610a4857600160a01b821615610a435760008381526002602052604090206001600160a01b03821690555b610aa9565b600160a01b8217808314610a685760008481526002602052604090208190555b50600083815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b610b0d83838360405180602001604052806000815250600061118c565b505050565b610b22610b1d611134565b611550565b610b2c82826115bd565b5050565b610b0d83838360405180602001604052806000815250600161118c565b610b58610b1d611134565b610b61816116d7565b50565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061084257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6000818152600260205260408120546001600160a01b038116610842576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b60006001600160a01b038216610ca4576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205490565b610cd0610ccb611134565b6117a0565b848381148015610cdf57508082145b610d30576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114610da857610da0888883818110610d4957fe5b905060200201356001600160a01b0316858584818110610d6557fe5b90506020020135888885818110610d7857fe5b905060200201356001600160a01b03166001600160a01b03166118649092919063ffffffff16565b600101610d33565b5050505050505050565b6000546001600160a01b03165b90565b610dcd610ccb611134565b610b61816118e4565b6000610de0611134565b9050610deb81611550565b6001600160a01b038116600081815260056020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b6000610e3e611134565b9050806001600160a01b0316836001600160a01b03161415610ea7576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260016020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b60056020526000908152604090205460ff1681565b610f3884848484600161118c565b50505050565b610f49610ccb611134565b848381148015610f5857508082145b610fa9576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114610da857858582818110610fbf57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a85818110610fea57fe5b905060200201356001600160a01b031687878681811061100657fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561106357600080fd5b505af1158015611077573d6000803e3d6000fd5b50505050806001019050610fac565b6060611090611930565b905090565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6110ce610ccb611134565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000611090611974565b6000816001600160a01b0316836001600160a01b0316148061118557506001600160a01b0380841660009081526001602090815260408083209386168352929052205460ff165b9392505050565b6001600160a01b0384166111e7576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b60006111f1611134565b905060006111ff878361113e565b6000868152600260205260409020549091506001600160a01b0388811690821614611271576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a206e6f6e2d6f776e6564204e46540000000000000000000000604482015290519081900360640190fd5b8161130257600160a01b8116158015906112b157506000868152600460205260409020546001600160a01b03166112a6611134565b6001600160a01b0316145b611302576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b60008681526002602052604090206001600160a01b0380891691829055891614611356576001600160a01b038089166000908152600360205260408082208054600019019055918916815220805460010190555b85876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48380156113b157506113b1876001600160a01b0316611ad4565b15610da8577f150b7a02000000000000000000000000000000000000000000000000000000006001600160a01b03881663150b7a026113ee611134565b8b8a8a6040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611461578181015183820152602001611449565b50505050905090810190601f16801561148e5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156114b057600080fd5b505af11580156114c4573d6000803e3d6000fd5b505050506040513d60208110156114da57600080fd5b50517fffffffff000000000000000000000000000000000000000000000000000000001614610da8576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220726566757365640000000000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526005602052604090205460ff16610b61576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038216611618576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b60008181526002602052604090205415611679576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206578697374696e67204e4654000000000000000000000000604482015290519081900360640190fd5b60008181526002602090815260408083206001600160a01b03861690819055808452600390925280832080546001019055518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000818152600260205260409020546001600160a01b038116611741576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b60008281526002602090815260408083208390556001600160a01b0384168084526003909252808320805460001901905551849291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117d957600080fd5b505afa1580156117ed573d6000803e3d6000fd5b505050506040513d602081101561180357600080fd5b50516001600160a01b03828116911614610b61576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610b0d908490611ada565b6001600160a01b038116600081815260056020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b606061193a611ce2565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b60003381611980611e45565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806119f357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15611a01579150610dbf9050565b6001600160a01b0382163214801590611ac057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015611a9357600080fd5b505afa158015611aa7573d6000803e3d6000fd5b505050506040513d6020811015611abd57600080fd5b50515b15611ace579150610dbf9050565b50905090565b3b151590565b81611aed6001600160a01b038216611ad4565b611b3e576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b60208310611b9957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611b5c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611bfb576040519150601f19603f3d011682016040523d82523d6000602084013e611c00565b606091505b50915091508115611c7f57805115611c7a57808060200190516020811015611c2757600080fd5b5051611c7a576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b611cdb565b8051611cd2576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b366000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016811480611d4e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b15611d6557611d5b611e51565b9250925050611e41565b6001600160a01b0381163214801590611e2b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6611db0611e45565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015611dfe57600080fd5b505afa158015611e12573d6000803e3d6000fd5b505050506040513d6020811015611e2857600080fd5b50515b15611e3857611d5b611e51565b60003692509250505b9091565b60131936013560601c90565b366000611e646013198301828481611e6c565b915091509091565b60008085851115611e7b578182fd5b83861115611e87578182fd5b505082019391909203915056fea2646970667358221220b2ef6418b94bdfe285caf22219e59b2474ff7bad614f44b0a8a56628a0a96f2964736f6c63430007060033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x200C CODESIZE SUB DUP1 PUSH2 0x200C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 DUP5 SWAP2 DUP5 SWAP2 DUP5 SWAP2 DUP3 SWAP2 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0x80 MSTORE PUSH2 0xA7 DUP2 PUSH2 0xAF JUMP JUMPDEST POP POP POP PUSH2 0xFB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x1ECA PUSH2 0x142 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xB68 MSTORE DUP1 PUSH2 0x19BF MSTORE DUP1 PUSH2 0x1D1A MSTORE POP DUP1 PUSH2 0xBA3 MSTORE DUP1 PUSH2 0x1984 MSTORE DUP1 PUSH2 0x1A17 MSTORE DUP1 PUSH2 0x1CF0 MSTORE DUP1 PUSH2 0x1D7B MSTORE POP PUSH2 0x1ECA 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 0x177 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73C8A958 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xAA271E1A GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xC4C2BFDC GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0x6DE JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x75B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x789 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0xAA271E1A EQ PUSH2 0x4DE JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x504 JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0x5CA JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x983B2D56 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x482 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0x4A8 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x4B0 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x366 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x47A JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x42842E0E GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x572B6C05 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x32E JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x42842E0E EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x2CE JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x26C JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x1CF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1BB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x7AF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x84A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8E9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xAF0 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB12 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xB30 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB4D JUMP JUMPDEST PUSH2 0x1BB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB64 JUMP JUMPDEST PUSH2 0x1EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBDD JUMP JUMPDEST PUSH2 0x354 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC47 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x37C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x41D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x43B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xCC0 JUMP JUMPDEST PUSH2 0x1EC PUSH2 0xDB2 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDC2 JUMP JUMPDEST PUSH2 0x234 PUSH2 0xDD6 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xE34 JUMP JUMPDEST PUSH2 0x1BB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF15 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x567 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xF2A SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x60D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x62F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x64D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x65F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x681 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x69F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xF3E JUMP JUMPDEST PUSH2 0x6E6 PUSH2 0x1086 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x720 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x708 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x74D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1095 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x79F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10C3 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x842 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP 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 DUP2 AND PUSH2 0x8B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO PUSH2 0x8DF JUMPI POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x94A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP1 DUP3 AND EQ ISZERO PUSH2 0x9AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x9BD DUP2 PUSH2 0x9B8 PUSH2 0x1134 JUMP JUMPDEST PUSH2 0x113E JUMP JUMPDEST PUSH2 0xA0E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xA48 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SSTORE JUMPDEST PUSH2 0xAA9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0xA68 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE JUMPDEST DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB0D DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x118C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xB22 PUSH2 0xB1D PUSH2 0x1134 JUMP JUMPDEST PUSH2 0x1550 JUMP JUMPDEST PUSH2 0xB2C DUP3 DUP3 PUSH2 0x15BD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xB0D DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x118C JUMP JUMPDEST PUSH2 0xB58 PUSH2 0xB1D PUSH2 0x1134 JUMP JUMPDEST PUSH2 0xB61 DUP2 PUSH2 0x16D7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x842 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP 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 DUP2 AND PUSH2 0x842 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xCA4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207A65726F2061646472657373000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT 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 PUSH2 0xCD0 PUSH2 0xCCB PUSH2 0x1134 JUMP JUMPDEST PUSH2 0x17A0 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0xCDF JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0xD30 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0xDA8 JUMPI PUSH2 0xDA0 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0xD49 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0xD65 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0xD78 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1864 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD33 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDCD PUSH2 0xCCB PUSH2 0x1134 JUMP JUMPDEST PUSH2 0xB61 DUP2 PUSH2 0x18E4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDE0 PUSH2 0x1134 JUMP JUMPDEST SWAP1 POP PUSH2 0xDEB DUP2 PUSH2 0x1550 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE3E PUSH2 0x1134 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xEA7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xF38 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x118C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xF49 PUSH2 0xCCB PUSH2 0x1134 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0xF58 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0xFA9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0xDA8 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0xFBF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0xFEA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x1006 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1077 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0xFAC JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1090 PUSH2 0x1930 JUMP JUMPDEST SWAP1 POP SWAP1 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x10CE PUSH2 0xCCB PUSH2 0x1134 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1090 PUSH2 0x1974 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1185 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x11E7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F207A65726F0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11F1 PUSH2 0x1134 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11FF DUP8 DUP4 PUSH2 0x113E JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x1271 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6F776E6564204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x1302 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x12B1 JUMPI POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12A6 PUSH2 0x1134 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x1302 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP2 DUP3 SWAP1 SSTORE DUP10 AND EQ PUSH2 0x1356 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP2 DUP10 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST DUP6 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP4 DUP1 ISZERO PUSH2 0x13B1 JUMPI POP PUSH2 0x13B1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AD4 JUMP JUMPDEST ISZERO PUSH2 0xDA8 JUMPI PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH4 0x150B7A02 PUSH2 0x13EE PUSH2 0x1134 JUMP JUMPDEST DUP12 DUP11 DUP11 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1461 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1449 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x148E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ PUSH2 0xDA8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220726566757365640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xB61 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1618 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F207A65726F000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x1679 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206578697374696E67204E4654000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 SWAP1 SSTORE DUP1 DUP5 MSTORE PUSH1 0x3 SWAP1 SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 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 DUP2 AND PUSH2 0x1741 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP1 DUP5 MSTORE PUSH1 0x3 SWAP1 SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE MLOAD DUP5 SWAP3 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1803 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0xB61 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xB0D SWAP1 DUP5 SWAP1 PUSH2 0x1ADA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x193A PUSH2 0x1CE2 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x1980 PUSH2 0x1E45 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x19F3 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x1A01 JUMPI SWAP2 POP PUSH2 0xDBF SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x1AC0 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1ABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x1ACE JUMPI SWAP2 POP PUSH2 0xDBF SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x1AED PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1AD4 JUMP JUMPDEST PUSH2 0x1B3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1B99 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1B5C JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1BFB 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 0x1C00 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x1C7F JUMPI DUP1 MLOAD ISZERO PUSH2 0x1C7A JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1C7A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1CDB JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1CD2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x1D4E JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x1D65 JUMPI PUSH2 0x1D5B PUSH2 0x1E51 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x1E41 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x1E2B JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x1DB0 PUSH2 0x1E45 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E12 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x1E38 JUMPI PUSH2 0x1D5B PUSH2 0x1E51 JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x1E64 PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x1E6C JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x1E7B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x1E87 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB2 0xEF PUSH5 0x18B94BDFE2 DUP6 0xCA CALLCODE 0x22 NOT 0xE5 SWAP12 0x24 PUSH21 0xFF7BAD614F44B0A8A56628A0A96F2964736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "670:2034:77:-:0;;;769:187;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;769:187:77;;;;;;;960:6:2;:15;;-1:-1:-1;;;;;;960:15:2;938:10:77;960:15:2;;;;;769:187:77;990:40:2;938:10:77;;769:187;;;;938:10;;;;960:6:2;990:40;;960:6;;990:40;-1:-1:-1;;;;;;;443:40:85;;;;;;;;493:38;;;;;;476:18:1::1;487:6:::0;476:10:::1;:18::i;:::-;422:79:::0;769:187:77;;670:2034;;1252:122:1;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;670:2034:77:-;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:379:86",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:86",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "144:233:86",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "182:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "191:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "202:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "184:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "184:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "184:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "160:10:86"
                                  },
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "172:8:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "157:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "157:24:86"
                              },
                              "nodeType": "YulIf",
                              "src": "154:2:86"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "247:32:86",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "256:9:86"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "267:9:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:6:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "249:28:86"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "249:28:86"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "229:8:86"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "239:6:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "226:2:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "226:20:86"
                              },
                              "nodeType": "YulIf",
                              "src": "223:2:86"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "288:36:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "305:6:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "313:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "301:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "301:23:86"
                              },
                              "variableNames": [
                                {
                                  "name": "offsetOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "288:9:86"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "333:38:86",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "350:8:86"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "360:10:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "346:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "346:25:86"
                              },
                              "variableNames": [
                                {
                                  "name": "lengthOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:9:86"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "78:6:86",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "86:6:86",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "94:10:86",
                            "type": ""
                          },
                          {
                            "name": "endIndex",
                            "nodeType": "YulTypedName",
                            "src": "106:8:86",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "offsetOut",
                            "nodeType": "YulTypedName",
                            "src": "119:9:86",
                            "type": ""
                          },
                          {
                            "name": "lengthOut",
                            "nodeType": "YulTypedName",
                            "src": "130:9:86",
                            "type": ""
                          }
                        ],
                        "src": "14:363:86"
                      }
                    ]
                  },
                  "contents": "{\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(offsetOut, offsetOut) }\n        if gt(endIndex, length) { revert(offsetOut, offsetOut) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n}",
                  "id": 86,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "15042": [
                  {
                    "length": 32,
                    "start": 2979
                  },
                  {
                    "length": 32,
                    "start": 6532
                  },
                  {
                    "length": 32,
                    "start": 6679
                  },
                  {
                    "length": 32,
                    "start": 7408
                  },
                  {
                    "length": 32,
                    "start": 7547
                  }
                ],
                "15044": [
                  {
                    "length": 32,
                    "start": 2920
                  },
                  {
                    "length": 32,
                    "start": 6591
                  },
                  {
                    "length": 32,
                    "start": 7450
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101775760003560e01c806373c8a958116100d8578063aa271e1a1161008c578063c4c2bfdc11610066578063c4c2bfdc146106de578063e985e9c51461075b578063f2fde38b1461078957610177565b8063aa271e1a146104de578063b88d4fde14610504578063c3666c36146105ca57610177565b8063983b2d56116100bd578063983b2d561461048257806398650275146104a8578063a22cb465146104b057610177565b806373c8a958146103665780638da5cb5b1461047a57610177565b806342842e0e1161012f578063572b6c0511610114578063572b6c05146102eb5780636352211e1461031157806370a082311461032e57610177565b806342842e0e1461029857806342966c68146102ce57610177565b8063095ea7b311610160578063095ea7b31461020857806323b872dd1461023657806340c10f191461026c57610177565b806301ffc9a71461017c578063081812fc146101cf575b600080fd5b6101bb6004803603602081101561019257600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166107af565b604080519115158252519081900360200190f35b6101ec600480360360208110156101e557600080fd5b503561084a565b604080516001600160a01b039092168252519081900360200190f35b6102346004803603604081101561021e57600080fd5b506001600160a01b0381351690602001356108e9565b005b6102346004803603606081101561024c57600080fd5b506001600160a01b03813581169160208101359091169060400135610af0565b6102346004803603604081101561028257600080fd5b506001600160a01b038135169060200135610b12565b610234600480360360608110156102ae57600080fd5b506001600160a01b03813581169160208101359091169060400135610b30565b610234600480360360208110156102e457600080fd5b5035610b4d565b6101bb6004803603602081101561030157600080fd5b50356001600160a01b0316610b64565b6101ec6004803603602081101561032757600080fd5b5035610bdd565b6103546004803603602081101561034457600080fd5b50356001600160a01b0316610c47565b60408051918252519081900360200190f35b6102346004803603606081101561037c57600080fd5b81019060208101813564010000000081111561039757600080fd5b8201836020820111156103a957600080fd5b803590602001918460208302840111640100000000831117156103cb57600080fd5b9193909290916020810190356401000000008111156103e957600080fd5b8201836020820111156103fb57600080fd5b8035906020019184602083028401116401000000008311171561041d57600080fd5b91939092909160208101903564010000000081111561043b57600080fd5b82018360208201111561044d57600080fd5b8035906020019184602083028401116401000000008311171561046f57600080fd5b509092509050610cc0565b6101ec610db2565b6102346004803603602081101561049857600080fd5b50356001600160a01b0316610dc2565b610234610dd6565b610234600480360360408110156104c657600080fd5b506001600160a01b0381351690602001351515610e34565b6101bb600480360360208110156104f457600080fd5b50356001600160a01b0316610f15565b6102346004803603608081101561051a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561055557600080fd5b82018360208201111561056757600080fd5b8035906020019184600183028401116401000000008311171561058957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f2a945050505050565b610234600480360360608110156105e057600080fd5b8101906020810181356401000000008111156105fb57600080fd5b82018360208201111561060d57600080fd5b8035906020019184602083028401116401000000008311171561062f57600080fd5b91939092909160208101903564010000000081111561064d57600080fd5b82018360208201111561065f57600080fd5b8035906020019184602083028401116401000000008311171561068157600080fd5b91939092909160208101903564010000000081111561069f57600080fd5b8201836020820111156106b157600080fd5b803590602001918460208302840111640100000000831117156106d357600080fd5b509092509050610f3e565b6106e6611086565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610720578181015183820152602001610708565b50505050905090810190601f16801561074d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101bb6004803603604081101561077157600080fd5b506001600160a01b0381358116916020013516611095565b6102346004803603602081101561079f57600080fd5b50356001600160a01b03166110c3565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061084257507fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000145b90505b919050565b6000818152600260205260408120546001600160a01b0381166108b4576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b600160a01b8116156108df5750506000818152600460205260409020546001600160a01b0316610845565b6000915050610845565b6000818152600260205260409020548061094a576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b806001600160a01b0384811690821614156109ac576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b6109bd816109b8611134565b61113e565b610a0e576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b6001600160a01b038416610a4857600160a01b821615610a435760008381526002602052604090206001600160a01b03821690555b610aa9565b600160a01b8217808314610a685760008481526002602052604090208190555b50600083815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b610b0d83838360405180602001604052806000815250600061118c565b505050565b610b22610b1d611134565b611550565b610b2c82826115bd565b5050565b610b0d83838360405180602001604052806000815250600161118c565b610b58610b1d611134565b610b61816116d7565b50565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061084257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6000818152600260205260408120546001600160a01b038116610842576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b60006001600160a01b038216610ca4576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205490565b610cd0610ccb611134565b6117a0565b848381148015610cdf57508082145b610d30576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114610da857610da0888883818110610d4957fe5b905060200201356001600160a01b0316858584818110610d6557fe5b90506020020135888885818110610d7857fe5b905060200201356001600160a01b03166001600160a01b03166118649092919063ffffffff16565b600101610d33565b5050505050505050565b6000546001600160a01b03165b90565b610dcd610ccb611134565b610b61816118e4565b6000610de0611134565b9050610deb81611550565b6001600160a01b038116600081815260056020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b6000610e3e611134565b9050806001600160a01b0316836001600160a01b03161415610ea7576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260016020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b60056020526000908152604090205460ff1681565b610f3884848484600161118c565b50505050565b610f49610ccb611134565b848381148015610f5857508082145b610fa9576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114610da857858582818110610fbf57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a85818110610fea57fe5b905060200201356001600160a01b031687878681811061100657fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561106357600080fd5b505af1158015611077573d6000803e3d6000fd5b50505050806001019050610fac565b6060611090611930565b905090565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6110ce610ccb611134565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000611090611974565b6000816001600160a01b0316836001600160a01b0316148061118557506001600160a01b0380841660009081526001602090815260408083209386168352929052205460ff165b9392505050565b6001600160a01b0384166111e7576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b60006111f1611134565b905060006111ff878361113e565b6000868152600260205260409020549091506001600160a01b0388811690821614611271576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a206e6f6e2d6f776e6564204e46540000000000000000000000604482015290519081900360640190fd5b8161130257600160a01b8116158015906112b157506000868152600460205260409020546001600160a01b03166112a6611134565b6001600160a01b0316145b611302576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b60008681526002602052604090206001600160a01b0380891691829055891614611356576001600160a01b038089166000908152600360205260408082208054600019019055918916815220805460010190555b85876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48380156113b157506113b1876001600160a01b0316611ad4565b15610da8577f150b7a02000000000000000000000000000000000000000000000000000000006001600160a01b03881663150b7a026113ee611134565b8b8a8a6040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611461578181015183820152602001611449565b50505050905090810190601f16801561148e5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156114b057600080fd5b505af11580156114c4573d6000803e3d6000fd5b505050506040513d60208110156114da57600080fd5b50517fffffffff000000000000000000000000000000000000000000000000000000001614610da8576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220726566757365640000000000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526005602052604090205460ff16610b61576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038216611618576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b60008181526002602052604090205415611679576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206578697374696e67204e4654000000000000000000000000604482015290519081900360640190fd5b60008181526002602090815260408083206001600160a01b03861690819055808452600390925280832080546001019055518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000818152600260205260409020546001600160a01b038116611741576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b60008281526002602090815260408083208390556001600160a01b0384168084526003909252808320805460001901905551849291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117d957600080fd5b505afa1580156117ed573d6000803e3d6000fd5b505050506040513d602081101561180357600080fd5b50516001600160a01b03828116911614610b61576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610b0d908490611ada565b6001600160a01b038116600081815260056020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b606061193a611ce2565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b60003381611980611e45565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806119f357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15611a01579150610dbf9050565b6001600160a01b0382163214801590611ac057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015611a9357600080fd5b505afa158015611aa7573d6000803e3d6000fd5b505050506040513d6020811015611abd57600080fd5b50515b15611ace579150610dbf9050565b50905090565b3b151590565b81611aed6001600160a01b038216611ad4565b611b3e576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b60208310611b9957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611b5c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611bfb576040519150601f19603f3d011682016040523d82523d6000602084013e611c00565b606091505b50915091508115611c7f57805115611c7a57808060200190516020811015611c2757600080fd5b5051611c7a576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b611cdb565b8051611cd2576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b366000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016811480611d4e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b15611d6557611d5b611e51565b9250925050611e41565b6001600160a01b0381163214801590611e2b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6611db0611e45565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015611dfe57600080fd5b505afa158015611e12573d6000803e3d6000fd5b505050506040513d6020811015611e2857600080fd5b50515b15611e3857611d5b611e51565b60003692509250505b9091565b60131936013560601c90565b366000611e646013198301828481611e6c565b915091509091565b60008085851115611e7b578182fd5b83861115611e87578182fd5b505082019391909203915056fea2646970667358221220b2ef6418b94bdfe285caf22219e59b2474ff7bad614f44b0a8a56628a0a96f2964736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x177 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73C8A958 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xAA271E1A GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xC4C2BFDC GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0x6DE JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x75B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x789 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0xAA271E1A EQ PUSH2 0x4DE JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x504 JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0x5CA JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x983B2D56 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x482 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0x4A8 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x4B0 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x366 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x47A JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x42842E0E GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x572B6C05 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x32E JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x42842E0E EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x2CE JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x26C JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x1CF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1BB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x7AF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x84A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8E9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xAF0 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB12 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xB30 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB4D JUMP JUMPDEST PUSH2 0x1BB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB64 JUMP JUMPDEST PUSH2 0x1EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBDD JUMP JUMPDEST PUSH2 0x354 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC47 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x37C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x41D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x43B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xCC0 JUMP JUMPDEST PUSH2 0x1EC PUSH2 0xDB2 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDC2 JUMP JUMPDEST PUSH2 0x234 PUSH2 0xDD6 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xE34 JUMP JUMPDEST PUSH2 0x1BB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF15 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x567 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xF2A SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x60D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x62F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x64D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x65F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x681 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x69F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xF3E JUMP JUMPDEST PUSH2 0x6E6 PUSH2 0x1086 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x720 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x708 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x74D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1095 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x79F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10C3 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x842 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP 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 DUP2 AND PUSH2 0x8B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO PUSH2 0x8DF JUMPI POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x94A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP1 DUP3 AND EQ ISZERO PUSH2 0x9AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x9BD DUP2 PUSH2 0x9B8 PUSH2 0x1134 JUMP JUMPDEST PUSH2 0x113E JUMP JUMPDEST PUSH2 0xA0E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xA48 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SSTORE JUMPDEST PUSH2 0xAA9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0xA68 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE JUMPDEST DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB0D DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x118C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xB22 PUSH2 0xB1D PUSH2 0x1134 JUMP JUMPDEST PUSH2 0x1550 JUMP JUMPDEST PUSH2 0xB2C DUP3 DUP3 PUSH2 0x15BD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xB0D DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x118C JUMP JUMPDEST PUSH2 0xB58 PUSH2 0xB1D PUSH2 0x1134 JUMP JUMPDEST PUSH2 0xB61 DUP2 PUSH2 0x16D7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x842 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP 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 DUP2 AND PUSH2 0x842 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xCA4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207A65726F2061646472657373000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT 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 PUSH2 0xCD0 PUSH2 0xCCB PUSH2 0x1134 JUMP JUMPDEST PUSH2 0x17A0 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0xCDF JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0xD30 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0xDA8 JUMPI PUSH2 0xDA0 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0xD49 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0xD65 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0xD78 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1864 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD33 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDCD PUSH2 0xCCB PUSH2 0x1134 JUMP JUMPDEST PUSH2 0xB61 DUP2 PUSH2 0x18E4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDE0 PUSH2 0x1134 JUMP JUMPDEST SWAP1 POP PUSH2 0xDEB DUP2 PUSH2 0x1550 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE3E PUSH2 0x1134 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xEA7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2073656C662D617070726F76616C0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xF38 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x118C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xF49 PUSH2 0xCCB PUSH2 0x1134 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0xF58 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0xFA9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0xDA8 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0xFBF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0xFEA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x1006 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1077 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0xFAC JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1090 PUSH2 0x1930 JUMP JUMPDEST SWAP1 POP SWAP1 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 PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x10CE PUSH2 0xCCB PUSH2 0x1134 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1090 PUSH2 0x1974 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1185 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x11E7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F207A65726F0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11F1 PUSH2 0x1134 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11FF DUP8 DUP4 PUSH2 0x113E JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x1271 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6F776E6564204E46540000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x1302 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x12B1 JUMPI POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12A6 PUSH2 0x1134 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x1302 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D617070726F7665642073656E6465720000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP2 DUP3 SWAP1 SSTORE DUP10 AND EQ PUSH2 0x1356 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP2 DUP10 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST DUP6 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP4 DUP1 ISZERO PUSH2 0x13B1 JUMPI POP PUSH2 0x13B1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AD4 JUMP JUMPDEST ISZERO PUSH2 0xDA8 JUMPI PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH4 0x150B7A02 PUSH2 0x13EE PUSH2 0x1134 JUMP JUMPDEST DUP12 DUP11 DUP11 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1461 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1449 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x148E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ PUSH2 0xDA8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220726566757365640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xB61 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1618 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F207A65726F000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x1679 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206578697374696E67204E4654000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 SWAP1 SSTORE DUP1 DUP5 MSTORE PUSH1 0x3 SWAP1 SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 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 DUP2 AND PUSH2 0x1741 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206E6F6E2D6578697374696E67204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP1 DUP5 MSTORE PUSH1 0x3 SWAP1 SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE MLOAD DUP5 SWAP3 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1803 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0xB61 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xB0D SWAP1 DUP5 SWAP1 PUSH2 0x1ADA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x193A PUSH2 0x1CE2 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x1980 PUSH2 0x1E45 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x19F3 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x1A01 JUMPI SWAP2 POP PUSH2 0xDBF SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x1AC0 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1ABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x1ACE JUMPI SWAP2 POP PUSH2 0xDBF SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x1AED PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1AD4 JUMP JUMPDEST PUSH2 0x1B3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1B99 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1B5C JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1BFB 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 0x1C00 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x1C7F JUMPI DUP1 MLOAD ISZERO PUSH2 0x1C7A JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1C7A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1CDB JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1CD2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x1D4E JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x1D65 JUMPI PUSH2 0x1D5B PUSH2 0x1E51 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x1E41 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x1E2B JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x1DB0 PUSH2 0x1E45 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E12 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x1E38 JUMPI PUSH2 0x1D5B PUSH2 0x1E51 JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x1E64 PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x1E6C JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x1E7B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x1E87 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB2 0xEF PUSH5 0x18B94BDFE2 DUP6 0xCA CALLCODE 0x22 NOT 0xE5 SWAP12 0x24 PUSH21 0xFF7BAD614F44B0A8A56628A0A96F2964736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "670:2034:77:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1425:199:65;;;;;;;;;;;;;;;;-1:-1:-1;1425:199:65;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3297:374;;;;;;;;;;;;;;;;-1:-1:-1;3297:374:65;;:::i;:::-;;;;-1:-1:-1;;;;;3297:374:65;;;;;;;;;;;;;;2277:986;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2277:986:65;;;;;;;;:::i;:::-;;4225:272;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4225:272:65;;;;;;;;;;;;;;;;;:::i;1469:125:77:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1469:125:77;;;;;;;;:::i;4531:275:65:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4531:275:65;;;;;;;;;;;;;;;;;:::i;1860:109:77:-;;;;;;;;;;;;;;;;-1:-1:-1;1860:109:77;;:::i;544:193:85:-;;;;;;;;;;;;;;;;-1:-1:-1;544:193:85;-1:-1:-1;;;;;544:193:85;;:::i;2007:236:65:-;;;;;;;;;;;;;;;;-1:-1:-1;2007:236:65;;:::i;1787:186::-;;;;;;;;;;;;;;;;-1:-1:-1;1787:186:65;-1:-1:-1;;;;;1787:186:65;;:::i;:::-;;;;;;;;;;;;;;;;1137:481:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1137:481:8;;-1:-1:-1;1137:481:8;-1:-1:-1;1137:481:8;:::i;1114:94:2:-;;;:::i;694:120:1:-;;;;;;;;;;;;;;;;-1:-1:-1;694:120:1;-1:-1:-1;;;;;694:120:1;;:::i;929:185::-;;;:::i;3705:298:65:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3705:298:65;;;;;;;;;;:::i;339:40:1:-;;;;;;;;;;;;;;;;-1:-1:-1;339:40:1;-1:-1:-1;;;;;339:40:1;;:::i;4840:304:65:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4840:304:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4840:304:65;;-1:-1:-1;4840:304:65;;-1:-1:-1;;;;;4840:304:65:i;2430:511:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2430:511:8;;-1:-1:-1;2430:511:8;-1:-1:-1;2430:511:8;:::i;2608:94:77:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4037:154:65;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4037:154:65;;;;;;;;;;:::i;1448:197:2:-;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;1425:199:65:-;1510:4;1533:40;;;1548:25;1533:40;;:84;;-1:-1:-1;1577:40:65;;;1592:25;1577:40;1533:84;1526:91;;1425:199;;;;:::o;3297:374::-;3373:7;3408:16;;;:7;:16;;;;;;-1:-1:-1;;;;;3442:37:65;;3434:74;;;;;-1:-1:-1;;;3434:74:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3522:34:65;;:39;3518:147;;-1:-1:-1;;3584:22:65;;;;:13;:22;;;;;;-1:-1:-1;;;;;3584:22:65;3577:29;;3518:147;3652:1;3637:17;;;;;2277:986;2357:13;2373:16;;;:7;:16;;;;;;2407:10;2399:47;;;;;-1:-1:-1;;;2399:47:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;2495:5;-1:-1:-1;;;;;2520:18:65;;;;;;;;2512:52;;;;;-1:-1:-1;;;2512:52:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;2582:41;2596:12;2610;:10;:12::i;:::-;2582:13;:41::i;:::-;2574:81;;;;;-1:-1:-1;;;2574:81:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2669:16:65;;2665:542;;-1:-1:-1;;;2705:34:65;;:39;2701:178;;2824:16;;;;:7;:16;;;;;-1:-1:-1;;;;;2843:21:65;;2824:40;;2701:178;2665:542;;;-1:-1:-1;;;2940:34:65;;2992:29;;;2988:168;;3102:16;;;;:7;:16;;;;;:39;;;2988:168;-1:-1:-1;3169:22:65;;;;:13;:22;;;;;:27;;;;-1:-1:-1;;;;;3169:27:65;;;;;2665:542;3248:7;3244:2;-1:-1:-1;;;;;3221:35:65;3230:12;-1:-1:-1;;;;;3221:35:65;;;;;;;;;;;2277:986;;;;:::o;4225:272::-;4354:136;4381:4;4399:2;4415:7;4354:136;;;;;;;;;;;;4475:5;4354:13;:136::i;:::-;4225:272;;;:::o;1469:125:77:-;1531:28;1546:12;:10;:12::i;:::-;1531:14;:28::i;:::-;1569:18;1575:2;1579:7;1569:5;:18::i;:::-;1469:125;;:::o;4531:275:65:-;4664:135;4691:4;4709:2;4725:7;4664:135;;;;;;;;;;;;4785:4;4664:13;:135::i;1860:109:77:-;1910:28;1925:12;:10;:12::i;1910:28::-;1948:14;1954:7;1948:5;:14::i;:::-;1860:109;:::o;544:193:85:-;631:4;667:19;-1:-1:-1;;;;;654:32:85;:9;-1:-1:-1;;;;;654:32:85;;:76;;;;711:18;-1:-1:-1;;;;;690:40:85;:9;-1:-1:-1;;;;;690:40:85;;647:83;;544:193;;;:::o;2007:236:65:-;2079:7;2130:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2166:19:65;;2158:56;;;;;-1:-1:-1;;;2158:56:65;;;;;;;;;;;;;;;;;;;;;;;;;;;1787:186;1859:7;-1:-1:-1;;;;;1886:19:65;;1878:52;;;;;-1:-1:-1;;;1878:52:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1947:19:65;;;;;:12;:19;;;;;;;1787:186::o;1137:481:8:-;1301:31;1319:12;:10;:12::i;:::-;1301:17;:31::i;:::-;1359:8;1392:23;;;:51;;;;-1:-1:-1;1419:24:8;;;1392:51;1384:90;;;;;-1:-1:-1;;;1384:90:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;1489:9;1484:128;1509:6;1504:1;:11;1484:128;;1536:65;1577:8;;1586:1;1577:11;;;;;;;;;;;;;-1:-1:-1;;;;;1577:11:8;1590:7;;1598:1;1590:10;;;;;;;;;;;;;1550:6;;1557:1;1550:9;;;;;;;;;;;;;-1:-1:-1;;;;;1550:9:8;-1:-1:-1;;;;;1536:40:8;;;:65;;;;;:::i;:::-;1517:3;;1484:128;;;;1137:481;;;;;;;:::o;1114:94:2:-;1169:7;1195:6;-1:-1:-1;;;;;1195:6:2;1114:94;;:::o;694:120:1:-;747:31;765:12;:10;:12::i;747:31::-;788:19;799:7;788:10;:19::i;929:185::-;972:15;990:12;:10;:12::i;:::-;972:30;;1012:23;1027:7;1012:14;:23::i;:::-;-1:-1:-1;;;;;1045:17:1;;1065:5;1045:17;;;:8;:17;;;;;;:25;;-1:-1:-1;;1045:25:1;;;1085:22;;;1065:5;1085:22;929:185;:::o;3705:298:65:-;3799:14;3816:12;:10;:12::i;:::-;3799:29;;3858:6;-1:-1:-1;;;;;3846:18:65;:8;-1:-1:-1;;;;;3846:18:65;;;3838:52;;;;;-1:-1:-1;;;3838:52:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3900:18:65;;;;;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;;:39;;-1:-1:-1;;3900:39:65;;;;;;;;;;3954:42;;;;;;;;;;;;;;;;;3705:298;;;:::o;339:40:1:-;;;;;;;;;;;;;;;:::o;4840:304:65:-;5000:137;5027:4;5045:2;5061:7;5082:4;5123;5000:13;:137::i;:::-;4840:304;;;;:::o;2430:511:8:-;2599:31;2617:12;:10;:12::i;2599:31::-;2657:8;2690:26;;;:55;;;;-1:-1:-1;2720:25:8;;;2690:55;2682:94;;;;;-1:-1:-1;;;2682:94:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:9;2786:149;2811:6;2806:1;:11;2786:149;;2857:9;;2867:1;2857:12;;;;;;;;;;;;;-1:-1:-1;;;;;2857:12:8;-1:-1:-1;;;;;2838:45:8;;2892:4;2899:8;;2908:1;2899:11;;;;;;;;;;;;;-1:-1:-1;;;;;2899:11:8;2912:8;;2921:1;2912:11;;;;;;;;;;;;;2838:86;;;;;;;;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:3;;;;;2786:149;;2608:94:77;2650:16;2685:10;:8;:10::i;:::-;2678:17;;2608:94;:::o;4037:154:65:-;-1:-1:-1;;;;;4157:17:65;;;4134:4;4157:17;;;:10;:17;;;;;;;;:27;;;;;;;;;;;;;;;4037:154::o;1448:197:2:-;1527:31;1545:12;:10;:12::i;1527:31::-;1568:6;:17;;;;-1:-1:-1;;;;;1568:17:2;;;;;;;;;1600:38;;1568:17;;1621:6;;;1600:38;;1568:6;1600:38;1448:197;:::o;2104:183:77:-;2209:15;2243:37;:35;:37::i;7608:150:65:-;7684:4;7716:6;-1:-1:-1;;;;;7708:14:65;:4;-1:-1:-1;;;;;7708:14:65;;7707:44;;;-1:-1:-1;;;;;;7727:16:65;;;;;;;:10;:16;;;;;;;;:24;;;;;;;;;;;;7707:44;7700:51;7608:150;-1:-1:-1;;;7608:150:65:o;5279:1133::-;-1:-1:-1;;;;;5456:16:65;;5448:53;;;;;-1:-1:-1;;;5448:53:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;5511:14;5528:12;:10;:12::i;:::-;5511:29;;5550:15;5568:27;5582:4;5588:6;5568:13;:27::i;:::-;5606:13;5622:16;;;:7;:16;;;;;;5550:45;;-1:-1:-1;;;;;;5656:31:65;;;;;;;5648:65;;;;;-1:-1:-1;;;5648:65:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;5728:10;5723:165;;-1:-1:-1;;;5763:34:65;;:39;;;;5762:83;;-1:-1:-1;5823:22:65;;;;:13;:22;;;;;;-1:-1:-1;;;;;5823:22:65;5807:12;:10;:12::i;:::-;-1:-1:-1;;;;;5807:38:65;;5762:83;5754:123;;;;;-1:-1:-1;;;5754:123:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;5897:16;;;;:7;:16;;;;;-1:-1:-1;;;;;5916:20:65;;;5897:39;;;;5951:10;;;5947:224;;-1:-1:-1;;;;;6052:18:65;;;;;;;:12;:18;;;;;;6050:20;;-1:-1:-1;;6050:20:65;;;6144:16;;;;;;6142:18;;6050:20;6142:18;;;5947:224;6205:7;6201:2;-1:-1:-1;;;;;6186:27:65;6195:4;-1:-1:-1;;;;;6186:27:65;;;;;;;;;;;6228:4;:23;;;;;6236:15;:2;-1:-1:-1;;;;;6236:13:65;;:15::i;:::-;6224:182;;;797:33;-1:-1:-1;;;;;6275:36:65;;;6312:12;:10;:12::i;:::-;6326:4;6332:7;6341:4;6275:71;;;;;;;;;;;;;-1:-1:-1;;;;;6275:71:65;;;;;;-1:-1:-1;;;;;6275:71:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6275:71:65;:91;;;6267:128;;;;;-1:-1:-1;;;6267:128:65;;;;;;;;;;;;;;;;;;;;;;;;;;;1120:126:1;-1:-1:-1;;;;;1193:17:1;;;;;;:8;:17;;;;;;;;1185:54;;;;;-1:-1:-1;;;1185:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;6418:391:65;-1:-1:-1;;;;;6497:16:65;;6489:49;;;;;-1:-1:-1;;;6489:49:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;6556:16;;;;:7;:16;;;;;;:21;6548:54;;;;;-1:-1:-1;;;6548:54:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;6613:16;;;;:7;:16;;;;;;;;-1:-1:-1;;;;;6632:20:65;;6613:39;;;;6737:16;;;:12;:16;;;;;;6735:18;;;;;;6769:33;6621:7;;6613:16;6769:33;;6613:16;;6769:33;6418:391;;:::o;6815:371::-;6874:13;6906:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6943:19:65;;6935:56;;;;;-1:-1:-1;;;6935:56:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;7021:1;7002:16;;;:7;:16;;;;;;;;:20;;;-1:-1:-1;;;;;7108:19:65;;;;;:12;:19;;;;;;7106:21;;-1:-1:-1;;7106:21:65;;;7143:36;7010:7;;7021:1;7108:19;7143:36;;7021:1;;7143:36;6815:371;;:::o;1770:136:2:-;1860:4;-1:-1:-1;;;;;1860:10:2;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1860:12:2;-1:-1:-1;;;;;1849:23:2;;;;;;1841:58;;;;;-1:-1:-1;;;1841:58:2;;;;;;;;;;;;;;;;;;;;;;;;;;;416:223:6;573:58;;;-1:-1:-1;;;;;573:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;596:23;573:58;;;538:94;;566:5;;538:27;:94::i;1252:122:1:-;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;2293:180:77:-;2396:16;2431:35;:33;:35::i;:::-;2424:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2424:42:77;;-1:-1:-1;;;;2293:180:77;:::o;743:904:85:-;796:15;851:10;796:15;896:27;:25;:27::i;:::-;871:52;;958:18;-1:-1:-1;;;;;937:40:85;:9;-1:-1:-1;;;;;937:40:85;;:76;;;;994:19;-1:-1:-1;;;;;981:32:85;:9;-1:-1:-1;;;;;981:32:85;;937:76;933:166;;;1082:6;-1:-1:-1;1075:13:85;;-1:-1:-1;1075:13:85;933:166;-1:-1:-1;;;;;1496:22:85;;1509:9;1496:22;;;;:78;;;1522:18;-1:-1:-1;;;;;1522:33:85;;1556:6;1564:9;1522:52;;;;;;;;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;-1:-1:-1;;;;;1522:52:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1522:52:85;1496:78;1492:122;;;1597:6;-1:-1:-1;1590:13:85;;-1:-1:-1;1590:13:85;1492:122;-1:-1:-1;1631:9:85;-1:-1:-1;743:904:85;:::o;913:377:9:-;1229:20;1275:8;;;913:377::o;1147:870:6:-;1272:5;1296:19;-1:-1:-1;;;;;1296:17:6;;;:19::i;:::-;1288:58;;;;;-1:-1:-1;;;1288:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:12;1431:17;1452:6;-1:-1:-1;;;;;1452:11:6;1464:8;1452:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:57;;;;1487:7;1483:528;;;1514:11;;:16;1510:122;;1569:4;1558:24;;;;;;;;;;;;;;;-1:-1:-1;1558:24:6;1550:67;;;;;-1:-1:-1;;;1550:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:528;;;1720:11;;1716:95;;1756:40;;;-1:-1:-1;;;1756:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:95;1938:4;1932:11;1982:4;1975;1971:2;1967:13;1960:27;1902:99;1147:870;;;;;:::o;1653:670:85:-;1704:14;;1758:10;-1:-1:-1;;;;;1803:18:85;1782:40;;;;:76;;;1839:19;-1:-1:-1;;;;;1826:32:85;:9;-1:-1:-1;;;;;1826:32:85;;1782:76;1778:197;;;1927:37;:35;:37::i;:::-;1920:44;;;;;;;1778:197;-1:-1:-1;;;;;2122:22:85;;2135:9;2122:22;;;;:99;;;2148:18;-1:-1:-1;;;;;2148:33:85;;2182:27;:25;:27::i;:::-;2211:9;2148:73;;;;;;;;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;-1:-1:-1;;;;;2148:73:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2148:73:85;2122:99;2118:174;;;2244:37;:35;:37::i;2118:174::-;2308:8;;2301:15;;;;;1653:670;;;:::o;103:519:84:-;-1:-1:-1;;585:14:84;581:23;568:37;564:2;560:46;;536:80::o;628:149::-;706:14;;739:31;-1:-1:-1;;749:20:84;;706:14;;;739:31;:::i;:::-;732:38;;;;628:149;;:::o;14:363:86:-;;;172:8;160:10;157:24;154:2;;;202:9;191;184:28;154:2;239:6;229:8;226:20;223:2;;;267:9;256;249:28;223:2;-1:-1:-1;;301:23:86;;;346:25;;;;;-1:-1:-1;144:233:86:o"
            },
            "methodIdentifiers": {
              "addMinter(address)": "983b2d56",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "burn(uint256)": "42966c68",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isMinter(address)": "aa271e1a",
              "isTrustedForwarder(address)": "572b6c05",
              "mint(address,uint256)": "40c10f19",
              "msgData()": "c4c2bfdc",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "recoverERC20s(address[],address[],uint256[])": "73c8a958",
              "recoverERC721s(address[],address[],uint256[])": "c3666c36",
              "renounceMinter()": "98650275",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "contracts/token/common/polygon/interfaces/IPolygonChildToken.sol": {
        "IPolygonChildToken": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "depositData",
                  "type": "bytes"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "deposit(address,bytes)": "cf2c52cb"
            }
          }
        }
      },
      "contracts/token/common/polygon/interfaces/IPolygonTokenPredicate.sol": {
        "IPolygonTokenPredicate": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "rootToken",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "logRLPList",
                  "type": "bytes"
                }
              ],
              "name": "exitTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "depositor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "depositReceiver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "rootToken",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "depositData",
                  "type": "bytes"
                }
              ],
              "name": "lockTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "exitTokens(address,address,bytes)": "8274664f",
              "lockTokens(address,address,address,bytes)": "e375b64e"
            }
          }
        }
      },
      "contracts/token/utils/ERC1155VouchersRedeemer.sol": {
        "ERC1155VouchersRedeemer": {
          "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": "deliverable",
              "outputs": [
                {
                  "internalType": "contract IWrappedERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155BatchReceived",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC20s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "contracts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC721s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenHolder_",
                  "type": "address"
                }
              ],
              "name": "setTokenHolder",
              "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": "tokenHolder",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "vouchers",
              "outputs": [
                {
                  "internalType": "contract IERC1155InventoryBurnable",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "deliverable()": "ca297507",
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "owner()": "8da5cb5b",
              "recoverERC20s(address[],address[],uint256[])": "73c8a958",
              "recoverERC721s(address[],address[],uint256[])": "c3666c36",
              "setTokenHolder(address)": "f29d2f28",
              "supportsInterface(bytes4)": "01ffc9a7",
              "tokenHolder()": "420a83e7",
              "transferOwnership(address)": "f2fde38b",
              "vouchers()": "5e262f96"
            }
          }
        }
      },
      "contracts/token/utils/mocks/ERC1155VouchersRedeemerMock.sol": {
        "ERC1155VouchersRedeemerMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IERC1155InventoryBurnable",
                  "name": "vouchers",
                  "type": "address"
                },
                {
                  "internalType": "contract IWrappedERC20",
                  "name": "deliverable",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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": "deliverable",
              "outputs": [
                {
                  "internalType": "contract IWrappedERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155BatchReceived",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC20s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "contracts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC721s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenHolder_",
                  "type": "address"
                }
              ],
              "name": "setTokenHolder",
              "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": "tokenHolder",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "vouchers",
              "outputs": [
                {
                  "internalType": "contract IERC1155InventoryBurnable",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60c060405234801561001057600080fd5b506040516113ad3803806113ad8339818101604052606081101561003357600080fd5b5080516020820151604092830151600080546001600160a01b0319163390811782559451939492939192859285928592918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350606083811b6001600160601b03199081166080529083901b1660a052600180546001600160a01b0319166001600160a01b0392831617905591821694501691506112a3905061010a60003980610a265280610bc95280610d8e52508061067452806107a452806108185280610bf85280610cb152506112a36000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c8063bc197c8111610081578063f23a6e611161005b578063f23a6e61146104e9578063f29d2f281461057e578063f2fde38b146105a4576100c9565b8063bc197c811461026b578063c3666c36146103cd578063ca297507146104e1576100c9565b80635e262f96116100b25780635e262f961461014557806373c8a9581461014d5780638da5cb5b14610263576100c9565b806301ffc9a7146100ce578063420a83e714610121575b600080fd5b61010d600480360360208110156100e457600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166105ca565b604080519115158252519081900360200190f35b610129610663565b604080516001600160a01b039092168252519081900360200190f35b610129610672565b6102616004803603606081101561016357600080fd5b81019060208101813564010000000081111561017e57600080fd5b82018360208201111561019057600080fd5b803590602001918460208302840111640100000000831117156101b257600080fd5b9193909290916020810190356401000000008111156101d057600080fd5b8201836020820111156101e257600080fd5b8035906020019184602083028401116401000000008311171561020457600080fd5b91939092909160208101903564010000000081111561022257600080fd5b82018360208201111561023457600080fd5b8035906020019184602083028401116401000000008311171561025657600080fd5b509092509050610696565b005b610129610788565b610398600480360360a081101561028157600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156102b557600080fd5b8201836020820111156102c757600080fd5b803590602001918460208302840111640100000000831117156102e957600080fd5b91939092909160208101903564010000000081111561030757600080fd5b82018360208201111561031957600080fd5b8035906020019184602083028401116401000000008311171561033b57600080fd5b91939092909160208101903564010000000081111561035957600080fd5b82018360208201111561036b57600080fd5b8035906020019184600183028401116401000000008311171561038d57600080fd5b509092509050610797565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b610261600480360360608110156103e357600080fd5b8101906020810181356401000000008111156103fe57600080fd5b82018360208201111561041057600080fd5b8035906020019184602083028401116401000000008311171561043257600080fd5b91939092909160208101903564010000000081111561045057600080fd5b82018360208201111561046257600080fd5b8035906020019184602083028401116401000000008311171561048457600080fd5b9193909290916020810190356401000000008111156104a257600080fd5b8201836020820111156104b457600080fd5b803590602001918460208302840111640100000000831117156104d657600080fd5b509092509050610a7f565b610129610bc7565b610398600480360360a08110156104ff57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561053f57600080fd5b82018360208201111561055157600080fd5b8035906020019184600183028401116401000000008311171561057357600080fd5b509092509050610beb565b6102616004803603602081101561059457600080fd5b50356001600160a01b0316610de6565b610261600480360360208110156105ba57600080fd5b50356001600160a01b0316610e2b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061065d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b92915050565b6001546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6106a66106a1610e9c565b610ea0565b8483811480156106b557508082145b610706576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461077e5761077688888381811061071f57fe5b905060200201356001600160a01b031685858481811061073b57fe5b9050602002013588888581811061074e57fe5b905060200201356001600160a01b03166001600160a01b0316610f679092919063ffffffff16565b600101610709565b5050505050505050565b6000546001600160a01b031690565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610816576040805162461bcd60e51b815260206004820152601660248201527f52656465656d65723a2077726f6e672073656e64657200000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638053493430898989896040518663ffffffff1660e01b815260040180866001600160a01b0316815260200180602001806020018381038352878782818152602001925060200280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b1580156108ec57600080fd5b505af1158015610900573d6000803e3d6000fd5b505050506000805b808814610a1457600089898381811061091d57fe5b905060200201359050600088888481811061093457fe5b905060200201359050600061094883610fec565b90508181028282828161095757fe5b04146109aa576040805162461bcd60e51b815260206004820152601960248201527f52656465656d65723a20616d6f756e74206f766572666c6f7700000000000000604482015290519081900360640190fd5b85810186811015610a02576040805162461bcd60e51b815260206004820152601960248201527f52656465656d65723a20616d6f756e74206f766572666c6f7700000000000000604482015290519081900360640190fd5b95505060019093019250610908915050565b50600154610a50906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691168b84610fef565b507fbc197c81000000000000000000000000000000000000000000000000000000009998505050505050505050565b610a8a6106a1610e9c565b848381148015610a9957508082145b610aea576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461077e57858582818110610b0057fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a85818110610b2b57fe5b905060200201356001600160a01b0316878786818110610b4757fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015610ba457600080fd5b505af1158015610bb8573d6000803e3d6000fd5b50505050806001019050610aed565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c6a576040805162461bcd60e51b815260206004820152601660248201527f52656465656d65723a2077726f6e672073656e64657200000000000000000000604482015290519081900360640190fd5b604080517f124d91e5000000000000000000000000000000000000000000000000000000008152306004820152602481018790526044810186905290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163124d91e591606480830192600092919082900301818387803b158015610cf857600080fd5b505af1158015610d0c573d6000803e3d6000fd5b505050506000610d1b86610fec565b905084810285828281610d2a57fe5b0414610d7d576040805162461bcd60e51b815260206004820152601960248201527f52656465656d65723a20616d6f756e74206f766572666c6f7700000000000000604482015290519081900360640190fd5b600154610db8906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691168a84610fef565b507ff23a6e610000000000000000000000000000000000000000000000000000000098975050505050505050565b610df16106a1610e9c565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610e366106a1610e9c565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b3390565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed957600080fd5b505afa158015610eed573d6000803e3d6000fd5b505050506040513d6020811015610f0357600080fd5b50516001600160a01b03828116911614610f64576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610fe790849061107d565b505050565b90565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261107790859061107d565b50505050565b816110906001600160a01b038216611267565b6110e1576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b6020831061111e5780518252601f1990920191602091820191016110ff565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611180576040519150601f19603f3d011682016040523d82523d6000602084013e611185565b606091505b50915091508115611204578051156111ff578080602001905160208110156111ac57600080fd5b50516111ff576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b611260565b8051611257576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b3b15159056fea2646970667358221220050185e859ef75990b9b031d16a6c31cdde49c3b075d658b1e11a7c904f8ca7064736f6c63430007060033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x13AD CODESIZE SUB DUP1 PUSH2 0x13AD DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP3 DUP4 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE SWAP5 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 DUP6 SWAP3 DUP6 SWAP3 DUP6 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x60 DUP4 DUP2 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x80 MSTORE SWAP1 DUP4 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE SWAP2 DUP3 AND SWAP5 POP AND SWAP2 POP PUSH2 0x12A3 SWAP1 POP PUSH2 0x10A PUSH1 0x0 CODECOPY DUP1 PUSH2 0xA26 MSTORE DUP1 PUSH2 0xBC9 MSTORE DUP1 PUSH2 0xD8E MSTORE POP DUP1 PUSH2 0x674 MSTORE DUP1 PUSH2 0x7A4 MSTORE DUP1 PUSH2 0x818 MSTORE DUP1 PUSH2 0xBF8 MSTORE DUP1 PUSH2 0xCB1 MSTORE POP PUSH2 0x12A3 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 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBC197C81 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xF23A6E61 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0xF29D2F28 EQ PUSH2 0x57E JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x5A4 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0xCA297507 EQ PUSH2 0x4E1 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x5E262F96 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x5E262F96 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x263 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x420A83E7 EQ PUSH2 0x121 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x5CA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x129 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x129 PUSH2 0x672 JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x696 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x129 PUSH2 0x788 JUMP JUMPDEST PUSH2 0x398 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x359 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x36B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x38D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x797 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x450 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xA7F JUMP JUMPDEST PUSH2 0x129 PUSH2 0xBC7 JUMP JUMPDEST PUSH2 0x398 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x53F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x551 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x573 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDE6 JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE2B JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x65D JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x6A6 PUSH2 0x6A1 PUSH2 0xE9C JUMP JUMPDEST PUSH2 0xEA0 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x6B5 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x706 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x77E JUMPI PUSH2 0x776 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x71F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x73B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x74E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF67 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x709 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x816 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x52656465656D65723A2077726F6E672073656E64657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x80534934 ADDRESS DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP8 DUP8 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP5 DUP2 SUB DUP4 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 POP DUP7 SWAP1 DUP7 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x900 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 JUMPDEST DUP1 DUP9 EQ PUSH2 0xA14 JUMPI PUSH1 0x0 DUP10 DUP10 DUP4 DUP2 DUP2 LT PUSH2 0x91D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH1 0x0 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x934 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH1 0x0 PUSH2 0x948 DUP4 PUSH2 0xFEC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x957 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x9AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x52656465656D65723A20616D6F756E74206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP6 DUP2 ADD DUP7 DUP2 LT ISZERO PUSH2 0xA02 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x52656465656D65723A20616D6F756E74206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP6 POP POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x908 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x1 SLOAD PUSH2 0xA50 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND SWAP2 AND DUP12 DUP5 PUSH2 0xFEF JUMP JUMPDEST POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA8A PUSH2 0x6A1 PUSH2 0xE9C JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0xA99 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0xAEA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x77E JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0xB00 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0xB2B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0xB47 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0xAED JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xC6A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x52656465656D65723A2077726F6E672073656E64657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x124D91E500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x124D91E5 SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD0C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0xD1B DUP7 PUSH2 0xFEC JUMP JUMPDEST SWAP1 POP DUP5 DUP2 MUL DUP6 DUP3 DUP3 DUP2 PUSH2 0xD2A JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xD7D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x52656465656D65723A20616D6F756E74206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH2 0xDB8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND SWAP2 AND DUP11 DUP5 PUSH2 0xFEF JUMP JUMPDEST POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xDF1 PUSH2 0x6A1 PUSH2 0xE9C JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE36 PUSH2 0x6A1 PUSH2 0xE9C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xED9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0xF64 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xFE7 SWAP1 DUP5 SWAP1 PUSH2 0x107D JUMP JUMPDEST POP POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1077 SWAP1 DUP6 SWAP1 PUSH2 0x107D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x1090 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1267 JUMP JUMPDEST PUSH2 0x10E1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x111E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x10FF JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1180 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 0x1185 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x1204 JUMPI DUP1 MLOAD ISZERO PUSH2 0x11FF JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x11FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1260 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1257 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SDIV ADD DUP6 0xE8 MSIZE 0xEF PUSH22 0x990B9B031D16A6C31CDDE49C3B075D658B1E11A7C904 0xF8 0xCA PUSH17 0x64736F6C63430007060033000000000000 ",
              "sourceMap": "347:378:81:-:0;;;417:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;417:188:81;;;;;;;;;;;960:6:2;:15;;-1:-1:-1;;;;;;960:15:2;1514:10:80;960:15:2;;;;;990:40;;417:188:81;;;;;;;;;;;;1514:10:80;;;960:6:2;990:40;;960:6;;990:40;-1:-1:-1;1536:20:80::1;::::0;;;-1:-1:-1;;;;;;1536:20:80;;;::::1;::::0;1566:26;;;;;::::1;::::0;1602:11:::1;:26:::0;;-1:-1:-1;;;;;;1602:26:80::1;-1:-1:-1::0;;;;;1602:26:80;;::::1;;::::0;;347:378:81;;;;-1:-1:-1;347:378:81;;-1:-1:-1;347:378:81;;-1:-1:-1;347:378:81;-1:-1:-1;347:378:81;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {
                "14703": [
                  {
                    "length": 32,
                    "start": 1652
                  },
                  {
                    "length": 32,
                    "start": 1956
                  },
                  {
                    "length": 32,
                    "start": 2072
                  },
                  {
                    "length": 32,
                    "start": 3064
                  },
                  {
                    "length": 32,
                    "start": 3249
                  }
                ],
                "14705": [
                  {
                    "length": 32,
                    "start": 2598
                  },
                  {
                    "length": 32,
                    "start": 3017
                  },
                  {
                    "length": 32,
                    "start": 3470
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100c95760003560e01c8063bc197c8111610081578063f23a6e611161005b578063f23a6e61146104e9578063f29d2f281461057e578063f2fde38b146105a4576100c9565b8063bc197c811461026b578063c3666c36146103cd578063ca297507146104e1576100c9565b80635e262f96116100b25780635e262f961461014557806373c8a9581461014d5780638da5cb5b14610263576100c9565b806301ffc9a7146100ce578063420a83e714610121575b600080fd5b61010d600480360360208110156100e457600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166105ca565b604080519115158252519081900360200190f35b610129610663565b604080516001600160a01b039092168252519081900360200190f35b610129610672565b6102616004803603606081101561016357600080fd5b81019060208101813564010000000081111561017e57600080fd5b82018360208201111561019057600080fd5b803590602001918460208302840111640100000000831117156101b257600080fd5b9193909290916020810190356401000000008111156101d057600080fd5b8201836020820111156101e257600080fd5b8035906020019184602083028401116401000000008311171561020457600080fd5b91939092909160208101903564010000000081111561022257600080fd5b82018360208201111561023457600080fd5b8035906020019184602083028401116401000000008311171561025657600080fd5b509092509050610696565b005b610129610788565b610398600480360360a081101561028157600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156102b557600080fd5b8201836020820111156102c757600080fd5b803590602001918460208302840111640100000000831117156102e957600080fd5b91939092909160208101903564010000000081111561030757600080fd5b82018360208201111561031957600080fd5b8035906020019184602083028401116401000000008311171561033b57600080fd5b91939092909160208101903564010000000081111561035957600080fd5b82018360208201111561036b57600080fd5b8035906020019184600183028401116401000000008311171561038d57600080fd5b509092509050610797565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b610261600480360360608110156103e357600080fd5b8101906020810181356401000000008111156103fe57600080fd5b82018360208201111561041057600080fd5b8035906020019184602083028401116401000000008311171561043257600080fd5b91939092909160208101903564010000000081111561045057600080fd5b82018360208201111561046257600080fd5b8035906020019184602083028401116401000000008311171561048457600080fd5b9193909290916020810190356401000000008111156104a257600080fd5b8201836020820111156104b457600080fd5b803590602001918460208302840111640100000000831117156104d657600080fd5b509092509050610a7f565b610129610bc7565b610398600480360360a08110156104ff57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561053f57600080fd5b82018360208201111561055157600080fd5b8035906020019184600183028401116401000000008311171561057357600080fd5b509092509050610beb565b6102616004803603602081101561059457600080fd5b50356001600160a01b0316610de6565b610261600480360360208110156105ba57600080fd5b50356001600160a01b0316610e2b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061065d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b92915050565b6001546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6106a66106a1610e9c565b610ea0565b8483811480156106b557508082145b610706576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461077e5761077688888381811061071f57fe5b905060200201356001600160a01b031685858481811061073b57fe5b9050602002013588888581811061074e57fe5b905060200201356001600160a01b03166001600160a01b0316610f679092919063ffffffff16565b600101610709565b5050505050505050565b6000546001600160a01b031690565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610816576040805162461bcd60e51b815260206004820152601660248201527f52656465656d65723a2077726f6e672073656e64657200000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638053493430898989896040518663ffffffff1660e01b815260040180866001600160a01b0316815260200180602001806020018381038352878782818152602001925060200280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b1580156108ec57600080fd5b505af1158015610900573d6000803e3d6000fd5b505050506000805b808814610a1457600089898381811061091d57fe5b905060200201359050600088888481811061093457fe5b905060200201359050600061094883610fec565b90508181028282828161095757fe5b04146109aa576040805162461bcd60e51b815260206004820152601960248201527f52656465656d65723a20616d6f756e74206f766572666c6f7700000000000000604482015290519081900360640190fd5b85810186811015610a02576040805162461bcd60e51b815260206004820152601960248201527f52656465656d65723a20616d6f756e74206f766572666c6f7700000000000000604482015290519081900360640190fd5b95505060019093019250610908915050565b50600154610a50906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691168b84610fef565b507fbc197c81000000000000000000000000000000000000000000000000000000009998505050505050505050565b610a8a6106a1610e9c565b848381148015610a9957508082145b610aea576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461077e57858582818110610b0057fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a85818110610b2b57fe5b905060200201356001600160a01b0316878786818110610b4757fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015610ba457600080fd5b505af1158015610bb8573d6000803e3d6000fd5b50505050806001019050610aed565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c6a576040805162461bcd60e51b815260206004820152601660248201527f52656465656d65723a2077726f6e672073656e64657200000000000000000000604482015290519081900360640190fd5b604080517f124d91e5000000000000000000000000000000000000000000000000000000008152306004820152602481018790526044810186905290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163124d91e591606480830192600092919082900301818387803b158015610cf857600080fd5b505af1158015610d0c573d6000803e3d6000fd5b505050506000610d1b86610fec565b905084810285828281610d2a57fe5b0414610d7d576040805162461bcd60e51b815260206004820152601960248201527f52656465656d65723a20616d6f756e74206f766572666c6f7700000000000000604482015290519081900360640190fd5b600154610db8906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691168a84610fef565b507ff23a6e610000000000000000000000000000000000000000000000000000000098975050505050505050565b610df16106a1610e9c565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610e366106a1610e9c565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b3390565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed957600080fd5b505afa158015610eed573d6000803e3d6000fd5b505050506040513d6020811015610f0357600080fd5b50516001600160a01b03828116911614610f64576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610fe790849061107d565b505050565b90565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261107790859061107d565b50505050565b816110906001600160a01b038216611267565b6110e1576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b6020831061111e5780518252601f1990920191602091820191016110ff565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611180576040519150601f19603f3d011682016040523d82523d6000602084013e611185565b606091505b50915091508115611204578051156111ff578080602001905160208110156111ac57600080fd5b50516111ff576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b611260565b8051611257576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b3b15159056fea2646970667358221220050185e859ef75990b9b031d16a6c31cdde49c3b075d658b1e11a7c904f8ca7064736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBC197C81 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xF23A6E61 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0xF29D2F28 EQ PUSH2 0x57E JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x5A4 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0xCA297507 EQ PUSH2 0x4E1 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x5E262F96 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x5E262F96 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x263 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x420A83E7 EQ PUSH2 0x121 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x5CA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x129 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x129 PUSH2 0x672 JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x696 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x129 PUSH2 0x788 JUMP JUMPDEST PUSH2 0x398 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x359 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x36B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x38D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x797 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x450 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xA7F JUMP JUMPDEST PUSH2 0x129 PUSH2 0xBC7 JUMP JUMPDEST PUSH2 0x398 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x53F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x551 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x573 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDE6 JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE2B JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x65D JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x6A6 PUSH2 0x6A1 PUSH2 0xE9C JUMP JUMPDEST PUSH2 0xEA0 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x6B5 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x706 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x77E JUMPI PUSH2 0x776 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x71F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x73B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x74E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF67 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x709 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x816 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x52656465656D65723A2077726F6E672073656E64657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x80534934 ADDRESS DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP8 DUP8 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP5 DUP2 SUB DUP4 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 POP DUP7 SWAP1 DUP7 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x900 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 JUMPDEST DUP1 DUP9 EQ PUSH2 0xA14 JUMPI PUSH1 0x0 DUP10 DUP10 DUP4 DUP2 DUP2 LT PUSH2 0x91D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH1 0x0 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x934 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH1 0x0 PUSH2 0x948 DUP4 PUSH2 0xFEC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x957 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x9AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x52656465656D65723A20616D6F756E74206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP6 DUP2 ADD DUP7 DUP2 LT ISZERO PUSH2 0xA02 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x52656465656D65723A20616D6F756E74206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP6 POP POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x908 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x1 SLOAD PUSH2 0xA50 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND SWAP2 AND DUP12 DUP5 PUSH2 0xFEF JUMP JUMPDEST POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA8A PUSH2 0x6A1 PUSH2 0xE9C JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0xA99 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0xAEA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x77E JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0xB00 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0xB2B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0xB47 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0xAED JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xC6A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x52656465656D65723A2077726F6E672073656E64657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x124D91E500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x124D91E5 SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD0C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0xD1B DUP7 PUSH2 0xFEC JUMP JUMPDEST SWAP1 POP DUP5 DUP2 MUL DUP6 DUP3 DUP3 DUP2 PUSH2 0xD2A JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xD7D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x52656465656D65723A20616D6F756E74206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH2 0xDB8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND SWAP2 AND DUP11 DUP5 PUSH2 0xFEF JUMP JUMPDEST POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xDF1 PUSH2 0x6A1 PUSH2 0xE9C JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE36 PUSH2 0x6A1 PUSH2 0xE9C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xED9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0xF64 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xFE7 SWAP1 DUP5 SWAP1 PUSH2 0x107D JUMP JUMPDEST POP POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1077 SWAP1 DUP6 SWAP1 PUSH2 0x107D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x1090 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1267 JUMP JUMPDEST PUSH2 0x10E1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x111E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x10FF JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1180 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 0x1185 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x1204 JUMPI DUP1 MLOAD ISZERO PUSH2 0x11FF JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x11FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1260 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1257 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SDIV ADD DUP6 0xE8 MSIZE 0xEF PUSH22 0x990B9B031D16A6C31CDDE49C3B075D658B1E11A7C904 0xF8 0xCA PUSH17 0x64736F6C63430007060033000000000000 ",
              "sourceMap": "347:378:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1102:213:16;;;;;;;;;;;;;;;;-1:-1:-1;1102:213:16;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1112:26:80;;;:::i;:::-;;;;-1:-1:-1;;;;;1112:26:80;;;;;;;;;;;;;;1007:51;;;:::i;1137:481:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1137:481:8;;-1:-1:-1;1137:481:8;-1:-1:-1;1137:481:8;:::i;:::-;;1114:94:2;;;:::i;3544:1002:80:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3544:1002:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3544:1002:80;;-1:-1:-1;3544:1002:80;-1:-1:-1;3544:1002:80;:::i;:::-;;;;;;;;;;;;;;;;;;;2430:511:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2430:511:8;;-1:-1:-1;2430:511:8;-1:-1:-1;2430:511:8;:::i;1064:42:80:-;;;:::i;2228:632::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2228:632:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2228:632:80;;-1:-1:-1;2228:632:80;-1:-1:-1;2228:632:80;:::i;4732:147::-;;;;;;;;;;;;;;;;-1:-1:-1;4732:147:80;-1:-1:-1;;;;;4732:147:80;;:::i;1448:197:2:-;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;1102:213:16:-;1187:4;1210:40;;;1225:25;1210:40;;:98;;-1:-1:-1;1254:54:16;;;1269:39;1254:54;1210:98;1203:105;1102:213;-1:-1:-1;;1102:213:16:o;1112:26:80:-;;;-1:-1:-1;;;;;1112:26:80;;:::o;1007:51::-;;;:::o;1137:481:8:-;1301:31;1319:12;:10;:12::i;:::-;1301:17;:31::i;:::-;1359:8;1392:23;;;:51;;;;-1:-1:-1;1419:24:8;;;1392:51;1384:90;;;;;-1:-1:-1;;;1384:90:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;1489:9;1484:128;1509:6;1504:1;:11;1484:128;;1536:65;1577:8;;1586:1;1577:11;;;;;;;;;;;;;-1:-1:-1;;;;;1577:11:8;1590:7;;1598:1;1590:10;;;;;;;;;;;;;1550:6;;1557:1;1550:9;;;;;;;;;;;;;-1:-1:-1;;;;;1550:9:8;-1:-1:-1;;;;;1536:40:8;;;:65;;;;;:::i;:::-;1517:3;;1484:128;;;;1137:481;;;;;;;:::o;1114:94:2:-;1169:7;1195:6;-1:-1:-1;;;;;1195:6:2;1114:94;:::o;3544:1002:80:-;3769:6;3795:10;-1:-1:-1;;;;;3817:8:80;3795:31;;3787:66;;;;;-1:-1:-1;;;3787:66:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;3863:8;-1:-1:-1;;;;;3863:22:80;;3894:4;3901:3;;3906:6;;3863:50;;;;;;;;;;;;;-1:-1:-1;;;;;3863:50:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3863:50:80;;;;;;;;;;;;;;;;;-1:-1:-1;3863:50:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3923:19;3957:9;3952:475;3968:15;;;3952:475;;4004:10;4017:3;;4021:1;4017:6;;;;;;;;;;;;;4004:19;;4037:13;4053:6;;4060:1;4053:9;;;;;;;;;;;;;4037:25;;4076:20;4099:17;4113:2;4099:13;:17::i;:::-;4076:40;-1:-1:-1;4147:20:80;;;4162:5;4076:40;4147:20;4076:40;4189:21;;;;;:30;4181:68;;;;;-1:-1:-1;;;4181:68:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;4283:20;;;4325:24;;;;4317:62;;;;;-1:-1:-1;;;4317:62:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;4407:9;-1:-1:-1;;3985:3:80;;;;;-1:-1:-1;3952:475:80;;-1:-1:-1;;3952:475:80;;-1:-1:-1;4468:11:80;;4436:63;;-1:-1:-1;;;;;4436:11:80;:31;;;4468:11;4481:4;4487:11;4436:31;:63::i;:::-;-1:-1:-1;4516:23:80;;3544:1002;-1:-1:-1;;;;;;;;;3544:1002:80:o;2430:511:8:-;2599:31;2617:12;:10;:12::i;2599:31::-;2657:8;2690:26;;;:55;;;;-1:-1:-1;2720:25:8;;;2690:55;2682:94;;;;;-1:-1:-1;;;2682:94:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:9;2786:149;2811:6;2806:1;:11;2786:149;;2857:9;;2867:1;2857:12;;;;;;;;;;;;;-1:-1:-1;;;;;2857:12:8;-1:-1:-1;;;;;2838:45:8;;2892:4;2899:8;;2908:1;2899:11;;;;;;;;;;;;;-1:-1:-1;;;;;2899:11:8;2912:8;;2921:1;2912:11;;;;;;;;;;;;;2838:86;;;;;;;;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;-1:-1:-1;;;;;2838:86:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:3;;;;;2786:149;;1064:42:80;;;:::o;2228:632::-;2424:6;2450:10;-1:-1:-1;;;;;2472:8:80;2450:31;;2442:66;;;;;-1:-1:-1;;;2442:66:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;2518:43;;;;;;2544:4;2518:43;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2518:8:80;:17;;;;:43;;;;;-1:-1:-1;;2518:43:80;;;;;;;-1:-1:-1;2518:17:80;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2571:20;2594:17;2608:2;2594:13;:17::i;:::-;2571:40;-1:-1:-1;2643:20:80;;;2658:5;2571:40;2643:20;2571:40;2681:26;;;;;:35;2673:73;;;;;-1:-1:-1;;;2673:73:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;2788:11;;2756:63;;-1:-1:-1;;;;;2756:11:80;:31;;;2788:11;2801:4;2807:11;2756:31;:63::i;:::-;-1:-1:-1;2836:17:80;;2228:632;-1:-1:-1;;;;;;;;2228:632:80:o;4732:147::-;4805:31;4823:12;:10;:12::i;4805:31::-;4846:11;:26;;;;-1:-1:-1;;;;;4846:26:80;;;;;;;;;;4732:147::o;1448:197:2:-;1527:31;1545:12;:10;:12::i;1527:31::-;1568:6;:17;;;;-1:-1:-1;;;;;1568:17:2;;;;;;;;;1600:38;;1568:17;;1621:6;;;1600:38;;1568:6;1600:38;1448:197;:::o;355:104:5:-;442:10;355:104;:::o;1770:136:2:-;1860:4;-1:-1:-1;;;;;1860:10:2;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1860:12:2;-1:-1:-1;;;;;1849:23:2;;;;;;1841:58;;;;;-1:-1:-1;;;1841:58:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;1770:136;:::o;416:223:6:-;573:58;;;-1:-1:-1;;;;;573:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;596:23;573:58;;;538:94;;566:5;;538:27;:94::i;:::-;416:223;;;:::o;611:112:81:-;709:7;611:112::o;645:259:6:-;828:68;;;-1:-1:-1;;;;;828:68:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;851:27;828:68;;;793:104;;821:5;;793:27;:104::i;:::-;645:259;;;;:::o;1147:870::-;1272:5;1296:19;-1:-1:-1;;;;;1296:17:6;;;:19::i;:::-;1288:58;;;;;-1:-1:-1;;;1288:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:12;1431:17;1452:6;-1:-1:-1;;;;;1452:11:6;1464:8;1452:21;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1452:21:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:57;;;;1487:7;1483:528;;;1514:11;;:16;1510:122;;1569:4;1558:24;;;;;;;;;;;;;;;-1:-1:-1;1558:24:6;1550:67;;;;;-1:-1:-1;;;1550:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:528;;;1720:11;;1716:95;;1756:40;;;-1:-1:-1;;;1756:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:95;1938:4;1932:11;1982:4;1975;1971:2;1967:13;1960:27;1902:99;1147:870;;;;;:::o;913:377:9:-;1229:20;1275:8;;;913:377::o"
            },
            "methodIdentifiers": {
              "deliverable()": "ca297507",
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "owner()": "8da5cb5b",
              "recoverERC20s(address[],address[],uint256[])": "73c8a958",
              "recoverERC721s(address[],address[],uint256[])": "c3666c36",
              "setTokenHolder(address)": "f29d2f28",
              "supportsInterface(bytes4)": "01ffc9a7",
              "tokenHolder()": "420a83e7",
              "transferOwnership(address)": "f2fde38b",
              "vouchers()": "5e262f96"
            }
          }
        }
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IERC2771.sol": {
        "IERC2771": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "forwarder",
                  "type": "address"
                }
              ],
              "name": "isTrustedForwarder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "isTrustedForwarder(address)": "572b6c05"
            }
          }
        }
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol": {
        "IForwarderRegistry": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isForwarderFor",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "isForwarderFor(address,address)": "e60125d6"
            }
          }
        }
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingAppendedCallData.sol": {
        "UsingAppendedCallData": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          }
        }
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol": {
        "UsingUniversalForwarding": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "forwarder",
                  "type": "address"
                }
              ],
              "name": "isTrustedForwarder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "isTrustedForwarder(address)": "572b6c05"
            }
          }
        }
      }
    },
    "sources": {
      "@animoca/ethereum-contracts-core/contracts/access/IERC173.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/IERC173.sol",
          "exportedSymbols": {
            "IERC173": [
              22
            ]
          },
          "id": 23,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2,
                "nodeType": "StructuredDocumentation",
                "src": "66:118:0",
                "text": " @title ERC-173 Contract Ownership Standard\n Note: the ERC-165 identifier for this interface is 0x7f5828d0"
              },
              "fullyImplemented": false,
              "id": 22,
              "linearizedBaseContracts": [
                22
              ],
              "name": "IERC173",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 3,
                    "nodeType": "StructuredDocumentation",
                    "src": "209:155:0",
                    "text": " Event emited when ownership of a contract changes.\n @param previousOwner the previous owner.\n @param newOwner the new owner."
                  },
                  "id": 9,
                  "name": "OwnershipTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 8,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 9,
                        "src": "396:29:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "396:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 9,
                        "src": "427:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "427:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "395:57:0"
                  },
                  "src": "369:84:0"
                },
                {
                  "documentation": {
                    "id": 10,
                    "nodeType": "StructuredDocumentation",
                    "src": "459:88:0",
                    "text": " Get the address of the owner\n @return The address of the owner."
                  },
                  "functionSelector": "8da5cb5b",
                  "id": 15,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "566:2:0"
                  },
                  "returnParameters": {
                    "id": 14,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 15,
                        "src": "592:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "592:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "591:9:0"
                  },
                  "scope": 22,
                  "src": "552:49:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 16,
                    "nodeType": "StructuredDocumentation",
                    "src": "607:299:0",
                    "text": " Set the address of the new owner of the contract\n Set newOwner to address(0) to renounce any ownership.\n @dev Emits an {OwnershipTransferred} event.\n @param newOwner The address of the new owner of the contract. Using the zero address means renouncing ownership."
                  },
                  "functionSelector": "f2fde38b",
                  "id": 21,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferOwnership",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 21,
                        "src": "938:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "938:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "937:18:0"
                  },
                  "returnParameters": {
                    "id": 20,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "964:0:0"
                  },
                  "scope": 22,
                  "src": "911:54:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 23,
              "src": "185:782:0"
            }
          ],
          "src": "33:935:0"
        },
        "id": 0
      },
      "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
          "exportedSymbols": {
            "MinterRole": [
              125
            ],
            "Ownable": [
              206
            ]
          },
          "id": 126,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 24,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:1"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol",
              "file": "./Ownable.sol",
              "id": 26,
              "nodeType": "ImportDirective",
              "scope": 126,
              "sourceUnit": 207,
              "src": "66:38:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 25,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:7:1",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 28,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 206,
                    "src": "226:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$206",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 29,
                  "nodeType": "InheritanceSpecifier",
                  "src": "226:7:1"
                }
              ],
              "contractDependencies": [
                22,
                206,
                322
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 27,
                "nodeType": "StructuredDocumentation",
                "src": "106:96:1",
                "text": " Contract which allows derived contracts access control over token minting operations."
              },
              "fullyImplemented": true,
              "id": 125,
              "linearizedBaseContracts": [
                125,
                206,
                22,
                322
              ],
              "name": "MinterRole",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 33,
                  "name": "MinterAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 32,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 33,
                        "src": "258:23:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "258:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "257:25:1"
                  },
                  "src": "240:43:1"
                },
                {
                  "anonymous": false,
                  "id": 37,
                  "name": "MinterRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 36,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 37,
                        "src": "308:23:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 34,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "308:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "307:25:1"
                  },
                  "src": "288:45:1"
                },
                {
                  "constant": false,
                  "functionSelector": "aa271e1a",
                  "id": 41,
                  "mutability": "mutable",
                  "name": "isMinter",
                  "nodeType": "VariableDeclaration",
                  "scope": 125,
                  "src": "339:40:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 40,
                    "keyType": {
                      "id": 38,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "347:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "339:24:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 39,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "358:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 54,
                    "nodeType": "Block",
                    "src": "466:35:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 51,
                              "name": "owner_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44,
                              "src": "487:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 50,
                            "name": "_addMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 124,
                            "src": "476:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 52,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "476:18:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 53,
                        "nodeType": "ExpressionStatement",
                        "src": "476:18:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 42,
                    "nodeType": "StructuredDocumentation",
                    "src": "386:31:1",
                    "text": " Constructor."
                  },
                  "id": 55,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 47,
                          "name": "owner_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 44,
                          "src": "458:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 48,
                      "modifierName": {
                        "id": 46,
                        "name": "Ownable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 206,
                        "src": "450:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Ownable_$206_$",
                          "typeString": "type(contract Ownable)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "450:15:1"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 45,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44,
                        "mutability": "mutable",
                        "name": "owner_",
                        "nodeType": "VariableDeclaration",
                        "scope": 55,
                        "src": "434:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "434:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "433:16:1"
                  },
                  "returnParameters": {
                    "id": 49,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "466:0:1"
                  },
                  "scope": 125,
                  "src": "422:79:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 70,
                    "nodeType": "Block",
                    "src": "737:77:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 62,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "765:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 63,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "765:12:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 61,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "747:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 64,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "747:31:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 65,
                        "nodeType": "ExpressionStatement",
                        "src": "747:31:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 67,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 58,
                              "src": "799:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 66,
                            "name": "_addMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 124,
                            "src": "788:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 68,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "788:19:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 69,
                        "nodeType": "ExpressionStatement",
                        "src": "788:19:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 56,
                    "nodeType": "StructuredDocumentation",
                    "src": "507:182:1",
                    "text": " Grants the minter role to a non-minter.\n @dev reverts if the sender is not the contract owner.\n @param account The account to grant the minter role to."
                  },
                  "functionSelector": "983b2d56",
                  "id": 71,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addMinter",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 59,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 58,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 71,
                        "src": "713:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 57,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "713:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "712:17:1"
                  },
                  "returnParameters": {
                    "id": 60,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "737:0:1"
                  },
                  "scope": 125,
                  "src": "694:120:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 94,
                    "nodeType": "Block",
                    "src": "962:152:1",
                    "statements": [
                      {
                        "assignments": [
                          76
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 76,
                            "mutability": "mutable",
                            "name": "account",
                            "nodeType": "VariableDeclaration",
                            "scope": 94,
                            "src": "972:15:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 75,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "972:7:1",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 79,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 77,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "990:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 78,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "990:12:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "972:30:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 81,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 76,
                              "src": "1027:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 80,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "1012:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 82,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1012:23:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 83,
                        "nodeType": "ExpressionStatement",
                        "src": "1012:23:1"
                      },
                      {
                        "expression": {
                          "id": 88,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 84,
                              "name": "isMinter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41,
                              "src": "1045:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 86,
                            "indexExpression": {
                              "id": 85,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 76,
                              "src": "1054:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1045:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "66616c7365",
                            "id": 87,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1065:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "1045:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 89,
                        "nodeType": "ExpressionStatement",
                        "src": "1045:25:1"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 91,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 76,
                              "src": "1099:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 90,
                            "name": "MinterRemoved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37,
                            "src": "1085:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 92,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1085:22:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 93,
                        "nodeType": "EmitStatement",
                        "src": "1080:27:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 72,
                    "nodeType": "StructuredDocumentation",
                    "src": "820:104:1",
                    "text": " Renounces the granted minter role.\n @dev reverts if the sender is not a minter."
                  },
                  "functionSelector": "98650275",
                  "id": 95,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "renounceMinter",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 73,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "952:2:1"
                  },
                  "returnParameters": {
                    "id": 74,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "962:0:1"
                  },
                  "scope": 125,
                  "src": "929:185:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 107,
                    "nodeType": "Block",
                    "src": "1175:71:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 101,
                                "name": "isMinter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41,
                                "src": "1193:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 103,
                              "indexExpression": {
                                "id": 102,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 97,
                                "src": "1202:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1193:17:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d696e746572526f6c653a206e6f742061204d696e746572",
                              "id": 104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1212:26:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ed88271ad3c83451da7264dacc0a9aabca262c2268fefa5c8744606804e8c82b",
                                "typeString": "literal_string \"MinterRole: not a Minter\""
                              },
                              "value": "MinterRole: not a Minter"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ed88271ad3c83451da7264dacc0a9aabca262c2268fefa5c8744606804e8c82b",
                                "typeString": "literal_string \"MinterRole: not a Minter\""
                              }
                            ],
                            "id": 100,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1185:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1185:54:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 106,
                        "nodeType": "ExpressionStatement",
                        "src": "1185:54:1"
                      }
                    ]
                  },
                  "id": 108,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_requireMinter",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 98,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 97,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 108,
                        "src": "1144:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 96,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1144:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1143:17:1"
                  },
                  "returnParameters": {
                    "id": 99,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1175:0:1"
                  },
                  "scope": 125,
                  "src": "1120:126:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 123,
                    "nodeType": "Block",
                    "src": "1298:76:1",
                    "statements": [
                      {
                        "expression": {
                          "id": 117,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 113,
                              "name": "isMinter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41,
                              "src": "1308:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 115,
                            "indexExpression": {
                              "id": 114,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 110,
                              "src": "1317:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1308:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 116,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1328:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1308:24:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 118,
                        "nodeType": "ExpressionStatement",
                        "src": "1308:24:1"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 120,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 110,
                              "src": "1359:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 119,
                            "name": "MinterAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33,
                            "src": "1347:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1347:20:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 122,
                        "nodeType": "EmitStatement",
                        "src": "1342:25:1"
                      }
                    ]
                  },
                  "id": 124,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_addMinter",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 111,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 110,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 124,
                        "src": "1272:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 109,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1272:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1271:17:1"
                  },
                  "returnParameters": {
                    "id": 112,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1298:0:1"
                  },
                  "scope": 125,
                  "src": "1252:122:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 126,
              "src": "203:1173:1"
            }
          ],
          "src": "33:1344:1"
        },
        "id": 1
      },
      "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol",
          "exportedSymbols": {
            "IERC173": [
              22
            ],
            "ManagedIdentity": [
              322
            ],
            "Ownable": [
              206
            ]
          },
          "id": 207,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 127,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:2"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "../metatx/ManagedIdentity.sol",
              "id": 129,
              "nodeType": "ImportDirective",
              "scope": 207,
              "sourceUnit": 323,
              "src": "66:62:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 128,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:15:2",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/IERC173.sol",
              "file": "./IERC173.sol",
              "id": 131,
              "nodeType": "ImportDirective",
              "scope": 207,
              "sourceUnit": 23,
              "src": "129:38:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 130,
                    "name": "IERC173",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "137:7:2",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 133,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 322,
                    "src": "693:15:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 134,
                  "nodeType": "InheritanceSpecifier",
                  "src": "693:15:2"
                },
                {
                  "baseName": {
                    "id": 135,
                    "name": "IERC173",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22,
                    "src": "710:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC173_$22",
                      "typeString": "contract IERC173"
                    }
                  },
                  "id": 136,
                  "nodeType": "InheritanceSpecifier",
                  "src": "710:7:2"
                }
              ],
              "contractDependencies": [
                22,
                322
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 132,
                "nodeType": "StructuredDocumentation",
                "src": "169:494:2",
                "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": 206,
              "linearizedBaseContracts": [
                206,
                22,
                322
              ],
              "name": "Ownable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 138,
                  "mutability": "mutable",
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 206,
                  "src": "724:23:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 137,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "724:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 156,
                    "nodeType": "Block",
                    "src": "950:87:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 144,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 138,
                            "src": "960:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 145,
                            "name": "owner_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 141,
                            "src": "969:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "960:15:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 147,
                        "nodeType": "ExpressionStatement",
                        "src": "960:15:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 151,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1019:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1011:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 149,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1011:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1011:10:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 153,
                              "name": "owner_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 141,
                              "src": "1023:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 148,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9,
                            "src": "990:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "990:40:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 155,
                        "nodeType": "EmitStatement",
                        "src": "985:45:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 139,
                    "nodeType": "StructuredDocumentation",
                    "src": "754:163:2",
                    "text": " Initializes the contract, setting the deployer as the initial owner.\n @dev Emits an {IERC173-OwnershipTransferred(address,address)} event."
                  },
                  "id": 157,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 142,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 141,
                        "mutability": "mutable",
                        "name": "owner_",
                        "nodeType": "VariableDeclaration",
                        "scope": 157,
                        "src": "934:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 140,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "934:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "933:16:2"
                  },
                  "returnParameters": {
                    "id": 143,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "950:0:2"
                  },
                  "scope": 206,
                  "src": "922:115:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    15
                  ],
                  "body": {
                    "id": 166,
                    "nodeType": "Block",
                    "src": "1178:30:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 164,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 138,
                          "src": "1195:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 163,
                        "id": 165,
                        "nodeType": "Return",
                        "src": "1188:13:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 158,
                    "nodeType": "StructuredDocumentation",
                    "src": "1043:66:2",
                    "text": " Gets the address of the current contract owner."
                  },
                  "functionSelector": "8da5cb5b",
                  "id": 167,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 160,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1151:8:2"
                  },
                  "parameters": {
                    "id": 159,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1128:2:2"
                  },
                  "returnParameters": {
                    "id": 163,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 162,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 167,
                        "src": "1169:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 161,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1169:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1168:9:2"
                  },
                  "scope": 206,
                  "src": "1114:94:2",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    21
                  ],
                  "body": {
                    "id": 188,
                    "nodeType": "Block",
                    "src": "1517:128:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 175,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "1545:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 176,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1545:12:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 174,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "1527:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1527:31:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 178,
                        "nodeType": "ExpressionStatement",
                        "src": "1527:31:2"
                      },
                      {
                        "expression": {
                          "id": 181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 179,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 138,
                            "src": "1568:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 180,
                            "name": "newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 170,
                            "src": "1577:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1568:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 182,
                        "nodeType": "ExpressionStatement",
                        "src": "1568:17:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 184,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 138,
                              "src": "1621:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 185,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 170,
                              "src": "1629:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 183,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9,
                            "src": "1600:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1600:38:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 187,
                        "nodeType": "EmitStatement",
                        "src": "1595:43:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 168,
                    "nodeType": "StructuredDocumentation",
                    "src": "1214:229:2",
                    "text": " See {IERC173-transferOwnership(address)}\n @dev Reverts if the sender is not the current contract owner.\n @param newOwner the address of the new owner. Use the zero address to renounce the ownership."
                  },
                  "functionSelector": "f2fde38b",
                  "id": 189,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferOwnership",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 172,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1508:8:2"
                  },
                  "parameters": {
                    "id": 171,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 170,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 189,
                        "src": "1475:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 169,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1475:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1474:18:2"
                  },
                  "returnParameters": {
                    "id": 173,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1517:0:2"
                  },
                  "scope": 206,
                  "src": "1448:197:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 204,
                    "nodeType": "Block",
                    "src": "1831:75:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 196,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 192,
                                "src": "1849:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 197,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "1860:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Ownable_$206",
                                      "typeString": "contract Ownable"
                                    }
                                  },
                                  "id": 198,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "owner",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 167,
                                  "src": "1860:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 199,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1860:12:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1849:23:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f776e61626c653a206e6f7420746865206f776e6572",
                              "id": 201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1874:24:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3f66c2bea32eba0f3d049dc65c25083896451ab6baac1da5f5b2c90c9678a0e9",
                                "typeString": "literal_string \"Ownable: not the owner\""
                              },
                              "value": "Ownable: not the owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3f66c2bea32eba0f3d049dc65c25083896451ab6baac1da5f5b2c90c9678a0e9",
                                "typeString": "literal_string \"Ownable: not the owner\""
                              }
                            ],
                            "id": 195,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1841:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1841:58:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 203,
                        "nodeType": "ExpressionStatement",
                        "src": "1841:58:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 190,
                    "nodeType": "StructuredDocumentation",
                    "src": "1651:114:2",
                    "text": " @dev Reverts if `account` is not the contract owner.\n @param account the account to test."
                  },
                  "id": 205,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_requireOwnership",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 193,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 192,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 205,
                        "src": "1797:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 191,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1797:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1796:17:2"
                  },
                  "returnParameters": {
                    "id": 194,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1831:0:2"
                  },
                  "scope": 206,
                  "src": "1770:136:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 207,
              "src": "664:1244:2"
            }
          ],
          "src": "33:1876:2"
        },
        "id": 2
      },
      "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
          "exportedSymbols": {
            "IERC165": [
              218
            ]
          },
          "id": 219,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 208,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:3"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 209,
                "nodeType": "StructuredDocumentation",
                "src": "66:110:3",
                "text": " @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165."
              },
              "fullyImplemented": false,
              "id": 218,
              "linearizedBaseContracts": [
                218
              ],
              "name": "IERC165",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 210,
                    "nodeType": "StructuredDocumentation",
                    "src": "201:340:3",
                    "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": 217,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 213,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 212,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 217,
                        "src": "573:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 211,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "573:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "572:20:3"
                  },
                  "returnParameters": {
                    "id": 216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 215,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 217,
                        "src": "616:4:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 214,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "616:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "615:6:3"
                  },
                  "scope": 218,
                  "src": "546:76:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 219,
              "src": "177:447:3"
            }
          ],
          "src": "33:592:3"
        },
        "id": 3
      },
      "@animoca/ethereum-contracts-core/contracts/lifecycle/Pausable.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/lifecycle/Pausable.sol",
          "exportedSymbols": {
            "ManagedIdentity": [
              322
            ],
            "Pausable": [
              301
            ]
          },
          "id": 302,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 220,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:4"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "../metatx/ManagedIdentity.sol",
              "id": 222,
              "nodeType": "ImportDirective",
              "scope": 302,
              "sourceUnit": 323,
              "src": "66:62:4",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 221,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:15:4",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 224,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 322,
                    "src": "233:15:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 225,
                  "nodeType": "InheritanceSpecifier",
                  "src": "233:15:4"
                }
              ],
              "contractDependencies": [
                322
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 223,
                "nodeType": "StructuredDocumentation",
                "src": "130:72:4",
                "text": " @dev Contract which allows children to implement pausability."
              },
              "fullyImplemented": true,
              "id": 301,
              "linearizedBaseContracts": [
                301,
                322
              ],
              "name": "Pausable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 226,
                    "nodeType": "StructuredDocumentation",
                    "src": "255:73:4",
                    "text": " @dev Emitted when the pause is triggered by `account`."
                  },
                  "id": 230,
                  "name": "Paused",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 229,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 228,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 230,
                        "src": "346:15:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 227,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "346:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "345:17:4"
                  },
                  "src": "333:30:4"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 231,
                    "nodeType": "StructuredDocumentation",
                    "src": "369:70:4",
                    "text": " @dev Emitted when the pause is lifted by `account`."
                  },
                  "id": 235,
                  "name": "Unpaused",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 234,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 233,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 235,
                        "src": "459:15:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 232,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "459:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "458:17:4"
                  },
                  "src": "444:32:4"
                },
                {
                  "constant": false,
                  "functionSelector": "5c975abb",
                  "id": 237,
                  "mutability": "mutable",
                  "name": "paused",
                  "nodeType": "VariableDeclaration",
                  "scope": 301,
                  "src": "482:18:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 236,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "482:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 246,
                    "nodeType": "Block",
                    "src": "533:33:4",
                    "statements": [
                      {
                        "expression": {
                          "id": 244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 242,
                            "name": "paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 237,
                            "src": "543:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 243,
                            "name": "paused_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 239,
                            "src": "552:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "543:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 245,
                        "nodeType": "ExpressionStatement",
                        "src": "543:16:4"
                      }
                    ]
                  },
                  "id": 247,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 240,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 239,
                        "mutability": "mutable",
                        "name": "paused_",
                        "nodeType": "VariableDeclaration",
                        "scope": 247,
                        "src": "519:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 238,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "519:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "518:14:4"
                  },
                  "returnParameters": {
                    "id": 241,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "533:0:4"
                  },
                  "scope": 301,
                  "src": "507:59:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 256,
                    "nodeType": "Block",
                    "src": "615:53:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 252,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "633:7:4",
                              "subExpression": {
                                "id": 251,
                                "name": "paused",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 237,
                                "src": "634:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5061757361626c653a20706175736564",
                              "id": 253,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "642:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a",
                                "typeString": "literal_string \"Pausable: paused\""
                              },
                              "value": "Pausable: paused"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a",
                                "typeString": "literal_string \"Pausable: paused\""
                              }
                            ],
                            "id": 250,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "625:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "625:36:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 255,
                        "nodeType": "ExpressionStatement",
                        "src": "625:36:4"
                      }
                    ]
                  },
                  "id": 257,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_requireNotPaused",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 248,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "598:2:4"
                  },
                  "returnParameters": {
                    "id": 249,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "615:0:4"
                  },
                  "scope": 301,
                  "src": "572:96:4",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 265,
                    "nodeType": "Block",
                    "src": "714:56:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 261,
                              "name": "paused",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 237,
                              "src": "732:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5061757361626c653a206e6f7420706175736564",
                              "id": 262,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "740:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a",
                                "typeString": "literal_string \"Pausable: not paused\""
                              },
                              "value": "Pausable: not paused"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a",
                                "typeString": "literal_string \"Pausable: not paused\""
                              }
                            ],
                            "id": 260,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "724:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "724:39:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 264,
                        "nodeType": "ExpressionStatement",
                        "src": "724:39:4"
                      }
                    ]
                  },
                  "id": 266,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_requirePaused",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 258,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "697:2:4"
                  },
                  "returnParameters": {
                    "id": 259,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "714:0:4"
                  },
                  "scope": 301,
                  "src": "674:96:4",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 282,
                    "nodeType": "Block",
                    "src": "940:94:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 270,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "950:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "950:19:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 272,
                        "nodeType": "ExpressionStatement",
                        "src": "950:19:4"
                      },
                      {
                        "expression": {
                          "id": 275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 273,
                            "name": "paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 237,
                            "src": "979:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "988:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "979:13:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 276,
                        "nodeType": "ExpressionStatement",
                        "src": "979:13:4"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 278,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "1014:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1014:12:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 277,
                            "name": "Paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 230,
                            "src": "1007:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1007:20:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 281,
                        "nodeType": "EmitStatement",
                        "src": "1002:25:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 267,
                    "nodeType": "StructuredDocumentation",
                    "src": "776:124:4",
                    "text": " @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused."
                  },
                  "id": 283,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_pause",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 268,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "920:2:4"
                  },
                  "returnParameters": {
                    "id": 269,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "940:0:4"
                  },
                  "scope": 301,
                  "src": "905:129:4",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 299,
                    "nodeType": "Block",
                    "src": "1203:94:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 287,
                            "name": "_requirePaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 266,
                            "src": "1213:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1213:16:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 289,
                        "nodeType": "ExpressionStatement",
                        "src": "1213:16:4"
                      },
                      {
                        "expression": {
                          "id": 292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 290,
                            "name": "paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 237,
                            "src": "1239:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "66616c7365",
                            "id": 291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1248:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "1239:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 293,
                        "nodeType": "ExpressionStatement",
                        "src": "1239:14:4"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 295,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "1277:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 296,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1277:12:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 294,
                            "name": "Unpaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 235,
                            "src": "1268:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1268:22:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 298,
                        "nodeType": "EmitStatement",
                        "src": "1263:27:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 284,
                    "nodeType": "StructuredDocumentation",
                    "src": "1040:121:4",
                    "text": " @dev Returns to normal state.\n Requirements:\n - The contract must be paused."
                  },
                  "id": 300,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_unpause",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 285,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1183:2:4"
                  },
                  "returnParameters": {
                    "id": 286,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1203:0:4"
                  },
                  "scope": 301,
                  "src": "1166:131:4",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 302,
              "src": "203:1096:4"
            }
          ],
          "src": "33:1267:4"
        },
        "id": 4
      },
      "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
          "exportedSymbols": {
            "ManagedIdentity": [
              322
            ]
          },
          "id": 323,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 303,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:5"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 322,
              "linearizedBaseContracts": [
                322
              ],
              "name": "ManagedIdentity",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 311,
                    "nodeType": "Block",
                    "src": "425:34:5",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 308,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "442:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "442:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 307,
                        "id": 310,
                        "nodeType": "Return",
                        "src": "435:17:5"
                      }
                    ]
                  },
                  "id": 312,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 304,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "374:2:5"
                  },
                  "returnParameters": {
                    "id": 307,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 306,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 312,
                        "src": "408:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 305,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "408:15:5",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "407:17:5"
                  },
                  "scope": 322,
                  "src": "355:104:5",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 320,
                    "nodeType": "Block",
                    "src": "530:32:5",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 317,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "547:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "src": "547:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 316,
                        "id": 319,
                        "nodeType": "Return",
                        "src": "540:15:5"
                      }
                    ]
                  },
                  "id": 321,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 313,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "482:2:5"
                  },
                  "returnParameters": {
                    "id": 316,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 315,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 321,
                        "src": "516:12:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 314,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "516:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "515:14:5"
                  },
                  "scope": 322,
                  "src": "465:97:5",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 323,
              "src": "315:249:5"
            }
          ],
          "src": "33:532:5"
        },
        "id": 5
      },
      "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol",
          "exportedSymbols": {
            "AddressIsContract": [
              1285
            ],
            "ERC20Wrapper": [
              463
            ],
            "IWrappedERC20": [
              493
            ]
          },
          "id": 494,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 324,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:6"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
              "file": "./types/AddressIsContract.sol",
              "id": 326,
              "nodeType": "ImportDirective",
              "scope": 494,
              "sourceUnit": 1286,
              "src": "66:64:6",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 325,
                    "name": "AddressIsContract",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:17:6",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 327,
                "nodeType": "StructuredDocumentation",
                "src": "132:214:6",
                "text": " @title ERC20Wrapper\n Wraps ERC20 functions to support non-standard implementations which do not return a bool value.\n Calls to the wrapped functions revert only if they throw or if they return false."
              },
              "fullyImplemented": true,
              "id": 463,
              "linearizedBaseContracts": [
                463
              ],
              "name": "ERC20Wrapper",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 330,
                  "libraryName": {
                    "id": 328,
                    "name": "AddressIsContract",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1285,
                    "src": "380:17:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddressIsContract_$1285",
                      "typeString": "library AddressIsContract"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "374:36:6",
                  "typeName": {
                    "id": 329,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "402:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "body": {
                    "id": 351,
                    "nodeType": "Block",
                    "src": "528:111:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 340,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 332,
                              "src": "566:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 343,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 332,
                                      "src": "596:5:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                        "typeString": "contract IWrappedERC20"
                                      }
                                    },
                                    "id": 344,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transfer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 472,
                                    "src": "596:14:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "596:23:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 346,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 334,
                                  "src": "621:2:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 347,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 336,
                                  "src": "625:5:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 341,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "573:3:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 342,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "573:22:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 348,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "573:58:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 339,
                            "name": "_callWithOptionalReturnData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 462,
                            "src": "538:27:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IWrappedERC20_$493_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IWrappedERC20,bytes memory)"
                            }
                          },
                          "id": 349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "538:94:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 350,
                        "nodeType": "ExpressionStatement",
                        "src": "538:94:6"
                      }
                    ]
                  },
                  "id": 352,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wrappedTransfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 337,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 332,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 352,
                        "src": "450:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                          "typeString": "contract IWrappedERC20"
                        },
                        "typeName": {
                          "id": 331,
                          "name": "IWrappedERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 493,
                          "src": "450:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                            "typeString": "contract IWrappedERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 334,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 352,
                        "src": "479:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 333,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "479:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 336,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 352,
                        "src": "499:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 335,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "499:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "440:78:6"
                  },
                  "returnParameters": {
                    "id": 338,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "528:0:6"
                  },
                  "scope": 463,
                  "src": "416:223:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 376,
                    "nodeType": "Block",
                    "src": "783:121:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 364,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 354,
                              "src": "821:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 367,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 354,
                                      "src": "851:5:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                        "typeString": "contract IWrappedERC20"
                                      }
                                    },
                                    "id": 368,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transferFrom",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 483,
                                    "src": "851:18:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 369,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "851:27:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 370,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 356,
                                  "src": "880:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 371,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 358,
                                  "src": "886:2:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 372,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 360,
                                  "src": "890:5:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 365,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "828:3:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 366,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "828:22:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 373,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "828:68:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 363,
                            "name": "_callWithOptionalReturnData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 462,
                            "src": "793:27:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IWrappedERC20_$493_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IWrappedERC20,bytes memory)"
                            }
                          },
                          "id": 374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "793:104:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 375,
                        "nodeType": "ExpressionStatement",
                        "src": "793:104:6"
                      }
                    ]
                  },
                  "id": 377,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wrappedTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 361,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 354,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 377,
                        "src": "683:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                          "typeString": "contract IWrappedERC20"
                        },
                        "typeName": {
                          "id": 353,
                          "name": "IWrappedERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 493,
                          "src": "683:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                            "typeString": "contract IWrappedERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 356,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 377,
                        "src": "712:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 355,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "712:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 358,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 377,
                        "src": "734:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 357,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "734:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 360,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 377,
                        "src": "754:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 359,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "754:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "673:100:6"
                  },
                  "returnParameters": {
                    "id": 362,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "783:0:6"
                  },
                  "scope": 463,
                  "src": "645:259:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 398,
                    "nodeType": "Block",
                    "src": "1026:115:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 387,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 379,
                              "src": "1064:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 390,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 379,
                                      "src": "1094:5:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                        "typeString": "contract IWrappedERC20"
                                      }
                                    },
                                    "id": 391,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "approve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 492,
                                    "src": "1094:13:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 392,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "1094:22:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 393,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 381,
                                  "src": "1118:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 394,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 383,
                                  "src": "1127:5:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 388,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1071:3:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 389,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "1071:22:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 395,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1071:62:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 386,
                            "name": "_callWithOptionalReturnData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 462,
                            "src": "1036:27:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IWrappedERC20_$493_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IWrappedERC20,bytes memory)"
                            }
                          },
                          "id": 396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1036:98:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 397,
                        "nodeType": "ExpressionStatement",
                        "src": "1036:98:6"
                      }
                    ]
                  },
                  "id": 399,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wrappedApprove",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 384,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 379,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 399,
                        "src": "943:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                          "typeString": "contract IWrappedERC20"
                        },
                        "typeName": {
                          "id": 378,
                          "name": "IWrappedERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 493,
                          "src": "943:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                            "typeString": "contract IWrappedERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 381,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 399,
                        "src": "972:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 380,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "972:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 383,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 399,
                        "src": "997:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 382,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "997:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "933:83:6"
                  },
                  "returnParameters": {
                    "id": 385,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1026:0:6"
                  },
                  "scope": 463,
                  "src": "910:231:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 461,
                    "nodeType": "Block",
                    "src": "1237:780:6",
                    "statements": [
                      {
                        "assignments": [
                          407
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 407,
                            "mutability": "mutable",
                            "name": "target",
                            "nodeType": "VariableDeclaration",
                            "scope": 461,
                            "src": "1247:14:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 406,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1247:7:6",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 412,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 410,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 401,
                              "src": "1272:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              }
                            ],
                            "id": 409,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1264:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 408,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1264:7:6",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1264:14:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1247:31:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 414,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 407,
                                  "src": "1296:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 415,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1284,
                                "src": "1296:17:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 416,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1296:19:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433230577261707065723a206e6f6e2d636f6e7472616374",
                              "id": 417,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1317:28:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d46911ea9505b9a71e075140669484d9822793e573c3bc4caaf050c064e8e475",
                                "typeString": "literal_string \"ERC20Wrapper: non-contract\""
                              },
                              "value": "ERC20Wrapper: non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d46911ea9505b9a71e075140669484d9822793e573c3bc4caaf050c064e8e475",
                                "typeString": "literal_string \"ERC20Wrapper: non-contract\""
                              }
                            ],
                            "id": 413,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1288:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1288:58:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 419,
                        "nodeType": "ExpressionStatement",
                        "src": "1288:58:6"
                      },
                      {
                        "assignments": [
                          421,
                          423
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 421,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 461,
                            "src": "1417:12:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 420,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1417:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 423,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "scope": 461,
                            "src": "1431:17:6",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 422,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1431:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 428,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 426,
                              "name": "callData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 403,
                              "src": "1464:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 424,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 407,
                              "src": "1452:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 425,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "src": "1452:11: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": 427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1452:21:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1416:57:6"
                      },
                      {
                        "condition": {
                          "id": 429,
                          "name": "success",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 421,
                          "src": "1487:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 459,
                          "nodeType": "Block",
                          "src": "1648:363:6",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 448,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 423,
                                    "src": "1720:4:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 449,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "1720:11:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 450,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1735:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1720:16:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 457,
                              "nodeType": "IfStatement",
                              "src": "1716:95:6",
                              "trueBody": {
                                "id": 456,
                                "nodeType": "Block",
                                "src": "1738:73:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "hexValue": "4552433230577261707065723a206f7065726174696f6e206661696c6564",
                                          "id": 453,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1763:32:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_a2693bc24863a03d4a9bc9bd3a39eb0b1e30e06ced1710d854be911a8ed7db9b",
                                            "typeString": "literal_string \"ERC20Wrapper: operation failed\""
                                          },
                                          "value": "ERC20Wrapper: operation failed"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_a2693bc24863a03d4a9bc9bd3a39eb0b1e30e06ced1710d854be911a8ed7db9b",
                                            "typeString": "literal_string \"ERC20Wrapper: operation failed\""
                                          }
                                        ],
                                        "id": 452,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "1756:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 454,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1756:40:6",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 455,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1756:40:6"
                                  }
                                ]
                              }
                            },
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "1902:99:6",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1920:23:6",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "1938:4:6"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "1932:5:6"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1932:11:6"
                                    },
                                    "variables": [
                                      {
                                        "name": "size",
                                        "nodeType": "YulTypedName",
                                        "src": "1924:4:6",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1971:2:6",
                                              "type": "",
                                              "value": "32"
                                            },
                                            {
                                              "name": "data",
                                              "nodeType": "YulIdentifier",
                                              "src": "1975:4:6"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1967:3:6"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1967:13:6"
                                        },
                                        {
                                          "name": "size",
                                          "nodeType": "YulIdentifier",
                                          "src": "1982:4:6"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1960:6:6"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1960:27:6"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1960:27:6"
                                  }
                                ]
                              },
                              "evmVersion": "istanbul",
                              "externalReferences": [
                                {
                                  "declaration": 423,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "1938:4:6",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 423,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "1975:4:6",
                                  "valueSize": 1
                                }
                              ],
                              "id": 458,
                              "nodeType": "InlineAssembly",
                              "src": "1893:108:6"
                            }
                          ]
                        },
                        "id": 460,
                        "nodeType": "IfStatement",
                        "src": "1483:528:6",
                        "trueBody": {
                          "id": 447,
                          "nodeType": "Block",
                          "src": "1496:146:6",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 433,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 430,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 423,
                                    "src": "1514:4:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 431,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "1514:11:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 432,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1529:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1514:16:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 446,
                              "nodeType": "IfStatement",
                              "src": "1510:122:6",
                              "trueBody": {
                                "id": 445,
                                "nodeType": "Block",
                                "src": "1532:100:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 437,
                                              "name": "data",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 423,
                                              "src": "1569:4:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            {
                                              "components": [
                                                {
                                                  "id": 439,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "1576:4:6",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_bool_$",
                                                    "typeString": "type(bool)"
                                                  },
                                                  "typeName": {
                                                    "id": 438,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1576:4:6",
                                                    "typeDescriptions": {}
                                                  }
                                                }
                                              ],
                                              "id": 440,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "1575:6:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bool_$",
                                                "typeString": "type(bool)"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              },
                                              {
                                                "typeIdentifier": "t_type$_t_bool_$",
                                                "typeString": "type(bool)"
                                              }
                                            ],
                                            "expression": {
                                              "id": 435,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -1,
                                              "src": "1558:3:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 436,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "decode",
                                            "nodeType": "MemberAccess",
                                            "src": "1558:10:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                              "typeString": "function () pure"
                                            }
                                          },
                                          "id": 441,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1558:24:6",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "4552433230577261707065723a206f7065726174696f6e206661696c6564",
                                          "id": 442,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1584:32:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_a2693bc24863a03d4a9bc9bd3a39eb0b1e30e06ced1710d854be911a8ed7db9b",
                                            "typeString": "literal_string \"ERC20Wrapper: operation failed\""
                                          },
                                          "value": "ERC20Wrapper: operation failed"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_a2693bc24863a03d4a9bc9bd3a39eb0b1e30e06ced1710d854be911a8ed7db9b",
                                            "typeString": "literal_string \"ERC20Wrapper: operation failed\""
                                          }
                                        ],
                                        "id": 434,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "1550:7:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 443,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1550:67:6",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 444,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1550:67:6"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 462,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callWithOptionalReturnData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 404,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 401,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 462,
                        "src": "1184:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                          "typeString": "contract IWrappedERC20"
                        },
                        "typeName": {
                          "id": 400,
                          "name": "IWrappedERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 493,
                          "src": "1184:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                            "typeString": "contract IWrappedERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 403,
                        "mutability": "mutable",
                        "name": "callData",
                        "nodeType": "VariableDeclaration",
                        "scope": 462,
                        "src": "1205:21:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 402,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1205:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1183:44:6"
                  },
                  "returnParameters": {
                    "id": 405,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1237:0:6"
                  },
                  "scope": 463,
                  "src": "1147:870:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 494,
              "src": "347:1672:6"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 493,
              "linearizedBaseContracts": [
                493
              ],
              "name": "IWrappedERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "a9059cbb",
                  "id": 472,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 468,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 465,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 472,
                        "src": "2069:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 464,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2069:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 467,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 472,
                        "src": "2081:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 466,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2081:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2068:27:6"
                  },
                  "returnParameters": {
                    "id": 471,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 470,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 472,
                        "src": "2114:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 469,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2114:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2113:6:6"
                  },
                  "scope": 493,
                  "src": "2051:69:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "23b872dd",
                  "id": 483,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 479,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 474,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 483,
                        "src": "2157:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 473,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2157:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 476,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 483,
                        "src": "2179:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 475,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2179:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 478,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 483,
                        "src": "2199:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 477,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2199:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2147:71:6"
                  },
                  "returnParameters": {
                    "id": 482,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 481,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 483,
                        "src": "2237:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 480,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2237:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2236:6:6"
                  },
                  "scope": 493,
                  "src": "2126:117:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "095ea7b3",
                  "id": 492,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 488,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 485,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 492,
                        "src": "2266:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 484,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2266:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 487,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 492,
                        "src": "2283:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 486,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2283:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2265:32:6"
                  },
                  "returnParameters": {
                    "id": 491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 490,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 492,
                        "src": "2316:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 489,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2316:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2315:6:6"
                  },
                  "scope": 493,
                  "src": "2249:73:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 494,
              "src": "2021:303:6"
            }
          ],
          "src": "33:2292:6"
        },
        "id": 6
      },
      "@animoca/ethereum-contracts-core/contracts/utils/RLPReader.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/RLPReader.sol",
          "exportedSymbols": {
            "RLPReader": [
              1106
            ]
          },
          "id": 1107,
          "license": "Apache",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 495,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "257:31:7"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 1106,
              "linearizedBaseContracts": [
                1106
              ],
              "name": "RLPReader",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 498,
                  "mutability": "constant",
                  "name": "_STRING_SHORT_START",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "314:49:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 496,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "314:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "30783830",
                    "id": 497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "359:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_128_by_1",
                      "typeString": "int_const 128"
                    },
                    "value": "0x80"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 501,
                  "mutability": "constant",
                  "name": "_STRING_LONG_START",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "369:48:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 499,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "369:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "30786238",
                    "id": 500,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "413:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_184_by_1",
                      "typeString": "int_const 184"
                    },
                    "value": "0xb8"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 504,
                  "mutability": "constant",
                  "name": "_LIST_SHORT_START",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "423:47:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 502,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "423:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "30786330",
                    "id": 503,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "466:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_192_by_1",
                      "typeString": "int_const 192"
                    },
                    "value": "0xc0"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 507,
                  "mutability": "constant",
                  "name": "_LIST_LONG_START",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "476:46:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 505,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "476:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "30786638",
                    "id": 506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "518:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_248_by_1",
                      "typeString": "int_const 248"
                    },
                    "value": "0xf8"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 510,
                  "mutability": "constant",
                  "name": "_WORD_SIZE",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "528:38:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 508,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "528:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "3332",
                    "id": 509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "564:2:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_32_by_1",
                      "typeString": "int_const 32"
                    },
                    "value": "32"
                  },
                  "visibility": "private"
                },
                {
                  "canonicalName": "RLPReader.RLPItem",
                  "id": 515,
                  "members": [
                    {
                      "constant": false,
                      "id": 512,
                      "mutability": "mutable",
                      "name": "len",
                      "nodeType": "VariableDeclaration",
                      "scope": 515,
                      "src": "598:11:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 511,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "598:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 514,
                      "mutability": "mutable",
                      "name": "memPtr",
                      "nodeType": "VariableDeclaration",
                      "scope": 515,
                      "src": "619:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 513,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "619:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "RLPItem",
                  "nodeType": "StructDefinition",
                  "scope": 1106,
                  "src": "573:67:7",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 540,
                    "nodeType": "Block",
                    "src": "775:213:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 526,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 523,
                                  "name": "item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 517,
                                  "src": "793:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 524,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "793:11:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 525,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "807:1:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "793:15:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "524c505265616465723a20494e56414c49445f42595445535f4c454e475448",
                              "id": 527,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "810:33:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4de33b8f9a6a9d4e5e530d4dcde07fdbbca520cb5f7b02f839e6ea14079ca7d6",
                                "typeString": "literal_string \"RLPReader: INVALID_BYTES_LENGTH\""
                              },
                              "value": "RLPReader: INVALID_BYTES_LENGTH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4de33b8f9a6a9d4e5e530d4dcde07fdbbca520cb5f7b02f839e6ea14079ca7d6",
                                "typeString": "literal_string \"RLPReader: INVALID_BYTES_LENGTH\""
                              }
                            ],
                            "id": 522,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "785:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "785:59:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 529,
                        "nodeType": "ExpressionStatement",
                        "src": "785:59:7"
                      },
                      {
                        "assignments": [
                          531
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 531,
                            "mutability": "mutable",
                            "name": "memPtr",
                            "nodeType": "VariableDeclaration",
                            "scope": 540,
                            "src": "854:14:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 530,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "854:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 532,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "854:14:7"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "887:49:7",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "901:25:7",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "item",
                                    "nodeType": "YulIdentifier",
                                    "src": "915:4:7"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "921:4:7",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "911:3:7"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "911:15:7"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "901:6:7"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 517,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "915:4:7",
                            "valueSize": 1
                          },
                          {
                            "declaration": 531,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "901:6:7",
                            "valueSize": 1
                          }
                        ],
                        "id": 533,
                        "nodeType": "InlineAssembly",
                        "src": "878:58:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 535,
                                "name": "item",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 517,
                                "src": "961:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 536,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "961:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 537,
                              "name": "memPtr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 531,
                              "src": "974:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 534,
                            "name": "RLPItem",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 515,
                            "src": "953:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_RLPItem_$515_storage_ptr_$",
                              "typeString": "type(struct RLPReader.RLPItem storage pointer)"
                            }
                          },
                          "id": 538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "953:28:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                            "typeString": "struct RLPReader.RLPItem memory"
                          }
                        },
                        "functionReturnParameters": 521,
                        "id": 539,
                        "nodeType": "Return",
                        "src": "946:35:7"
                      }
                    ]
                  },
                  "id": 541,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toRlpItem",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 518,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 517,
                        "mutability": "mutable",
                        "name": "item",
                        "nodeType": "VariableDeclaration",
                        "scope": 541,
                        "src": "717:17:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 516,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "717:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "716:19:7"
                  },
                  "returnParameters": {
                    "id": 521,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 520,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 541,
                        "src": "759:14:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                          "typeString": "struct RLPReader.RLPItem"
                        },
                        "typeName": {
                          "id": 519,
                          "name": "RLPItem",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 515,
                          "src": "759:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RLPItem_$515_storage_ptr",
                            "typeString": "struct RLPReader.RLPItem"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "758:16:7"
                  },
                  "scope": 1106,
                  "src": "698:290:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 635,
                    "nodeType": "Block",
                    "src": "1132:588:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 551,
                                  "name": "item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 543,
                                  "src": "1157:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                    "typeString": "struct RLPReader.RLPItem memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                    "typeString": "struct RLPReader.RLPItem memory"
                                  }
                                ],
                                "id": 550,
                                "name": "isList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 661,
                                "src": "1150:6:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$515_memory_ptr_$returns$_t_bool_$",
                                  "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bool)"
                                }
                              },
                              "id": 552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1150:12:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "524c503a204954454d5f4e4f545f4c495354",
                              "id": 553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1164:20:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3f762c63ed84f88a2227abfa808ba90032a9baef1af331408a0b1648283e1a5f",
                                "typeString": "literal_string \"RLP: ITEM_NOT_LIST\""
                              },
                              "value": "RLP: ITEM_NOT_LIST"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3f762c63ed84f88a2227abfa808ba90032a9baef1af331408a0b1648283e1a5f",
                                "typeString": "literal_string \"RLP: ITEM_NOT_LIST\""
                              }
                            ],
                            "id": 549,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1142:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1142:43:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 555,
                        "nodeType": "ExpressionStatement",
                        "src": "1142:43:7"
                      },
                      {
                        "assignments": [
                          557
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 557,
                            "mutability": "mutable",
                            "name": "items",
                            "nodeType": "VariableDeclaration",
                            "scope": 635,
                            "src": "1196:13:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 556,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1196:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 561,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 559,
                              "name": "item",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 543,
                              "src": "1221:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                "typeString": "struct RLPReader.RLPItem memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                "typeString": "struct RLPReader.RLPItem memory"
                              }
                            ],
                            "id": 558,
                            "name": "numItems",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 947,
                            "src": "1212:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$515_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (struct RLPReader.RLPItem memory) pure returns (uint256)"
                            }
                          },
                          "id": 560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1212:14:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1196:30:7"
                      },
                      {
                        "assignments": [
                          565
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 565,
                            "mutability": "mutable",
                            "name": "result",
                            "nodeType": "VariableDeclaration",
                            "scope": 635,
                            "src": "1236:23:7",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_RLPItem_$515_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct RLPReader.RLPItem[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 563,
                                "name": "RLPItem",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 515,
                                "src": "1236:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RLPItem_$515_storage_ptr",
                                  "typeString": "struct RLPReader.RLPItem"
                                }
                              },
                              "id": 564,
                              "nodeType": "ArrayTypeName",
                              "src": "1236:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_RLPItem_$515_storage_$dyn_storage_ptr",
                                "typeString": "struct RLPReader.RLPItem[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 571,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 569,
                              "name": "items",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 557,
                              "src": "1276:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 568,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1262:13:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_RLPItem_$515_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (struct RLPReader.RLPItem memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 566,
                                "name": "RLPItem",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 515,
                                "src": "1266:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RLPItem_$515_storage_ptr",
                                  "typeString": "struct RLPReader.RLPItem"
                                }
                              },
                              "id": 567,
                              "nodeType": "ArrayTypeName",
                              "src": "1266:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_RLPItem_$515_storage_$dyn_storage_ptr",
                                "typeString": "struct RLPReader.RLPItem[]"
                              }
                            }
                          },
                          "id": 570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1262:20:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$515_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct RLPReader.RLPItem memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1236:46:7"
                      },
                      {
                        "assignments": [
                          573
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 573,
                            "mutability": "mutable",
                            "name": "listLength",
                            "nodeType": "VariableDeclaration",
                            "scope": 635,
                            "src": "1292:18:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 572,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1292:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 578,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 575,
                                "name": "item",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 543,
                                "src": "1325:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                  "typeString": "struct RLPReader.RLPItem memory"
                                }
                              },
                              "id": 576,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "memPtr",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 514,
                              "src": "1325:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 574,
                            "name": "_itemLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1005,
                            "src": "1313:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1313:24:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1292:45:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 580,
                                "name": "listLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 573,
                                "src": "1355:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 581,
                                  "name": "item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 543,
                                  "src": "1369:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                    "typeString": "struct RLPReader.RLPItem memory"
                                  }
                                },
                                "id": 582,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "len",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 512,
                                "src": "1369:8:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1355:22:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "524c503a204c4953545f4c454e4754485f4d49534d41544348",
                              "id": 584,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1379:27:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b0d30ecd26d61434f6d28a3a692b8d26bc6761551898234658e3320d3ad74068",
                                "typeString": "literal_string \"RLP: LIST_LENGTH_MISMATCH\""
                              },
                              "value": "RLP: LIST_LENGTH_MISMATCH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b0d30ecd26d61434f6d28a3a692b8d26bc6761551898234658e3320d3ad74068",
                                "typeString": "literal_string \"RLP: LIST_LENGTH_MISMATCH\""
                              }
                            ],
                            "id": 579,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1347:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1347:60:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 586,
                        "nodeType": "ExpressionStatement",
                        "src": "1347:60:7"
                      },
                      {
                        "assignments": [
                          588
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 588,
                            "mutability": "mutable",
                            "name": "memPtr",
                            "nodeType": "VariableDeclaration",
                            "scope": 635,
                            "src": "1418:14:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 587,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1418:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 596,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 589,
                              "name": "item",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 543,
                              "src": "1435:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                "typeString": "struct RLPReader.RLPItem memory"
                              }
                            },
                            "id": 590,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "memPtr",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 514,
                            "src": "1435:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 592,
                                  "name": "item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 543,
                                  "src": "1464:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                    "typeString": "struct RLPReader.RLPItem memory"
                                  }
                                },
                                "id": 593,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "memPtr",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 514,
                                "src": "1464:11:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 591,
                              "name": "_payloadOffset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1060,
                              "src": "1449:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256)"
                              }
                            },
                            "id": 594,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1449:27:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1435:41:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1418:58:7"
                      },
                      {
                        "assignments": [
                          598
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 598,
                            "mutability": "mutable",
                            "name": "dataLen",
                            "nodeType": "VariableDeclaration",
                            "scope": 635,
                            "src": "1486:15:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 597,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1486:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 599,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1486:15:7"
                      },
                      {
                        "body": {
                          "id": 631,
                          "nodeType": "Block",
                          "src": "1547:143:7",
                          "statements": [
                            {
                              "expression": {
                                "id": 614,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 610,
                                  "name": "dataLen",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 598,
                                  "src": "1561:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 612,
                                      "name": "memPtr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 588,
                                      "src": "1583:6:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 611,
                                    "name": "_itemLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1005,
                                    "src": "1571:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 613,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1571:19:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1561:29:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 615,
                              "nodeType": "ExpressionStatement",
                              "src": "1561:29:7"
                            },
                            {
                              "expression": {
                                "id": 623,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 616,
                                    "name": "result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 565,
                                    "src": "1604:6:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_RLPItem_$515_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct RLPReader.RLPItem memory[] memory"
                                    }
                                  },
                                  "id": 618,
                                  "indexExpression": {
                                    "id": 617,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 601,
                                    "src": "1611:1:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1604:9:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                    "typeString": "struct RLPReader.RLPItem memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 620,
                                      "name": "dataLen",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 598,
                                      "src": "1624:7:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 621,
                                      "name": "memPtr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 588,
                                      "src": "1633:6:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 619,
                                    "name": "RLPItem",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 515,
                                    "src": "1616:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_RLPItem_$515_storage_ptr_$",
                                      "typeString": "type(struct RLPReader.RLPItem storage pointer)"
                                    }
                                  },
                                  "id": 622,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1616:24:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                    "typeString": "struct RLPReader.RLPItem memory"
                                  }
                                },
                                "src": "1604:36:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                  "typeString": "struct RLPReader.RLPItem memory"
                                }
                              },
                              "id": 624,
                              "nodeType": "ExpressionStatement",
                              "src": "1604:36:7"
                            },
                            {
                              "expression": {
                                "id": 629,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 625,
                                  "name": "memPtr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 588,
                                  "src": "1654:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 628,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 626,
                                    "name": "memPtr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 588,
                                    "src": "1663:6:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "id": 627,
                                    "name": "dataLen",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 598,
                                    "src": "1672:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1663:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1654:25:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 630,
                              "nodeType": "ExpressionStatement",
                              "src": "1654:25:7"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 604,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 601,
                            "src": "1531:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 605,
                            "name": "items",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 557,
                            "src": "1535:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1531:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 632,
                        "initializationExpression": {
                          "assignments": [
                            601
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 601,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 632,
                              "src": "1516:9:7",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 600,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1516:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 603,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 602,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1528:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1516:13:7"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1542:3:7",
                            "subExpression": {
                              "id": 607,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 601,
                              "src": "1542:1:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 609,
                          "nodeType": "ExpressionStatement",
                          "src": "1542:3:7"
                        },
                        "nodeType": "ForStatement",
                        "src": "1511:179:7"
                      },
                      {
                        "expression": {
                          "id": 633,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 565,
                          "src": "1707:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$515_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct RLPReader.RLPItem memory[] memory"
                          }
                        },
                        "functionReturnParameters": 548,
                        "id": 634,
                        "nodeType": "Return",
                        "src": "1700:13:7"
                      }
                    ]
                  },
                  "id": 636,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toList",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 544,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 543,
                        "mutability": "mutable",
                        "name": "item",
                        "nodeType": "VariableDeclaration",
                        "scope": 636,
                        "src": "1070:19:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                          "typeString": "struct RLPReader.RLPItem"
                        },
                        "typeName": {
                          "id": 542,
                          "name": "RLPItem",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 515,
                          "src": "1070:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RLPItem_$515_storage_ptr",
                            "typeString": "struct RLPReader.RLPItem"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1069:21:7"
                  },
                  "returnParameters": {
                    "id": 548,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 547,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 636,
                        "src": "1114:16:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_RLPItem_$515_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct RLPReader.RLPItem[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 545,
                            "name": "RLPItem",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 515,
                            "src": "1114:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RLPItem_$515_storage_ptr",
                              "typeString": "struct RLPReader.RLPItem"
                            }
                          },
                          "id": 546,
                          "nodeType": "ArrayTypeName",
                          "src": "1114:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$515_storage_$dyn_storage_ptr",
                            "typeString": "struct RLPReader.RLPItem[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1113:18:7"
                  },
                  "scope": 1106,
                  "src": "1054:666:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 660,
                    "nodeType": "Block",
                    "src": "1890:214:7",
                    "statements": [
                      {
                        "assignments": [
                          644
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 644,
                            "mutability": "mutable",
                            "name": "byte0",
                            "nodeType": "VariableDeclaration",
                            "scope": 660,
                            "src": "1900:11:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 643,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "1900:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 645,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1900:11:7"
                      },
                      {
                        "assignments": [
                          647
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 647,
                            "mutability": "mutable",
                            "name": "memPtr",
                            "nodeType": "VariableDeclaration",
                            "scope": 660,
                            "src": "1921:14:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 646,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1921:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 650,
                        "initialValue": {
                          "expression": {
                            "id": 648,
                            "name": "item",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 638,
                            "src": "1938:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                              "typeString": "struct RLPReader.RLPItem memory"
                            }
                          },
                          "id": 649,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "memPtr",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 514,
                          "src": "1938:11:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1921:28:7"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1968:55:7",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1982:31:7",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1996:1:7",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2005:6:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "1999:5:7"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1999:13:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "byte",
                                  "nodeType": "YulIdentifier",
                                  "src": "1991:4:7"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1991:22:7"
                              },
                              "variableNames": [
                                {
                                  "name": "byte0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1982:5:7"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 644,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1982:5:7",
                            "valueSize": 1
                          },
                          {
                            "declaration": 647,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2005:6:7",
                            "valueSize": 1
                          }
                        ],
                        "id": 651,
                        "nodeType": "InlineAssembly",
                        "src": "1959:64:7"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 652,
                            "name": "byte0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 644,
                            "src": "2037:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 653,
                            "name": "_LIST_SHORT_START",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 504,
                            "src": "2045:17:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "2037:25:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 657,
                        "nodeType": "IfStatement",
                        "src": "2033:43:7",
                        "trueBody": {
                          "expression": {
                            "hexValue": "66616c7365",
                            "id": 655,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2071:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "functionReturnParameters": 642,
                          "id": 656,
                          "nodeType": "Return",
                          "src": "2064:12:7"
                        }
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2093:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 642,
                        "id": 659,
                        "nodeType": "Return",
                        "src": "2086:11:7"
                      }
                    ]
                  },
                  "id": 661,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isList",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 639,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 638,
                        "mutability": "mutable",
                        "name": "item",
                        "nodeType": "VariableDeclaration",
                        "scope": 661,
                        "src": "1840:19:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                          "typeString": "struct RLPReader.RLPItem"
                        },
                        "typeName": {
                          "id": 637,
                          "name": "RLPItem",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 515,
                          "src": "1840:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RLPItem_$515_storage_ptr",
                            "typeString": "struct RLPReader.RLPItem"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1839:21:7"
                  },
                  "returnParameters": {
                    "id": 642,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 641,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 661,
                        "src": "1884:4:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 640,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1884:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1883:6:7"
                  },
                  "scope": 1106,
                  "src": "1824:280:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 691,
                    "nodeType": "Block",
                    "src": "2279:212:7",
                    "statements": [
                      {
                        "assignments": [
                          670
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 670,
                            "mutability": "mutable",
                            "name": "result",
                            "nodeType": "VariableDeclaration",
                            "scope": 691,
                            "src": "2289:19:7",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 669,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2289:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 676,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 673,
                                "name": "item",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 664,
                                "src": "2321:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                  "typeString": "struct RLPReader.RLPItem memory"
                                }
                              },
                              "id": 674,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "len",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 512,
                              "src": "2321:8:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 672,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2311:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 671,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2315:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2311:19:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2289:41:7"
                      },
                      {
                        "assignments": [
                          678
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 678,
                            "mutability": "mutable",
                            "name": "ptr",
                            "nodeType": "VariableDeclaration",
                            "scope": 691,
                            "src": "2341:11:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 677,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2341:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 679,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2341:11:7"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2371:48:7",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2385:24:7",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2396:4:7",
                                    "type": "",
                                    "value": "0x20"
                                  },
                                  {
                                    "name": "result",
                                    "nodeType": "YulIdentifier",
                                    "src": "2402:6:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2392:3:7"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2392:17:7"
                              },
                              "variableNames": [
                                {
                                  "name": "ptr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2385:3:7"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 678,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2385:3:7",
                            "valueSize": 1
                          },
                          {
                            "declaration": 670,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2402:6:7",
                            "valueSize": 1
                          }
                        ],
                        "id": 680,
                        "nodeType": "InlineAssembly",
                        "src": "2362:57:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 682,
                                "name": "item",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 664,
                                "src": "2434:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                  "typeString": "struct RLPReader.RLPItem memory"
                                }
                              },
                              "id": 683,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "memPtr",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 514,
                              "src": "2434:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 684,
                              "name": "ptr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 678,
                              "src": "2447:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 685,
                                "name": "item",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 664,
                                "src": "2452:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                  "typeString": "struct RLPReader.RLPItem memory"
                                }
                              },
                              "id": 686,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "len",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 512,
                              "src": "2452:8:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 681,
                            "name": "copy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1105,
                            "src": "2429:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256) pure"
                            }
                          },
                          "id": 687,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2429:32:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 688,
                        "nodeType": "ExpressionStatement",
                        "src": "2429:32:7"
                      },
                      {
                        "expression": {
                          "id": 689,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "2478:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 668,
                        "id": 690,
                        "nodeType": "Return",
                        "src": "2471:13:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 662,
                    "nodeType": "StructuredDocumentation",
                    "src": "2110:43:7",
                    "text": "RLPItem conversions into data types *"
                  },
                  "id": 692,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toRlpBytes",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 665,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 664,
                        "mutability": "mutable",
                        "name": "item",
                        "nodeType": "VariableDeclaration",
                        "scope": 692,
                        "src": "2221:19:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                          "typeString": "struct RLPReader.RLPItem"
                        },
                        "typeName": {
                          "id": 663,
                          "name": "RLPItem",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 515,
                          "src": "2221:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RLPItem_$515_storage_ptr",
                            "typeString": "struct RLPReader.RLPItem"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2220:21:7"
                  },
                  "returnParameters": {
                    "id": 668,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 667,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 692,
                        "src": "2265:12:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 666,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2265:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2264:14:7"
                  },
                  "scope": 1106,
                  "src": "2201:290:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 722,
                    "nodeType": "Block",
                    "src": "2569:212:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 703,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "2587:13:7",
                              "subExpression": {
                                "arguments": [
                                  {
                                    "id": 701,
                                    "name": "item",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 694,
                                    "src": "2595:4:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                      "typeString": "struct RLPReader.RLPItem memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                      "typeString": "struct RLPReader.RLPItem memory"
                                    }
                                  ],
                                  "id": 700,
                                  "name": "isList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 661,
                                  "src": "2588:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$515_memory_ptr_$returns$_t_bool_$",
                                    "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bool)"
                                  }
                                },
                                "id": 702,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2588:12:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "524c503a204445434f44494e475f4c4953545f41535f41444452455353",
                              "id": 704,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2602:31:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_33ec73e71c3f884f999095540ea696ac12c08de845048a837bc3811b7a56e87a",
                                "typeString": "literal_string \"RLP: DECODING_LIST_AS_ADDRESS\""
                              },
                              "value": "RLP: DECODING_LIST_AS_ADDRESS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_33ec73e71c3f884f999095540ea696ac12c08de845048a837bc3811b7a56e87a",
                                "typeString": "literal_string \"RLP: DECODING_LIST_AS_ADDRESS\""
                              }
                            ],
                            "id": 699,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2579:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 705,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2579:55:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 706,
                        "nodeType": "ExpressionStatement",
                        "src": "2579:55:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 711,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 708,
                                  "name": "item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 694,
                                  "src": "2692:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                    "typeString": "struct RLPReader.RLPItem memory"
                                  }
                                },
                                "id": 709,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "len",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 512,
                                "src": "2692:8:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "3231",
                                "id": 710,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2704:2:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_21_by_1",
                                  "typeString": "int_const 21"
                                },
                                "value": "21"
                              },
                              "src": "2692:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "524c503a20494e56414c49445f414444524553535f4c454e",
                              "id": 712,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2708:26:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2b7ae448f3c86641fd2c352d0fd51495f3a3e3461f3a71ae4b05126f2fe3d71e",
                                "typeString": "literal_string \"RLP: INVALID_ADDRESS_LEN\""
                              },
                              "value": "RLP: INVALID_ADDRESS_LEN"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2b7ae448f3c86641fd2c352d0fd51495f3a3e3461f3a71ae4b05126f2fe3d71e",
                                "typeString": "literal_string \"RLP: INVALID_ADDRESS_LEN\""
                              }
                            ],
                            "id": 707,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2684:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2684:51:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 714,
                        "nodeType": "ExpressionStatement",
                        "src": "2684:51:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 718,
                                  "name": "item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 694,
                                  "src": "2768:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                    "typeString": "struct RLPReader.RLPItem memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                    "typeString": "struct RLPReader.RLPItem memory"
                                  }
                                ],
                                "id": 717,
                                "name": "toUint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 789,
                                "src": "2761:6:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$515_memory_ptr_$returns$_t_uint256_$",
                                  "typeString": "function (struct RLPReader.RLPItem memory) pure returns (uint256)"
                                }
                              },
                              "id": 719,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2761:12:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 716,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2753:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 715,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2753:7:7",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2753:21:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 698,
                        "id": 721,
                        "nodeType": "Return",
                        "src": "2746:28:7"
                      }
                    ]
                  },
                  "id": 723,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 695,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 694,
                        "mutability": "mutable",
                        "name": "item",
                        "nodeType": "VariableDeclaration",
                        "scope": 723,
                        "src": "2516:19:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                          "typeString": "struct RLPReader.RLPItem"
                        },
                        "typeName": {
                          "id": 693,
                          "name": "RLPItem",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 515,
                          "src": "2516:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RLPItem_$515_storage_ptr",
                            "typeString": "struct RLPReader.RLPItem"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2515:21:7"
                  },
                  "returnParameters": {
                    "id": 698,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 697,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 723,
                        "src": "2560:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 696,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2560:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2559:9:7"
                  },
                  "scope": 1106,
                  "src": "2497:284:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 788,
                    "nodeType": "Block",
                    "src": "2856:670:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 734,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "2874:13:7",
                              "subExpression": {
                                "arguments": [
                                  {
                                    "id": 732,
                                    "name": "item",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 725,
                                    "src": "2882:4:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                      "typeString": "struct RLPReader.RLPItem memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                      "typeString": "struct RLPReader.RLPItem memory"
                                    }
                                  ],
                                  "id": 731,
                                  "name": "isList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 661,
                                  "src": "2875:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$515_memory_ptr_$returns$_t_bool_$",
                                    "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bool)"
                                  }
                                },
                                "id": 733,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2875:12:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "524c503a204445434f44494e475f4c4953545f41535f55494e54",
                              "id": 735,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2889:28:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9db507400bc71caa185f350f84bc028cf1f9b5ceb37427b462f5a50a9d1183a7",
                                "typeString": "literal_string \"RLP: DECODING_LIST_AS_UINT\""
                              },
                              "value": "RLP: DECODING_LIST_AS_UINT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9db507400bc71caa185f350f84bc028cf1f9b5ceb37427b462f5a50a9d1183a7",
                                "typeString": "literal_string \"RLP: DECODING_LIST_AS_UINT\""
                              }
                            ],
                            "id": 730,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2866:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2866:52:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 737,
                        "nodeType": "ExpressionStatement",
                        "src": "2866:52:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 739,
                                  "name": "item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 725,
                                  "src": "2936:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                    "typeString": "struct RLPReader.RLPItem memory"
                                  }
                                },
                                "id": 740,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "len",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 512,
                                "src": "2936:8:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "hexValue": "3333",
                                "id": 741,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2948:2:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_33_by_1",
                                  "typeString": "int_const 33"
                                },
                                "value": "33"
                              },
                              "src": "2936:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "524c503a20494e56414c49445f55494e545f4c454e",
                              "id": 743,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2952:23:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c374ce9d4f16820f7855ea9cd0a9e367e2cfc46157f762135af3e95bec80d4a6",
                                "typeString": "literal_string \"RLP: INVALID_UINT_LEN\""
                              },
                              "value": "RLP: INVALID_UINT_LEN"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c374ce9d4f16820f7855ea9cd0a9e367e2cfc46157f762135af3e95bec80d4a6",
                                "typeString": "literal_string \"RLP: INVALID_UINT_LEN\""
                              }
                            ],
                            "id": 738,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2928:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2928:48:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 745,
                        "nodeType": "ExpressionStatement",
                        "src": "2928:48:7"
                      },
                      {
                        "assignments": [
                          747
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 747,
                            "mutability": "mutable",
                            "name": "itemLength",
                            "nodeType": "VariableDeclaration",
                            "scope": 788,
                            "src": "2987:18:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 746,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2987:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 752,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 749,
                                "name": "item",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 725,
                                "src": "3020:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                  "typeString": "struct RLPReader.RLPItem memory"
                                }
                              },
                              "id": 750,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "memPtr",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 514,
                              "src": "3020:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 748,
                            "name": "_itemLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1005,
                            "src": "3008:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 751,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3008:24:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2987:45:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 757,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 754,
                                "name": "itemLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 747,
                                "src": "3050:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 755,
                                  "name": "item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 725,
                                  "src": "3064:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                    "typeString": "struct RLPReader.RLPItem memory"
                                  }
                                },
                                "id": 756,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "len",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 512,
                                "src": "3064:8:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3050:22:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "524c503a2055494e545f4c454e5f4d49534d41544348",
                              "id": 758,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3074:24:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_89ed98c71d96c179a46aee8b26548edcc60c407488afff28e906d5865652e08b",
                                "typeString": "literal_string \"RLP: UINT_LEN_MISMATCH\""
                              },
                              "value": "RLP: UINT_LEN_MISMATCH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_89ed98c71d96c179a46aee8b26548edcc60c407488afff28e906d5865652e08b",
                                "typeString": "literal_string \"RLP: UINT_LEN_MISMATCH\""
                              }
                            ],
                            "id": 753,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3042:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 759,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3042:57:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 760,
                        "nodeType": "ExpressionStatement",
                        "src": "3042:57:7"
                      },
                      {
                        "assignments": [
                          762
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 762,
                            "mutability": "mutable",
                            "name": "offset",
                            "nodeType": "VariableDeclaration",
                            "scope": 788,
                            "src": "3110:14:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 761,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3110:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 767,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 764,
                                "name": "item",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 725,
                                "src": "3142:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                  "typeString": "struct RLPReader.RLPItem memory"
                                }
                              },
                              "id": 765,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "memPtr",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 514,
                              "src": "3142:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 763,
                            "name": "_payloadOffset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1060,
                            "src": "3127:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 766,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3127:27:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3110:44:7"
                      },
                      {
                        "assignments": [
                          769
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 769,
                            "mutability": "mutable",
                            "name": "len",
                            "nodeType": "VariableDeclaration",
                            "scope": 788,
                            "src": "3164:11:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 768,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3164:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 774,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 773,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 770,
                              "name": "item",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 725,
                              "src": "3178:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                "typeString": "struct RLPReader.RLPItem memory"
                              }
                            },
                            "id": 771,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 512,
                            "src": "3178:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 772,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 762,
                            "src": "3189:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3178:17:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3164:31:7"
                      },
                      {
                        "assignments": [
                          776
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 776,
                            "mutability": "mutable",
                            "name": "result",
                            "nodeType": "VariableDeclaration",
                            "scope": 788,
                            "src": "3205:14:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 775,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3205:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 777,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3205:14:7"
                      },
                      {
                        "assignments": [
                          779
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 779,
                            "mutability": "mutable",
                            "name": "memPtr",
                            "nodeType": "VariableDeclaration",
                            "scope": 788,
                            "src": "3229:14:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 778,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3229:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 784,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 780,
                              "name": "item",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 725,
                              "src": "3246:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                "typeString": "struct RLPReader.RLPItem memory"
                              }
                            },
                            "id": 781,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "memPtr",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 514,
                            "src": "3246:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 782,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 762,
                            "src": "3260:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3246:20:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3229:37:7"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "3285:211:7",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3299:23:7",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3315:6:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3309:5:7"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3309:13:7"
                              },
                              "variableNames": [
                                {
                                  "name": "result",
                                  "nodeType": "YulIdentifier",
                                  "src": "3299:6:7"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3409:77:7",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3427:45:7",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "result",
                                          "nodeType": "YulIdentifier",
                                          "src": "3441:6:7"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "3453:3:7",
                                              "type": "",
                                              "value": "256"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "3462:2:7",
                                                  "type": "",
                                                  "value": "32"
                                                },
                                                {
                                                  "name": "len",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3466:3:7"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "3458:3:7"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3458:12:7"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "exp",
                                            "nodeType": "YulIdentifier",
                                            "src": "3449:3:7"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3449:22:7"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "div",
                                        "nodeType": "YulIdentifier",
                                        "src": "3437:3:7"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3437:35:7"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nodeType": "YulIdentifier",
                                        "src": "3427:6:7"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "3400:3:7"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3405:2:7",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3397:2:7"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3397:11:7"
                              },
                              "nodeType": "YulIf",
                              "src": "3394:2:7"
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 769,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3400:3:7",
                            "valueSize": 1
                          },
                          {
                            "declaration": 769,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3466:3:7",
                            "valueSize": 1
                          },
                          {
                            "declaration": 779,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3315:6:7",
                            "valueSize": 1
                          },
                          {
                            "declaration": 776,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3299:6:7",
                            "valueSize": 1
                          },
                          {
                            "declaration": 776,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3427:6:7",
                            "valueSize": 1
                          },
                          {
                            "declaration": 776,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3441:6:7",
                            "valueSize": 1
                          }
                        ],
                        "id": 785,
                        "nodeType": "InlineAssembly",
                        "src": "3276:220:7"
                      },
                      {
                        "expression": {
                          "id": 786,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 776,
                          "src": "3513:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 729,
                        "id": 787,
                        "nodeType": "Return",
                        "src": "3506:13:7"
                      }
                    ]
                  },
                  "id": 789,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 726,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 725,
                        "mutability": "mutable",
                        "name": "item",
                        "nodeType": "VariableDeclaration",
                        "scope": 789,
                        "src": "2803:19:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                          "typeString": "struct RLPReader.RLPItem"
                        },
                        "typeName": {
                          "id": 724,
                          "name": "RLPItem",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 515,
                          "src": "2803:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RLPItem_$515_storage_ptr",
                            "typeString": "struct RLPReader.RLPItem"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2802:21:7"
                  },
                  "returnParameters": {
                    "id": 729,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 728,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 789,
                        "src": "2847:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 727,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2847:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2846:9:7"
                  },
                  "scope": 1106,
                  "src": "2787:739:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 832,
                    "nodeType": "Block",
                    "src": "3638:384:7",
                    "statements": [
                      {
                        "assignments": [
                          797
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 797,
                            "mutability": "mutable",
                            "name": "itemLength",
                            "nodeType": "VariableDeclaration",
                            "scope": 832,
                            "src": "3648:18:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 796,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3648:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 802,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 799,
                                "name": "item",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 791,
                                "src": "3681:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                  "typeString": "struct RLPReader.RLPItem memory"
                                }
                              },
                              "id": 800,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "memPtr",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 514,
                              "src": "3681:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 798,
                            "name": "_itemLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1005,
                            "src": "3669:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3669:24:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3648:45:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 807,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 804,
                                "name": "itemLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 797,
                                "src": "3711:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 805,
                                  "name": "item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 791,
                                  "src": "3725:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                    "typeString": "struct RLPReader.RLPItem memory"
                                  }
                                },
                                "id": 806,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "len",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 512,
                                "src": "3725:8:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3711:22:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "524c503a2055494e545f5354524943545f4c454e5f4d49534d41544348",
                              "id": 808,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3735:31:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_03b02ed64630ab36ecef1f3dac55b9e67590446963878229a3fb043b9a314a0f",
                                "typeString": "literal_string \"RLP: UINT_STRICT_LEN_MISMATCH\""
                              },
                              "value": "RLP: UINT_STRICT_LEN_MISMATCH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_03b02ed64630ab36ecef1f3dac55b9e67590446963878229a3fb043b9a314a0f",
                                "typeString": "literal_string \"RLP: UINT_STRICT_LEN_MISMATCH\""
                              }
                            ],
                            "id": 803,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3703:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3703:64:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 810,
                        "nodeType": "ExpressionStatement",
                        "src": "3703:64:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 815,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 812,
                                  "name": "item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 791,
                                  "src": "3812:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                    "typeString": "struct RLPReader.RLPItem memory"
                                  }
                                },
                                "id": 813,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "len",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 512,
                                "src": "3812:8:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "3333",
                                "id": 814,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3824:2:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_33_by_1",
                                  "typeString": "int_const 33"
                                },
                                "value": "33"
                              },
                              "src": "3812:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "524c503a20494e56414c49445f55494e545f5354524943545f4c454e",
                              "id": 816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3828:30:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cac32073b0c8635d292478e7135d927bdaa8f43d909dc6743e3f8ce1a6ef8e1c",
                                "typeString": "literal_string \"RLP: INVALID_UINT_STRICT_LEN\""
                              },
                              "value": "RLP: INVALID_UINT_STRICT_LEN"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cac32073b0c8635d292478e7135d927bdaa8f43d909dc6743e3f8ce1a6ef8e1c",
                                "typeString": "literal_string \"RLP: INVALID_UINT_STRICT_LEN\""
                              }
                            ],
                            "id": 811,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3804:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3804:55:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 818,
                        "nodeType": "ExpressionStatement",
                        "src": "3804:55:7"
                      },
                      {
                        "assignments": [
                          820
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 820,
                            "mutability": "mutable",
                            "name": "result",
                            "nodeType": "VariableDeclaration",
                            "scope": 832,
                            "src": "3870:14:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 819,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3870:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 821,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3870:14:7"
                      },
                      {
                        "assignments": [
                          823
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 823,
                            "mutability": "mutable",
                            "name": "memPtr",
                            "nodeType": "VariableDeclaration",
                            "scope": 832,
                            "src": "3894:14:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 822,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3894:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 828,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 827,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 824,
                              "name": "item",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 791,
                              "src": "3911:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                "typeString": "struct RLPReader.RLPItem memory"
                              }
                            },
                            "id": 825,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "memPtr",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 514,
                            "src": "3911:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 826,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3925:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3911:15:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3894:32:7"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "3945:47:7",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3959:23:7",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3975:6:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3969:5:7"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3969:13:7"
                              },
                              "variableNames": [
                                {
                                  "name": "result",
                                  "nodeType": "YulIdentifier",
                                  "src": "3959:6:7"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 823,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3975:6:7",
                            "valueSize": 1
                          },
                          {
                            "declaration": 820,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3959:6:7",
                            "valueSize": 1
                          }
                        ],
                        "id": 829,
                        "nodeType": "InlineAssembly",
                        "src": "3936:56:7"
                      },
                      {
                        "expression": {
                          "id": 830,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 820,
                          "src": "4009:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 795,
                        "id": 831,
                        "nodeType": "Return",
                        "src": "4002:13:7"
                      }
                    ]
                  },
                  "id": 833,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUintStrict",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 792,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 791,
                        "mutability": "mutable",
                        "name": "item",
                        "nodeType": "VariableDeclaration",
                        "scope": 833,
                        "src": "3585:19:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                          "typeString": "struct RLPReader.RLPItem"
                        },
                        "typeName": {
                          "id": 790,
                          "name": "RLPItem",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 515,
                          "src": "3585:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RLPItem_$515_storage_ptr",
                            "typeString": "struct RLPReader.RLPItem"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3584:21:7"
                  },
                  "returnParameters": {
                    "id": 795,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 794,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 833,
                        "src": "3629:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 793,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3629:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3628:9:7"
                  },
                  "scope": 1106,
                  "src": "3563:459:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 891,
                    "nodeType": "Block",
                    "src": "4103:457:7",
                    "statements": [
                      {
                        "assignments": [
                          841
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 841,
                            "mutability": "mutable",
                            "name": "listLength",
                            "nodeType": "VariableDeclaration",
                            "scope": 891,
                            "src": "4113:18:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 840,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4113:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 846,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 843,
                                "name": "item",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 835,
                                "src": "4146:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                  "typeString": "struct RLPReader.RLPItem memory"
                                }
                              },
                              "id": 844,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "memPtr",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 514,
                              "src": "4146:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 842,
                            "name": "_itemLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1005,
                            "src": "4134:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4134:24:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4113:45:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 851,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 848,
                                "name": "listLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 841,
                                "src": "4176:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 849,
                                  "name": "item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 835,
                                  "src": "4190:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                    "typeString": "struct RLPReader.RLPItem memory"
                                  }
                                },
                                "id": 850,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "len",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 512,
                                "src": "4190:8:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4176:22:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "524c503a2042595445535f4c454e5f4d49534d41544348",
                              "id": 852,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4200:25:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_88e2b7dde8e192cd4dde00fa1ee0108f89d22b1df1ec1103f59f8830cd169534",
                                "typeString": "literal_string \"RLP: BYTES_LEN_MISMATCH\""
                              },
                              "value": "RLP: BYTES_LEN_MISMATCH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_88e2b7dde8e192cd4dde00fa1ee0108f89d22b1df1ec1103f59f8830cd169534",
                                "typeString": "literal_string \"RLP: BYTES_LEN_MISMATCH\""
                              }
                            ],
                            "id": 847,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4168:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4168:58:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 854,
                        "nodeType": "ExpressionStatement",
                        "src": "4168:58:7"
                      },
                      {
                        "assignments": [
                          856
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 856,
                            "mutability": "mutable",
                            "name": "offset",
                            "nodeType": "VariableDeclaration",
                            "scope": 891,
                            "src": "4236:14:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 855,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4236:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 861,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 858,
                                "name": "item",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 835,
                                "src": "4268:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                  "typeString": "struct RLPReader.RLPItem memory"
                                }
                              },
                              "id": 859,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "memPtr",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 514,
                              "src": "4268:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 857,
                            "name": "_payloadOffset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1060,
                            "src": "4253:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 860,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4253:27:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4236:44:7"
                      },
                      {
                        "assignments": [
                          863
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 863,
                            "mutability": "mutable",
                            "name": "len",
                            "nodeType": "VariableDeclaration",
                            "scope": 891,
                            "src": "4291:11:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 862,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4291:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 868,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 864,
                              "name": "item",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 835,
                              "src": "4305:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                "typeString": "struct RLPReader.RLPItem memory"
                              }
                            },
                            "id": 865,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 512,
                            "src": "4305:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 866,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 856,
                            "src": "4316:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4305:17:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4291:31:7"
                      },
                      {
                        "assignments": [
                          870
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 870,
                            "mutability": "mutable",
                            "name": "result",
                            "nodeType": "VariableDeclaration",
                            "scope": 891,
                            "src": "4347:19:7",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 869,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4347:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 875,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 873,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 863,
                              "src": "4379:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 872,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4369:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 871,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4373:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4369:14:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4347:36:7"
                      },
                      {
                        "assignments": [
                          877
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 877,
                            "mutability": "mutable",
                            "name": "destPtr",
                            "nodeType": "VariableDeclaration",
                            "scope": 891,
                            "src": "4394:15:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 876,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4394:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 878,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4394:15:7"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "4428:52:7",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4442:28:7",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4457:4:7",
                                    "type": "",
                                    "value": "0x20"
                                  },
                                  {
                                    "name": "result",
                                    "nodeType": "YulIdentifier",
                                    "src": "4463:6:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4453:3:7"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4453:17:7"
                              },
                              "variableNames": [
                                {
                                  "name": "destPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "4442:7:7"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 877,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4442:7:7",
                            "valueSize": 1
                          },
                          {
                            "declaration": 870,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4463:6:7",
                            "valueSize": 1
                          }
                        ],
                        "id": 879,
                        "nodeType": "InlineAssembly",
                        "src": "4419:61:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 881,
                                  "name": "item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 835,
                                  "src": "4495:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                    "typeString": "struct RLPReader.RLPItem memory"
                                  }
                                },
                                "id": 882,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "memPtr",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 514,
                                "src": "4495:11:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "id": 883,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 856,
                                "src": "4509:6:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4495:20:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 885,
                              "name": "destPtr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 877,
                              "src": "4517:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 886,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 863,
                              "src": "4526:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 880,
                            "name": "copy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1105,
                            "src": "4490:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256) pure"
                            }
                          },
                          "id": 887,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4490:40:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 888,
                        "nodeType": "ExpressionStatement",
                        "src": "4490:40:7"
                      },
                      {
                        "expression": {
                          "id": 889,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 870,
                          "src": "4547:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 839,
                        "id": 890,
                        "nodeType": "Return",
                        "src": "4540:13:7"
                      }
                    ]
                  },
                  "id": 892,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toBytes",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 836,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 835,
                        "mutability": "mutable",
                        "name": "item",
                        "nodeType": "VariableDeclaration",
                        "scope": 892,
                        "src": "4045:19:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                          "typeString": "struct RLPReader.RLPItem"
                        },
                        "typeName": {
                          "id": 834,
                          "name": "RLPItem",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 515,
                          "src": "4045:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RLPItem_$515_storage_ptr",
                            "typeString": "struct RLPReader.RLPItem"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4044:21:7"
                  },
                  "returnParameters": {
                    "id": 839,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 838,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 892,
                        "src": "4089:12:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 837,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4089:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4088:14:7"
                  },
                  "scope": 1106,
                  "src": "4028:532:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 946,
                    "nodeType": "Block",
                    "src": "4738:559:7",
                    "statements": [
                      {
                        "assignments": [
                          900
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 900,
                            "mutability": "mutable",
                            "name": "count",
                            "nodeType": "VariableDeclaration",
                            "scope": 946,
                            "src": "4920:13:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 899,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4920:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 902,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4936:1:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4920:17:7"
                      },
                      {
                        "assignments": [
                          904
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 904,
                            "mutability": "mutable",
                            "name": "currPtr",
                            "nodeType": "VariableDeclaration",
                            "scope": 946,
                            "src": "4947:15:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 903,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4947:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 912,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 911,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 905,
                              "name": "item",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 894,
                              "src": "4965:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                "typeString": "struct RLPReader.RLPItem memory"
                              }
                            },
                            "id": 906,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "memPtr",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 514,
                            "src": "4965:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 908,
                                  "name": "item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 894,
                                  "src": "4994:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                    "typeString": "struct RLPReader.RLPItem memory"
                                  }
                                },
                                "id": 909,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "memPtr",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 514,
                                "src": "4994:11:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 907,
                              "name": "_payloadOffset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1060,
                              "src": "4979:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256)"
                              }
                            },
                            "id": 910,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4979:27:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4965:41:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4947:59:7"
                      },
                      {
                        "assignments": [
                          914
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 914,
                            "mutability": "mutable",
                            "name": "endPtr",
                            "nodeType": "VariableDeclaration",
                            "scope": 946,
                            "src": "5016:14:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 913,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5016:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 920,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 915,
                              "name": "item",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 894,
                              "src": "5033:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                "typeString": "struct RLPReader.RLPItem memory"
                              }
                            },
                            "id": 916,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "memPtr",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 514,
                            "src": "5033:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "expression": {
                              "id": 917,
                              "name": "item",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 894,
                              "src": "5047:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                "typeString": "struct RLPReader.RLPItem memory"
                              }
                            },
                            "id": 918,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 512,
                            "src": "5047:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5033:22:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5016:39:7"
                      },
                      {
                        "body": {
                          "id": 942,
                          "nodeType": "Block",
                          "src": "5090:178:7",
                          "statements": [
                            {
                              "expression": {
                                "id": 930,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 924,
                                  "name": "currPtr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 904,
                                  "src": "5104:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 929,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 925,
                                    "name": "currPtr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 904,
                                    "src": "5114:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "id": 927,
                                        "name": "currPtr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 904,
                                        "src": "5136:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 926,
                                      "name": "_itemLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1005,
                                      "src": "5124:11:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 928,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5124:20:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5114:30:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5104:40:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 931,
                              "nodeType": "ExpressionStatement",
                              "src": "5104:40:7"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 935,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 933,
                                      "name": "currPtr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 904,
                                      "src": "5187:7:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "id": 934,
                                      "name": "endPtr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 914,
                                      "src": "5198:6:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5187:17:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "524c503a204e554d5f4954454d535f4c454e5f4d49534d41544348",
                                    "id": 936,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5206:29:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_b6843624a3fea1ac7ecce9826be3bcd721faa888eb3969bd353664ae6583820e",
                                      "typeString": "literal_string \"RLP: NUM_ITEMS_LEN_MISMATCH\""
                                    },
                                    "value": "RLP: NUM_ITEMS_LEN_MISMATCH"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_b6843624a3fea1ac7ecce9826be3bcd721faa888eb3969bd353664ae6583820e",
                                      "typeString": "literal_string \"RLP: NUM_ITEMS_LEN_MISMATCH\""
                                    }
                                  ],
                                  "id": 932,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "5179:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 937,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5179:57:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 938,
                              "nodeType": "ExpressionStatement",
                              "src": "5179:57:7"
                            },
                            {
                              "expression": {
                                "id": 940,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "5250:7:7",
                                "subExpression": {
                                  "id": 939,
                                  "name": "count",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 900,
                                  "src": "5250:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 941,
                              "nodeType": "ExpressionStatement",
                              "src": "5250:7:7"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 921,
                            "name": "currPtr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 904,
                            "src": "5072:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 922,
                            "name": "endPtr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 914,
                            "src": "5082:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5072:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 943,
                        "nodeType": "WhileStatement",
                        "src": "5065:203:7"
                      },
                      {
                        "expression": {
                          "id": 944,
                          "name": "count",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 900,
                          "src": "5285:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 898,
                        "id": 945,
                        "nodeType": "Return",
                        "src": "5278:12:7"
                      }
                    ]
                  },
                  "id": 947,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "numItems",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 895,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 894,
                        "mutability": "mutable",
                        "name": "item",
                        "nodeType": "VariableDeclaration",
                        "scope": 947,
                        "src": "4686:19:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                          "typeString": "struct RLPReader.RLPItem"
                        },
                        "typeName": {
                          "id": 893,
                          "name": "RLPItem",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 515,
                          "src": "4686:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RLPItem_$515_storage_ptr",
                            "typeString": "struct RLPReader.RLPItem"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4685:21:7"
                  },
                  "returnParameters": {
                    "id": 898,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 897,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 947,
                        "src": "4729:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 896,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4729:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4728:9:7"
                  },
                  "scope": 1106,
                  "src": "4668:629:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1004,
                    "nodeType": "Block",
                    "src": "5414:1169:7",
                    "statements": [
                      {
                        "assignments": [
                          955
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 955,
                            "mutability": "mutable",
                            "name": "itemLen",
                            "nodeType": "VariableDeclaration",
                            "scope": 1004,
                            "src": "5424:15:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 954,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5424:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 956,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5424:15:7"
                      },
                      {
                        "assignments": [
                          958
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 958,
                            "mutability": "mutable",
                            "name": "byte0",
                            "nodeType": "VariableDeclaration",
                            "scope": 1004,
                            "src": "5449:13:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 957,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5449:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 959,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5449:13:7"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "5481:55:7",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5495:31:7",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5509:1:7",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5518:6:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "5512:5:7"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5512:13:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "byte",
                                  "nodeType": "YulIdentifier",
                                  "src": "5504:4:7"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5504:22:7"
                              },
                              "variableNames": [
                                {
                                  "name": "byte0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5495:5:7"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 958,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5495:5:7",
                            "valueSize": 1
                          },
                          {
                            "declaration": 949,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5518:6:7",
                            "valueSize": 1
                          }
                        ],
                        "id": 960,
                        "nodeType": "InlineAssembly",
                        "src": "5472:64:7"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 961,
                            "name": "byte0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 958,
                            "src": "5550:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 962,
                            "name": "_STRING_SHORT_START",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 498,
                            "src": "5558:19:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "5550:27:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 968,
                              "name": "byte0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 958,
                              "src": "5609:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "id": 969,
                              "name": "_STRING_LONG_START",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 501,
                              "src": "5617:18:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "5609:26:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 981,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 979,
                                "name": "byte0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 958,
                                "src": "5697:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 980,
                                "name": "_LIST_SHORT_START",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 504,
                                "src": "5705:17:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "5697:25:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 986,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 984,
                                  "name": "byte0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 958,
                                  "src": "6143:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 985,
                                  "name": "_LIST_LONG_START",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 507,
                                  "src": "6151:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "6143:24:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 997,
                                "nodeType": "Block",
                                "src": "6239:313:7",
                                "statements": [
                                  {
                                    "AST": {
                                      "nodeType": "YulBlock",
                                      "src": "6262:280:7",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "6280:31:7",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "byte0",
                                                "nodeType": "YulIdentifier",
                                                "src": "6299:5:7"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6306:4:7",
                                                "type": "",
                                                "value": "0xf7"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "6295:3:7"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6295:16:7"
                                          },
                                          "variables": [
                                            {
                                              "name": "byteLen",
                                              "nodeType": "YulTypedName",
                                              "src": "6284:7:7",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "6328:24:7",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "memPtr",
                                                "nodeType": "YulIdentifier",
                                                "src": "6342:6:7"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6350:1:7",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "6338:3:7"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6338:14:7"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "memPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "6328:6:7"
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "6370:61:7",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "memPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6395:6:7"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6389:5:7"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6389:13:7"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "6408:3:7",
                                                    "type": "",
                                                    "value": "256"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6417:2:7",
                                                        "type": "",
                                                        "value": "32"
                                                      },
                                                      {
                                                        "name": "byteLen",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6421:7:7"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "sub",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6413:3:7"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "6413:16:7"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "exp",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6404:3:7"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6404:26:7"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "div",
                                              "nodeType": "YulIdentifier",
                                              "src": "6385:3:7"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6385:46:7"
                                          },
                                          "variables": [
                                            {
                                              "name": "dataLen",
                                              "nodeType": "YulTypedName",
                                              "src": "6374:7:7",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "6488:40:7",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "dataLen",
                                                "nodeType": "YulIdentifier",
                                                "src": "6503:7:7"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "byteLen",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6516:7:7"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "6525:1:7",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6512:3:7"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6512:15:7"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "6499:3:7"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6499:29:7"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "itemLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "6488:7:7"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "evmVersion": "istanbul",
                                    "externalReferences": [
                                      {
                                        "declaration": 958,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "6299:5:7",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 955,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "6488:7:7",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 949,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "6328:6:7",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 949,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "6342:6:7",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 949,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "6395:6:7",
                                        "valueSize": 1
                                      }
                                    ],
                                    "id": 996,
                                    "nodeType": "InlineAssembly",
                                    "src": "6253:289:7"
                                  }
                                ]
                              },
                              "id": 998,
                              "nodeType": "IfStatement",
                              "src": "6139:413:7",
                              "trueBody": {
                                "id": 995,
                                "nodeType": "Block",
                                "src": "6169:64:7",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 993,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 987,
                                        "name": "itemLen",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 955,
                                        "src": "6183:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 992,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 990,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 988,
                                            "name": "byte0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 958,
                                            "src": "6193:5:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 989,
                                            "name": "_LIST_SHORT_START",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 504,
                                            "src": "6201:17:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "src": "6193:25:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "hexValue": "31",
                                          "id": 991,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6221:1:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "6193:29:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6183:39:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 994,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6183:39:7"
                                  }
                                ]
                              }
                            },
                            "id": 999,
                            "nodeType": "IfStatement",
                            "src": "5693:859:7",
                            "trueBody": {
                              "id": 983,
                              "nodeType": "Block",
                              "src": "5724:409:7",
                              "statements": [
                                {
                                  "AST": {
                                    "nodeType": "YulBlock",
                                    "src": "5747:376:7",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "5765:31:7",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "byte0",
                                              "nodeType": "YulIdentifier",
                                              "src": "5784:5:7"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5791:4:7",
                                              "type": "",
                                              "value": "0xb7"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "5780:3:7"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5780:16:7"
                                        },
                                        "variables": [
                                          {
                                            "name": "byteLen",
                                            "nodeType": "YulTypedName",
                                            "src": "5769:7:7",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "5848:24:7",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "memPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "5862:6:7"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5870:1:7",
                                              "type": "",
                                              "value": "1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5858:3:7"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5858:14:7"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "5848:6:7"
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "5958:61:7",
                                        "value": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5983:6:7"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "5977:5:7"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5977:13:7"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "5996:3:7",
                                                  "type": "",
                                                  "value": "256"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "6005:2:7",
                                                      "type": "",
                                                      "value": "32"
                                                    },
                                                    {
                                                      "name": "byteLen",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6009:7:7"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6001:3:7"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6001:16:7"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "exp",
                                                "nodeType": "YulIdentifier",
                                                "src": "5992:3:7"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5992:26:7"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "5973:3:7"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5973:46:7"
                                        },
                                        "variables": [
                                          {
                                            "name": "dataLen",
                                            "nodeType": "YulTypedName",
                                            "src": "5962:7:7",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "6069:40:7",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "dataLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "6084:7:7"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "byteLen",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6097:7:7"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "6106:1:7",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6093:3:7"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6093:15:7"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6080:3:7"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6080:29:7"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "itemLen",
                                            "nodeType": "YulIdentifier",
                                            "src": "6069:7:7"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "evmVersion": "istanbul",
                                  "externalReferences": [
                                    {
                                      "declaration": 958,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "5784:5:7",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 955,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "6069:7:7",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 949,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "5848:6:7",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 949,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "5862:6:7",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 949,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "5983:6:7",
                                      "valueSize": 1
                                    }
                                  ],
                                  "id": 982,
                                  "nodeType": "InlineAssembly",
                                  "src": "5738:385:7"
                                }
                              ]
                            }
                          },
                          "id": 1000,
                          "nodeType": "IfStatement",
                          "src": "5605:947:7",
                          "trueBody": {
                            "expression": {
                              "id": 977,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 971,
                                "name": "itemLen",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 955,
                                "src": "5637:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 976,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 974,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 972,
                                    "name": "byte0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 958,
                                    "src": "5647:5:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 973,
                                    "name": "_STRING_SHORT_START",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 498,
                                    "src": "5655:19:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "5647:27:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 975,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5677:1:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "5647:31:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5637:41:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 978,
                            "nodeType": "ExpressionStatement",
                            "src": "5637:41:7"
                          }
                        },
                        "id": 1001,
                        "nodeType": "IfStatement",
                        "src": "5546:1006:7",
                        "trueBody": {
                          "expression": {
                            "id": 966,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 964,
                              "name": "itemLen",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 955,
                              "src": "5579:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "hexValue": "31",
                              "id": 965,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5589:1:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "5579:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 967,
                          "nodeType": "ExpressionStatement",
                          "src": "5579:11:7"
                        }
                      },
                      {
                        "expression": {
                          "id": 1002,
                          "name": "itemLen",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 955,
                          "src": "6569:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 953,
                        "id": 1003,
                        "nodeType": "Return",
                        "src": "6562:14:7"
                      }
                    ]
                  },
                  "id": 1005,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_itemLength",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 950,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 949,
                        "mutability": "mutable",
                        "name": "memPtr",
                        "nodeType": "VariableDeclaration",
                        "scope": 1005,
                        "src": "5367:14:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 948,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5367:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5366:16:7"
                  },
                  "returnParameters": {
                    "id": 953,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 952,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1005,
                        "src": "5405:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 951,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5405:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5404:9:7"
                  },
                  "scope": 1106,
                  "src": "5346:1237:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1059,
                    "nodeType": "Block",
                    "src": "6706:457:7",
                    "statements": [
                      {
                        "assignments": [
                          1013
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1013,
                            "mutability": "mutable",
                            "name": "byte0",
                            "nodeType": "VariableDeclaration",
                            "scope": 1059,
                            "src": "6716:13:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1012,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6716:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1014,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6716:13:7"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "6748:55:7",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6762:31:7",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6776:1:7",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6785:6:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "6779:5:7"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6779:13:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "byte",
                                  "nodeType": "YulIdentifier",
                                  "src": "6771:4:7"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6771:22:7"
                              },
                              "variableNames": [
                                {
                                  "name": "byte0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6762:5:7"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 1013,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6762:5:7",
                            "valueSize": 1
                          },
                          {
                            "declaration": 1007,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6785:6:7",
                            "valueSize": 1
                          }
                        ],
                        "id": 1015,
                        "nodeType": "InlineAssembly",
                        "src": "6739:64:7"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1018,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1016,
                            "name": "byte0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1013,
                            "src": "6817:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 1017,
                            "name": "_STRING_SHORT_START",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 498,
                            "src": "6825:19:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "6817:27:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1032,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1023,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1021,
                                "name": "byte0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1013,
                                "src": "6873:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 1022,
                                "name": "_STRING_LONG_START",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 501,
                                "src": "6881:18:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "6873:26:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 1030,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1026,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 1024,
                                      "name": "byte0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1013,
                                      "src": "6904:5:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "id": 1025,
                                      "name": "_LIST_SHORT_START",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 504,
                                      "src": "6913:17:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "6904:26:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1029,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 1027,
                                      "name": "byte0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1013,
                                      "src": "6934:5:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 1028,
                                      "name": "_LIST_LONG_START",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 507,
                                      "src": "6942:16:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "6934:24:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "6904:54:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 1031,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "6903:56:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "6873:86:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1037,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1035,
                                "name": "byte0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1013,
                                "src": "6988:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 1036,
                                "name": "_LIST_SHORT_START",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 504,
                                "src": "6996:17:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "6988:25:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "expression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1054,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1052,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 1047,
                                    "name": "byte0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1013,
                                    "src": "7122:5:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        },
                                        "id": 1050,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 1048,
                                          "name": "_LIST_LONG_START",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 507,
                                          "src": "7131:16:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "hexValue": "31",
                                          "id": 1049,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7150:1:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "7131:20:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "id": 1051,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "7130:22:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "7122:30:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 1053,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7155:1:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "7122:34:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 1011,
                              "id": 1055,
                              "nodeType": "Return",
                              "src": "7115:41:7"
                            },
                            "id": 1056,
                            "nodeType": "IfStatement",
                            "src": "6984:172:7",
                            "trueBody": {
                              "expression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1045,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1043,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 1038,
                                    "name": "byte0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1013,
                                    "src": "7064:5:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        },
                                        "id": 1041,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 1039,
                                          "name": "_STRING_LONG_START",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 501,
                                          "src": "7073:18:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "hexValue": "31",
                                          "id": 1040,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7094:1:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "7073:22:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "id": 1042,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "7072:24:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "7064:32:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 1044,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7099:1:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "7064:36:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 1011,
                              "id": 1046,
                              "nodeType": "Return",
                              "src": "7057:43:7"
                            }
                          },
                          "id": 1057,
                          "nodeType": "IfStatement",
                          "src": "6869:287:7",
                          "trueBody": {
                            "expression": {
                              "hexValue": "31",
                              "id": 1033,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6968:1:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "functionReturnParameters": 1011,
                            "id": 1034,
                            "nodeType": "Return",
                            "src": "6961:8:7"
                          }
                        },
                        "id": 1058,
                        "nodeType": "IfStatement",
                        "src": "6813:343:7",
                        "trueBody": {
                          "expression": {
                            "hexValue": "30",
                            "id": 1019,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6853:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "functionReturnParameters": 1011,
                          "id": 1020,
                          "nodeType": "Return",
                          "src": "6846:8:7"
                        }
                      }
                    ]
                  },
                  "id": 1060,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_payloadOffset",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1008,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1007,
                        "mutability": "mutable",
                        "name": "memPtr",
                        "nodeType": "VariableDeclaration",
                        "scope": 1060,
                        "src": "6659:14:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1006,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6659:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6658:16:7"
                  },
                  "returnParameters": {
                    "id": 1011,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1010,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1060,
                        "src": "6697:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1009,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6697:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6696:9:7"
                  },
                  "scope": 1106,
                  "src": "6635:528:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1104,
                    "nodeType": "Block",
                    "src": "7418:645:7",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1069,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1066,
                            "src": "7432:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7439:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7432:8:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1073,
                        "nodeType": "IfStatement",
                        "src": "7428:21:7",
                        "trueBody": {
                          "functionReturnParameters": 1068,
                          "id": 1072,
                          "nodeType": "Return",
                          "src": "7442:7:7"
                        }
                      },
                      {
                        "body": {
                          "id": 1090,
                          "nodeType": "Block",
                          "src": "7551:153:7",
                          "statements": [
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "7574:56:7",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dest",
                                          "nodeType": "YulIdentifier",
                                          "src": "7599:4:7"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "7611:3:7"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "7605:5:7"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7605:10:7"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7592:6:7"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7592:24:7"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7592:24:7"
                                  }
                                ]
                              },
                              "evmVersion": "istanbul",
                              "externalReferences": [
                                {
                                  "declaration": 1064,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "7599:4:7",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 1062,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "7611:3:7",
                                  "valueSize": 1
                                }
                              ],
                              "id": 1081,
                              "nodeType": "InlineAssembly",
                              "src": "7565:65:7"
                            },
                            {
                              "expression": {
                                "id": 1084,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 1082,
                                  "name": "src",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1062,
                                  "src": "7644:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 1083,
                                  "name": "_WORD_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 510,
                                  "src": "7651:10:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "7644:17:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1085,
                              "nodeType": "ExpressionStatement",
                              "src": "7644:17:7"
                            },
                            {
                              "expression": {
                                "id": 1088,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 1086,
                                  "name": "dest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1064,
                                  "src": "7675:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 1087,
                                  "name": "_WORD_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 510,
                                  "src": "7683:10:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "7675:18:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1089,
                              "nodeType": "ExpressionStatement",
                              "src": "7675:18:7"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1074,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1066,
                            "src": "7513:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "id": 1075,
                            "name": "_WORD_SIZE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 510,
                            "src": "7520:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "7513:17:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1091,
                        "loopExpression": {
                          "expression": {
                            "id": 1079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 1077,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1066,
                              "src": "7532:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "-=",
                            "rightHandSide": {
                              "id": 1078,
                              "name": "_WORD_SIZE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 510,
                              "src": "7539:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "7532:17:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1080,
                          "nodeType": "ExpressionStatement",
                          "src": "7532:17:7"
                        },
                        "nodeType": "ForStatement",
                        "src": "7506:198:7"
                      },
                      {
                        "assignments": [
                          1093
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1093,
                            "mutability": "mutable",
                            "name": "mask",
                            "nodeType": "VariableDeclaration",
                            "scope": 1104,
                            "src": "7794:12:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1092,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7794:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1102,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1099,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "323536",
                              "id": 1094,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7809:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_256_by_1",
                                "typeString": "int_const 256"
                              },
                              "value": "256"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1097,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 1095,
                                    "name": "_WORD_SIZE",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 510,
                                    "src": "7815:10:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 1096,
                                    "name": "len",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1066,
                                    "src": "7828:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7815:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 1098,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7814:18:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7809:23:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 1100,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7835:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "7809:27:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7794:42:7"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "7855:202:7",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7869:41:7",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "7894:3:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "7888:5:7"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7888:10:7"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "mask",
                                        "nodeType": "YulIdentifier",
                                        "src": "7904:4:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "7900:3:7"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7900:9:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "7884:3:7"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7884:26:7"
                              },
                              "variables": [
                                {
                                  "name": "srcpart",
                                  "nodeType": "YulTypedName",
                                  "src": "7873:7:7",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7939:38:7",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dest",
                                        "nodeType": "YulIdentifier",
                                        "src": "7965:4:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "7959:5:7"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7959:11:7"
                                  },
                                  {
                                    "name": "mask",
                                    "nodeType": "YulIdentifier",
                                    "src": "7972:4:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "7955:3:7"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7955:22:7"
                              },
                              "variables": [
                                {
                                  "name": "destpart",
                                  "nodeType": "YulTypedName",
                                  "src": "7943:8:7",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dest",
                                    "nodeType": "YulIdentifier",
                                    "src": "8019:4:7"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "destpart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8028:8:7"
                                      },
                                      {
                                        "name": "srcpart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8038:7:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "8025:2:7"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8025:21:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8012:6:7"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8012:35:7"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8012:35:7"
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 1064,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7965:4:7",
                            "valueSize": 1
                          },
                          {
                            "declaration": 1064,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8019:4:7",
                            "valueSize": 1
                          },
                          {
                            "declaration": 1093,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7904:4:7",
                            "valueSize": 1
                          },
                          {
                            "declaration": 1093,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7972:4:7",
                            "valueSize": 1
                          },
                          {
                            "declaration": 1062,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7894:3:7",
                            "valueSize": 1
                          }
                        ],
                        "id": 1103,
                        "nodeType": "InlineAssembly",
                        "src": "7846:211:7"
                      }
                    ]
                  },
                  "id": 1105,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "copy",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1067,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1062,
                        "mutability": "mutable",
                        "name": "src",
                        "nodeType": "VariableDeclaration",
                        "scope": 1105,
                        "src": "7344:11:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1061,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7344:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1064,
                        "mutability": "mutable",
                        "name": "dest",
                        "nodeType": "VariableDeclaration",
                        "scope": 1105,
                        "src": "7365:12:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1063,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7365:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1066,
                        "mutability": "mutable",
                        "name": "len",
                        "nodeType": "VariableDeclaration",
                        "scope": 1105,
                        "src": "7387:11:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1065,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7387:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7334:70:7"
                  },
                  "returnParameters": {
                    "id": 1068,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7418:0:7"
                  },
                  "scope": 1106,
                  "src": "7321:742:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 1107,
              "src": "290:7775:7"
            }
          ],
          "src": "257:7809:7"
        },
        "id": 7
      },
      "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
          "exportedSymbols": {
            "ERC20Wrapper": [
              463
            ],
            "IRecoverableERC721": [
              1264
            ],
            "IWrappedERC20": [
              493
            ],
            "ManagedIdentity": [
              322
            ],
            "Ownable": [
              206
            ],
            "Recoverable": [
              1253
            ]
          },
          "id": 1265,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1108,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:8"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "../metatx/ManagedIdentity.sol",
              "id": 1110,
              "nodeType": "ImportDirective",
              "scope": 1265,
              "sourceUnit": 323,
              "src": "66:62:8",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1109,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:15:8",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol",
              "file": "../access/Ownable.sol",
              "id": 1112,
              "nodeType": "ImportDirective",
              "scope": 1265,
              "sourceUnit": 207,
              "src": "129:46:8",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1111,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "137:7:8",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol",
              "file": "./ERC20Wrapper.sol",
              "id": 1115,
              "nodeType": "ImportDirective",
              "scope": 1265,
              "sourceUnit": 494,
              "src": "176:63:8",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1113,
                    "name": "IWrappedERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "184:13:8",
                    "typeDescriptions": {}
                  }
                },
                {
                  "foreign": {
                    "id": 1114,
                    "name": "ERC20Wrapper",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "199:12:8",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1116,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 322,
                    "src": "274:15:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 1117,
                  "nodeType": "InheritanceSpecifier",
                  "src": "274:15:8"
                },
                {
                  "baseName": {
                    "id": 1118,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 206,
                    "src": "291:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$206",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 1119,
                  "nodeType": "InheritanceSpecifier",
                  "src": "291:7:8"
                }
              ],
              "contractDependencies": [
                22,
                206,
                322
              ],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 1253,
              "linearizedBaseContracts": [
                1253,
                206,
                22,
                322
              ],
              "name": "Recoverable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 1122,
                  "libraryName": {
                    "id": 1120,
                    "name": "ERC20Wrapper",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 463,
                    "src": "311:12:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Wrapper_$463",
                      "typeString": "library ERC20Wrapper"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "305:37:8",
                  "typeName": {
                    "id": 1121,
                    "name": "IWrappedERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 493,
                    "src": "328:13:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                      "typeString": "contract IWrappedERC20"
                    }
                  }
                },
                {
                  "body": {
                    "id": 1184,
                    "nodeType": "Block",
                    "src": "1291:327:8",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 1136,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "1319:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 1137,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1319:12:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 1135,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "1301:17:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 1138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1301:31:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1139,
                        "nodeType": "ExpressionStatement",
                        "src": "1301:31:8"
                      },
                      {
                        "assignments": [
                          1141
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1141,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 1184,
                            "src": "1342:14:8",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1140,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1342:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1144,
                        "initialValue": {
                          "expression": {
                            "id": 1142,
                            "name": "accounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1126,
                            "src": "1359:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 1143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "1359:15:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1342:32:8"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1154,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1149,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1146,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1141,
                                  "src": "1392:6:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 1147,
                                    "name": "tokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1129,
                                    "src": "1402:6:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 1148,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "1402:13:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1392:23:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1153,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1150,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1141,
                                  "src": "1419:6:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 1151,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1132,
                                    "src": "1429:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 1152,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "1429:14:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1419:24:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1392:51:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5265636f763a20696e636f6e73697374656e7420617272617973",
                              "id": 1155,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1445:28:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_94fd14b31909e8a28766c62160ac56dbfb2493c47530b1850f5c284b271cf34e",
                                "typeString": "literal_string \"Recov: inconsistent arrays\""
                              },
                              "value": "Recov: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_94fd14b31909e8a28766c62160ac56dbfb2493c47530b1850f5c284b271cf34e",
                                "typeString": "literal_string \"Recov: inconsistent arrays\""
                              }
                            ],
                            "id": 1145,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1384:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1384:90:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1157,
                        "nodeType": "ExpressionStatement",
                        "src": "1384:90:8"
                      },
                      {
                        "body": {
                          "id": 1182,
                          "nodeType": "Block",
                          "src": "1522:90:8",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 1174,
                                      "name": "accounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1126,
                                      "src": "1577:8:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 1176,
                                    "indexExpression": {
                                      "id": 1175,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1159,
                                      "src": "1586:1:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1577:11:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 1177,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1132,
                                      "src": "1590:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 1179,
                                    "indexExpression": {
                                      "id": 1178,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1159,
                                      "src": "1598:1:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1590:10:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 1169,
                                          "name": "tokens",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1129,
                                          "src": "1550:6:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                            "typeString": "address[] calldata"
                                          }
                                        },
                                        "id": 1171,
                                        "indexExpression": {
                                          "id": 1170,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1159,
                                          "src": "1557:1:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "1550:9:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1168,
                                      "name": "IWrappedERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 493,
                                      "src": "1536:13:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IWrappedERC20_$493_$",
                                        "typeString": "type(contract IWrappedERC20)"
                                      }
                                    },
                                    "id": 1172,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1536:24:8",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                      "typeString": "contract IWrappedERC20"
                                    }
                                  },
                                  "id": 1173,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "wrappedTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 352,
                                  "src": "1536:40:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IWrappedERC20_$493_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IWrappedERC20_$493_$",
                                    "typeString": "function (contract IWrappedERC20,address,uint256)"
                                  }
                                },
                                "id": 1180,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1536:65:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1181,
                              "nodeType": "ExpressionStatement",
                              "src": "1536:65:8"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1162,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1159,
                            "src": "1504:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 1163,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1141,
                            "src": "1509:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1504:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1183,
                        "initializationExpression": {
                          "assignments": [
                            1159
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1159,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 1183,
                              "src": "1489:9:8",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1158,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1489:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1161,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 1160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1501:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1489:13:8"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "1517:3:8",
                            "subExpression": {
                              "id": 1165,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1159,
                              "src": "1519:1:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1167,
                          "nodeType": "ExpressionStatement",
                          "src": "1517:3:8"
                        },
                        "nodeType": "ForStatement",
                        "src": "1484:128:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1123,
                    "nodeType": "StructuredDocumentation",
                    "src": "348:784:8",
                    "text": " Extract ERC20 tokens which were accidentally sent to the contract to a list of accounts.\n Warning: this function should be overriden for contracts which are supposed to hold ERC20 tokens\n so that the extraction is limited to only amounts sent accidentally.\n @dev Reverts if the sender is not the contract owner.\n @dev Reverts if `accounts`, `tokens` and `amounts` do not have the same length.\n @dev Reverts if one of `tokens` is does not implement the ERC20 transfer function.\n @dev Reverts if one of the ERC20 transfers fail for any reason.\n @param accounts the list of accounts to transfer the tokens to.\n @param tokens the list of ERC20 token addresses.\n @param amounts the list of token amounts to transfer."
                  },
                  "functionSelector": "73c8a958",
                  "id": 1185,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recoverERC20s",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1133,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1126,
                        "mutability": "mutable",
                        "name": "accounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 1185,
                        "src": "1169:27:8",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1124,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1169:7:8",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1125,
                          "nodeType": "ArrayTypeName",
                          "src": "1169:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1129,
                        "mutability": "mutable",
                        "name": "tokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 1185,
                        "src": "1206:25:8",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1127,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1206:7:8",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1128,
                          "nodeType": "ArrayTypeName",
                          "src": "1206:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1132,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 1185,
                        "src": "1241:26:8",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1130,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1241:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1131,
                          "nodeType": "ArrayTypeName",
                          "src": "1241:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1159:114:8"
                  },
                  "returnParameters": {
                    "id": 1134,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1291:0:8"
                  },
                  "scope": 1253,
                  "src": "1137:481:8",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1251,
                    "nodeType": "Block",
                    "src": "2589:352:8",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 1199,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "2617:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 1200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2617:12:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 1198,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "2599:17:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 1201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2599:31:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1202,
                        "nodeType": "ExpressionStatement",
                        "src": "2599:31:8"
                      },
                      {
                        "assignments": [
                          1204
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1204,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 1251,
                            "src": "2640:14:8",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1203,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2640:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1207,
                        "initialValue": {
                          "expression": {
                            "id": 1205,
                            "name": "accounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1189,
                            "src": "2657:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 1206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "2657:15:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2640:32:8"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1212,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1209,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1204,
                                  "src": "2690:6:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 1210,
                                    "name": "contracts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1192,
                                    "src": "2700:9:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 1211,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "2700:16:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2690:26:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1213,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1204,
                                  "src": "2720:6:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 1214,
                                    "name": "tokenIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1195,
                                    "src": "2730:8:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 1215,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "2730:15:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2720:25:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2690:55:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5265636f763a20696e636f6e73697374656e7420617272617973",
                              "id": 1218,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2747:28:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_94fd14b31909e8a28766c62160ac56dbfb2493c47530b1850f5c284b271cf34e",
                                "typeString": "literal_string \"Recov: inconsistent arrays\""
                              },
                              "value": "Recov: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_94fd14b31909e8a28766c62160ac56dbfb2493c47530b1850f5c284b271cf34e",
                                "typeString": "literal_string \"Recov: inconsistent arrays\""
                              }
                            ],
                            "id": 1208,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2682:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2682:94:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1220,
                        "nodeType": "ExpressionStatement",
                        "src": "2682:94:8"
                      },
                      {
                        "body": {
                          "id": 1249,
                          "nodeType": "Block",
                          "src": "2824:111:8",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 1239,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "2892:4:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_Recoverable_$1253",
                                          "typeString": "contract Recoverable"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_Recoverable_$1253",
                                          "typeString": "contract Recoverable"
                                        }
                                      ],
                                      "id": 1238,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2884:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1237,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2884:7:8",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1240,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2884:13:8",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 1241,
                                      "name": "accounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1189,
                                      "src": "2899:8:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 1243,
                                    "indexExpression": {
                                      "id": 1242,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1222,
                                      "src": "2908:1:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2899:11:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 1244,
                                      "name": "tokenIds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1195,
                                      "src": "2912:8:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 1246,
                                    "indexExpression": {
                                      "id": 1245,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1222,
                                      "src": "2921:1:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2912: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": [
                                      {
                                        "baseExpression": {
                                          "id": 1232,
                                          "name": "contracts",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1192,
                                          "src": "2857:9:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                            "typeString": "address[] calldata"
                                          }
                                        },
                                        "id": 1234,
                                        "indexExpression": {
                                          "id": 1233,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1222,
                                          "src": "2867:1:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2857:12:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1231,
                                      "name": "IRecoverableERC721",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1264,
                                      "src": "2838:18:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IRecoverableERC721_$1264_$",
                                        "typeString": "type(contract IRecoverableERC721)"
                                      }
                                    },
                                    "id": 1235,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2838:32:8",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRecoverableERC721_$1264",
                                      "typeString": "contract IRecoverableERC721"
                                    }
                                  },
                                  "id": 1236,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transferFrom",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1263,
                                  "src": "2838:45:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256) external"
                                  }
                                },
                                "id": 1247,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2838:86:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1248,
                              "nodeType": "ExpressionStatement",
                              "src": "2838:86:8"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1225,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1222,
                            "src": "2806:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 1226,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1204,
                            "src": "2811:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2806:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1250,
                        "initializationExpression": {
                          "assignments": [
                            1222
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1222,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 1250,
                              "src": "2791:9:8",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1221,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2791:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1224,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 1223,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2803:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2791:13:8"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1229,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "2819:3:8",
                            "subExpression": {
                              "id": 1228,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1222,
                              "src": "2821:1:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1230,
                          "nodeType": "ExpressionStatement",
                          "src": "2819:3:8"
                        },
                        "nodeType": "ForStatement",
                        "src": "2786:149:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1186,
                    "nodeType": "StructuredDocumentation",
                    "src": "1624:801:8",
                    "text": " Extract ERC721 tokens which were accidentally sent to the contract to a list of accounts.\n Warning: this function should be overriden for contracts which are supposed to hold ERC721 tokens\n so that the extraction is limited to only tokens sent accidentally.\n @dev Reverts if the sender is not the contract owner.\n @dev Reverts if `accounts`, `contracts` and `amounts` do not have the same length.\n @dev Reverts if one of `contracts` is does not implement the ERC721 transferFrom function.\n @dev Reverts if one of the ERC721 transfers fail for any reason.\n @param accounts the list of accounts to transfer the tokens to.\n @param contracts the list of ERC721 contract addresses.\n @param tokenIds the list of token ids to transfer."
                  },
                  "functionSelector": "c3666c36",
                  "id": 1252,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recoverERC721s",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1196,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1189,
                        "mutability": "mutable",
                        "name": "accounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 1252,
                        "src": "2463:27:8",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1187,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2463:7:8",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1188,
                          "nodeType": "ArrayTypeName",
                          "src": "2463:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1192,
                        "mutability": "mutable",
                        "name": "contracts",
                        "nodeType": "VariableDeclaration",
                        "scope": 1252,
                        "src": "2500:28:8",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1190,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2500:7:8",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1191,
                          "nodeType": "ArrayTypeName",
                          "src": "2500:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1195,
                        "mutability": "mutable",
                        "name": "tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 1252,
                        "src": "2538:27:8",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1193,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2538:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1194,
                          "nodeType": "ArrayTypeName",
                          "src": "2538:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2453:118:8"
                  },
                  "returnParameters": {
                    "id": 1197,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2589:0:8"
                  },
                  "scope": 1253,
                  "src": "2430:511:8",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                }
              ],
              "scope": 1265,
              "src": "241:2702:8"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 1264,
              "linearizedBaseContracts": [
                1264
              ],
              "name": "IRecoverableERC721",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1254,
                    "nodeType": "StructuredDocumentation",
                    "src": "2980:55:8",
                    "text": "See {IERC721-transferFrom(address,address,uint256)}"
                  },
                  "functionSelector": "23b872dd",
                  "id": 1263,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1261,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1256,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1263,
                        "src": "3071:12:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1255,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3071:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1258,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1263,
                        "src": "3093:10:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1257,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3093:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1260,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1263,
                        "src": "3113:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1259,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3113:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3061:73:8"
                  },
                  "returnParameters": {
                    "id": 1262,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3143:0:8"
                  },
                  "scope": 1264,
                  "src": "3040:104:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1265,
              "src": "2945:201:8"
            }
          ],
          "src": "33:3114:8"
        },
        "id": 8
      },
      "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
          "exportedSymbols": {
            "AddressIsContract": [
              1285
            ]
          },
          "id": 1286,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1266,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "206:31:9"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 1267,
                "nodeType": "StructuredDocumentation",
                "src": "239:71:9",
                "text": " @dev Upgrades the address type to check if it is a contract."
              },
              "fullyImplemented": true,
              "id": 1285,
              "linearizedBaseContracts": [
                1285
              ],
              "name": "AddressIsContract",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 1283,
                    "nodeType": "Block",
                    "src": "979:311:9",
                    "statements": [
                      {
                        "assignments": [
                          1276
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1276,
                            "mutability": "mutable",
                            "name": "size",
                            "nodeType": "VariableDeclaration",
                            "scope": 1283,
                            "src": "1176:12:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1275,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1176:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1277,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1176:12:9"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1207:52:9",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1221:28:9",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "account",
                                    "nodeType": "YulIdentifier",
                                    "src": "1241:7:9"
                                  }
                                ],
                                "functionName": {
                                  "name": "extcodesize",
                                  "nodeType": "YulIdentifier",
                                  "src": "1229:11:9"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1229:20:9"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "1221:4:9"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 1270,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1241:7:9",
                            "valueSize": 1
                          },
                          {
                            "declaration": 1276,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1221:4:9",
                            "valueSize": 1
                          }
                        ],
                        "id": 1278,
                        "nodeType": "InlineAssembly",
                        "src": "1198:61:9"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1279,
                            "name": "size",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1276,
                            "src": "1275:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1280,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1282:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1275:8:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1274,
                        "id": 1282,
                        "nodeType": "Return",
                        "src": "1268:15:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1268,
                    "nodeType": "StructuredDocumentation",
                    "src": "343:565:9",
                    "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 ===="
                  },
                  "id": 1284,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isContract",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1271,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1270,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 1284,
                        "src": "933:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1269,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "933:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "932:17:9"
                  },
                  "returnParameters": {
                    "id": 1274,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1273,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1284,
                        "src": "973:4:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1272,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "973:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "972:6:9"
                  },
                  "scope": 1285,
                  "src": "913:377:9",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 1286,
              "src": "311:981:9"
            }
          ],
          "src": "206:1087:9"
        },
        "id": 9
      },
      "@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol",
          "exportedSymbols": {
            "UInt256ToDecimalString": [
              1371
            ]
          },
          "id": 1372,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1287,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "206:31:10"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 1371,
              "linearizedBaseContracts": [
                1371
              ],
              "name": "UInt256ToDecimalString",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 1369,
                    "nodeType": "Block",
                    "src": "354:468:10",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1294,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1289,
                            "src": "368:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "377:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "368:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1300,
                        "nodeType": "IfStatement",
                        "src": "364:51:10",
                        "trueBody": {
                          "id": 1299,
                          "nodeType": "Block",
                          "src": "380:35:10",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 1297,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "401:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                  "typeString": "literal_string \"0\""
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 1293,
                              "id": 1298,
                              "nodeType": "Return",
                              "src": "394:10:10"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          1302
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1302,
                            "mutability": "mutable",
                            "name": "temp",
                            "nodeType": "VariableDeclaration",
                            "scope": 1369,
                            "src": "424:12:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1301,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "424:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1304,
                        "initialValue": {
                          "id": 1303,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1289,
                          "src": "439:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "424:20:10"
                      },
                      {
                        "assignments": [
                          1306
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1306,
                            "mutability": "mutable",
                            "name": "digits",
                            "nodeType": "VariableDeclaration",
                            "scope": 1369,
                            "src": "454:14:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1305,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "454:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1307,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "454:14:10"
                      },
                      {
                        "body": {
                          "id": 1318,
                          "nodeType": "Block",
                          "src": "496:57:10",
                          "statements": [
                            {
                              "expression": {
                                "id": 1312,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "510:8:10",
                                "subExpression": {
                                  "id": 1311,
                                  "name": "digits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1306,
                                  "src": "510:6:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1313,
                              "nodeType": "ExpressionStatement",
                              "src": "510:8:10"
                            },
                            {
                              "expression": {
                                "id": 1316,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 1314,
                                  "name": "temp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1302,
                                  "src": "532:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 1315,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "540:2:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "532:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1317,
                              "nodeType": "ExpressionStatement",
                              "src": "532:10:10"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1308,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1302,
                            "src": "485:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "493:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "485:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1319,
                        "nodeType": "WhileStatement",
                        "src": "478:75:10"
                      },
                      {
                        "assignments": [
                          1321
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1321,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nodeType": "VariableDeclaration",
                            "scope": 1369,
                            "src": "562:19:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 1320,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "562:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1326,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1324,
                              "name": "digits",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1306,
                              "src": "594:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1323,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "584:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 1322,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "588:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 1325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "584:17:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "562:39:10"
                      },
                      {
                        "assignments": [
                          1328
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1328,
                            "mutability": "mutable",
                            "name": "index",
                            "nodeType": "VariableDeclaration",
                            "scope": 1369,
                            "src": "611:13:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1327,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "611:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1332,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1329,
                            "name": "digits",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1306,
                            "src": "627:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 1330,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "636:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "627:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "611:26:10"
                      },
                      {
                        "expression": {
                          "id": 1335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1333,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1302,
                            "src": "647:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1334,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1289,
                            "src": "654:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "647:12:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1336,
                        "nodeType": "ExpressionStatement",
                        "src": "647:12:10"
                      },
                      {
                        "body": {
                          "id": 1362,
                          "nodeType": "Block",
                          "src": "687:98:10",
                          "statements": [
                            {
                              "expression": {
                                "id": 1356,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1340,
                                    "name": "buffer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1321,
                                    "src": "701:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 1343,
                                  "indexExpression": {
                                    "id": 1342,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "--",
                                    "prefix": false,
                                    "src": "708:7:10",
                                    "subExpression": {
                                      "id": 1341,
                                      "name": "index",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1328,
                                      "src": "708:5:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "701:15:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 1353,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3438",
                                            "id": 1348,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "732:2:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_48_by_1",
                                              "typeString": "int_const 48"
                                            },
                                            "value": "48"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 1351,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 1349,
                                                  "name": "temp",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1302,
                                                  "src": "738:4:10",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "%",
                                                "rightExpression": {
                                                  "hexValue": "3130",
                                                  "id": 1350,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "745:2:10",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_10_by_1",
                                                    "typeString": "int_const 10"
                                                  },
                                                  "value": "10"
                                                },
                                                "src": "738:9:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 1352,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "737:11:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "732:16:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 1347,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "726:5:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint8_$",
                                          "typeString": "type(uint8)"
                                        },
                                        "typeName": {
                                          "id": 1346,
                                          "name": "uint8",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "726:5:10",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 1354,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "726:23:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    ],
                                    "id": 1345,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "719:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes1_$",
                                      "typeString": "type(bytes1)"
                                    },
                                    "typeName": {
                                      "id": 1344,
                                      "name": "bytes1",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "719:6:10",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 1355,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "719:31:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "701:49:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 1357,
                              "nodeType": "ExpressionStatement",
                              "src": "701:49:10"
                            },
                            {
                              "expression": {
                                "id": 1360,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 1358,
                                  "name": "temp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1302,
                                  "src": "764:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 1359,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "772:2:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "764:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1361,
                              "nodeType": "ExpressionStatement",
                              "src": "764:10:10"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1337,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1302,
                            "src": "676:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1338,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "684:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "676:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1363,
                        "nodeType": "WhileStatement",
                        "src": "669:116:10"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1366,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1321,
                              "src": "808:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1365,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "801:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 1364,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "801:6:10",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "801:14:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 1293,
                        "id": 1368,
                        "nodeType": "Return",
                        "src": "794:21:10"
                      }
                    ]
                  },
                  "id": 1370,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toDecimalString",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1290,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1289,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1370,
                        "src": "301:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1288,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "301:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "300:15:10"
                  },
                  "returnParameters": {
                    "id": 1293,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1292,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1370,
                        "src": "339:13:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1291,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "339:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "338:15:10"
                  },
                  "scope": 1371,
                  "src": "276:546:10",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 1372,
              "src": "239:585:10"
            }
          ],
          "src": "206:619:10"
        },
        "id": 10
      },
      "contracts/metadata/NFTBaseMetadataURI.sol": {
        "ast": {
          "absolutePath": "contracts/metadata/NFTBaseMetadataURI.sol",
          "exportedSymbols": {
            "ManagedIdentity": [
              322
            ],
            "NFTBaseMetadataURI": [
              1431
            ],
            "Ownable": [
              206
            ],
            "UInt256ToDecimalString": [
              1371
            ]
          },
          "id": 1432,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1373,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:11"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol",
              "id": 1375,
              "nodeType": "ImportDirective",
              "scope": 1432,
              "sourceUnit": 1372,
              "src": "66:121:11",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1374,
                    "name": "UInt256ToDecimalString",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:22:11",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 1377,
              "nodeType": "ImportDirective",
              "scope": 1432,
              "sourceUnit": 323,
              "src": "188:102:11",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1376,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "196:15:11",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol",
              "id": 1379,
              "nodeType": "ImportDirective",
              "scope": 1432,
              "sourceUnit": 207,
              "src": "291:86:11",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1378,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "299:7:11",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1380,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 322,
                    "src": "419:15:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 1381,
                  "nodeType": "InheritanceSpecifier",
                  "src": "419:15:11"
                },
                {
                  "baseName": {
                    "id": 1382,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 206,
                    "src": "436:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$206",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 1383,
                  "nodeType": "InheritanceSpecifier",
                  "src": "436:7:11"
                }
              ],
              "contractDependencies": [
                22,
                206,
                322
              ],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 1431,
              "linearizedBaseContracts": [
                1431,
                206,
                22,
                322
              ],
              "name": "NFTBaseMetadataURI",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 1386,
                  "libraryName": {
                    "id": 1384,
                    "name": "UInt256ToDecimalString",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1371,
                    "src": "456:22:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UInt256ToDecimalString_$1371",
                      "typeString": "library UInt256ToDecimalString"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "450:41:11",
                  "typeName": {
                    "id": 1385,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "483:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "anonymous": false,
                  "id": 1390,
                  "name": "BaseMetadataURISet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1389,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1388,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "baseMetadataURI",
                        "nodeType": "VariableDeclaration",
                        "scope": 1390,
                        "src": "522:22:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1387,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "522:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "521:24:11"
                  },
                  "src": "497:49:11"
                },
                {
                  "constant": false,
                  "functionSelector": "5b2bd79e",
                  "id": 1392,
                  "mutability": "mutable",
                  "name": "baseMetadataURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 1431,
                  "src": "552:29:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1391,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "552:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1410,
                    "nodeType": "Block",
                    "src": "659:143:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 1398,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "687:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 1399,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "687:12:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 1397,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "669:17:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 1400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "669:31:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1401,
                        "nodeType": "ExpressionStatement",
                        "src": "669:31:11"
                      },
                      {
                        "expression": {
                          "id": 1404,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1402,
                            "name": "baseMetadataURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1392,
                            "src": "710:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1403,
                            "name": "baseMetadataURI_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1394,
                            "src": "728:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "710:34:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 1405,
                        "nodeType": "ExpressionStatement",
                        "src": "710:34:11"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1407,
                              "name": "baseMetadataURI_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1394,
                              "src": "778:16:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            ],
                            "id": 1406,
                            "name": "BaseMetadataURISet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1390,
                            "src": "759:18:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 1408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "759:36:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1409,
                        "nodeType": "EmitStatement",
                        "src": "754:41:11"
                      }
                    ]
                  },
                  "functionSelector": "7e518ec8",
                  "id": 1411,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setBaseMetadataURI",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1395,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1394,
                        "mutability": "mutable",
                        "name": "baseMetadataURI_",
                        "nodeType": "VariableDeclaration",
                        "scope": 1411,
                        "src": "616:32:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1393,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "616:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "615:34:11"
                  },
                  "returnParameters": {
                    "id": 1396,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "659:0:11"
                  },
                  "scope": 1431,
                  "src": "588:214:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1429,
                    "nodeType": "Block",
                    "src": "880:87:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1422,
                                  "name": "baseMetadataURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1392,
                                  "src": "921:15:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 1423,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1413,
                                      "src": "938:2:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1424,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toDecimalString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1370,
                                    "src": "938:18:11",
                                    "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": 1425,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "938:20:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 1420,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "904:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 1421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "904:16:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 1426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "904:55:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1419,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "897:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 1418,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "897:6:11",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "897:63:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 1417,
                        "id": 1428,
                        "nodeType": "Return",
                        "src": "890:70:11"
                      }
                    ]
                  },
                  "id": 1430,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_uri",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1414,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1413,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1430,
                        "src": "822:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1412,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "822:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "821:12:11"
                  },
                  "returnParameters": {
                    "id": 1417,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1416,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1430,
                        "src": "865:13:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1415,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "865:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "864:15:11"
                  },
                  "scope": 1431,
                  "src": "808:159:11",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 1432,
              "src": "379:590:11"
            }
          ],
          "src": "33:937:11"
        },
        "id": 11
      },
      "contracts/token/ERC1155/ERC1155Inventory.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/ERC1155Inventory.sol",
          "exportedSymbols": {
            "AddressIsContract": [
              1285
            ],
            "ERC1155Inventory": [
              2318
            ],
            "ERC1155InventoryBase": [
              2882
            ],
            "ERC1155InventoryIdentifiersLib": [
              3370
            ],
            "IERC1155Inventory": [
              3633
            ]
          },
          "id": 2319,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1433,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:12"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
              "id": 1435,
              "nodeType": "ImportDirective",
              "scope": 2319,
              "sourceUnit": 1286,
              "src": "66:111:12",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1434,
                    "name": "AddressIsContract",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:17:12",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol",
              "file": "./ERC1155InventoryIdentifiersLib.sol",
              "id": 1437,
              "nodeType": "ImportDirective",
              "scope": 2319,
              "sourceUnit": 3371,
              "src": "178:84:12",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1436,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "186:30:12",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol",
              "file": "./interfaces/IERC1155Inventory.sol",
              "id": 1439,
              "nodeType": "ImportDirective",
              "scope": 2319,
              "sourceUnit": 3634,
              "src": "263:69:12",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1438,
                    "name": "IERC1155Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "271:17:12",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155InventoryBase.sol",
              "file": "./ERC1155InventoryBase.sol",
              "id": 1441,
              "nodeType": "ImportDirective",
              "scope": 2319,
              "sourceUnit": 2883,
              "src": "333:64:12",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1440,
                    "name": "ERC1155InventoryBase",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "341:20:12",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1443,
                    "name": "ERC1155InventoryBase",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2882,
                    "src": "694:20:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155InventoryBase_$2882",
                      "typeString": "contract ERC1155InventoryBase"
                    }
                  },
                  "id": 1444,
                  "nodeType": "InheritanceSpecifier",
                  "src": "694:20:12"
                }
              ],
              "contractDependencies": [
                218,
                322,
                2882,
                3530,
                3633,
                3696,
                3738,
                3750
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 1442,
                "nodeType": "StructuredDocumentation",
                "src": "399:256:12",
                "text": " @title ERC1155Inventory, a contract which manages up to multiple Collections of Fungible and Non-Fungible Tokens.\n @dev The function `uri(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`."
              },
              "fullyImplemented": false,
              "id": 2318,
              "linearizedBaseContracts": [
                2318,
                2882,
                3738,
                3750,
                3633,
                3696,
                3530,
                218,
                322
              ],
              "name": "ERC1155Inventory",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 1447,
                  "libraryName": {
                    "id": 1445,
                    "name": "AddressIsContract",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1285,
                    "src": "727:17:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddressIsContract_$1285",
                      "typeString": "library AddressIsContract"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "721:36:12",
                  "typeName": {
                    "id": 1446,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "749:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "id": 1450,
                  "libraryName": {
                    "id": 1448,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3370,
                    "src": "768:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155InventoryIdentifiersLib_$3370",
                      "typeString": "library ERC1155InventoryIdentifiersLib"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "762:49:12",
                  "typeName": {
                    "id": 1449,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "803:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "body": {
                    "id": 1458,
                    "nodeType": "Block",
                    "src": "902:2:12",
                    "statements": []
                  },
                  "id": 1459,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 1455,
                          "name": "collectionMaskLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1452,
                          "src": "880:20:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1456,
                      "modifierName": {
                        "id": 1454,
                        "name": "ERC1155InventoryBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2882,
                        "src": "859:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155InventoryBase_$2882_$",
                          "typeString": "type(contract ERC1155InventoryBase)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "859:42:12"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1453,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1452,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 1459,
                        "src": "829:28:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1451,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "829:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "828:30:12"
                  },
                  "returnParameters": {
                    "id": 1457,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "902:0:12"
                  },
                  "scope": 2318,
                  "src": "817:87:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    3615
                  ],
                  "body": {
                    "id": 1549,
                    "nodeType": "Block",
                    "src": "1245:641:12",
                    "statements": [
                      {
                        "assignments": [
                          1475
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1475,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 1549,
                            "src": "1255:14:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1474,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1255:7:12",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1478,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1476,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "1272:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 1477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1272:12:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1255:29:12"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1480,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1464,
                                "src": "1302:2:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1483,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1316: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": 1482,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1308:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1481,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1308:7:12",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1484,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1308:10:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1302:16:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e7366657220746f207a65726f",
                              "id": 1486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1320:29:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              },
                              "value": "Inventory: transfer to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              }
                            ],
                            "id": 1479,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1294:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1294:56:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1488,
                        "nodeType": "ExpressionStatement",
                        "src": "1294:56:12"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1491,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1462,
                                  "src": "1382:4:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 1492,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1475,
                                  "src": "1388:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1490,
                                "name": "_isOperatable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2815,
                                "src": "1368:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address,address) view returns (bool)"
                                }
                              },
                              "id": 1493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1368:27:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                              "id": 1494,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1397:32:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              },
                              "value": "Inventory: non-approved sender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              }
                            ],
                            "id": 1489,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1360:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1495,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1360:70:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1496,
                        "nodeType": "ExpressionStatement",
                        "src": "1360:70:12"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 1497,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1466,
                              "src": "1445:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3310,
                            "src": "1445:18:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (bool)"
                            }
                          },
                          "id": 1499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1445:20:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "arguments": [
                              {
                                "id": 1510,
                                "name": "_collectionMaskLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2354,
                                "src": "1562:21:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 1508,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1466,
                                "src": "1540:2:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1509,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isNonFungibleToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3334,
                              "src": "1540:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (bool)"
                              }
                            },
                            "id": 1511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1540:44:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 1525,
                            "nodeType": "Block",
                            "src": "1657:60:12",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                      "id": 1522,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1678:27:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      },
                                      "value": "Inventory: not a token id"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      }
                                    ],
                                    "id": 1521,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "1671:6:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 1523,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1671:35:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 1524,
                                "nodeType": "ExpressionStatement",
                                "src": "1671:35:12"
                              }
                            ]
                          },
                          "id": 1526,
                          "nodeType": "IfStatement",
                          "src": "1536:181:12",
                          "trueBody": {
                            "id": 1520,
                            "nodeType": "Block",
                            "src": "1586:65:12",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 1513,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1462,
                                      "src": "1613:4:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 1514,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1464,
                                      "src": "1619:2:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 1515,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1466,
                                      "src": "1623:2:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 1516,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1468,
                                      "src": "1627:5:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 1517,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1634:5:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 1512,
                                    "name": "_transferNFT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2284,
                                    "src": "1600:12:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                      "typeString": "function (address,address,uint256,uint256,bool)"
                                    }
                                  },
                                  "id": 1518,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1600:40:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 1519,
                                "nodeType": "ExpressionStatement",
                                "src": "1600:40:12"
                              }
                            ]
                          }
                        },
                        "id": 1527,
                        "nodeType": "IfStatement",
                        "src": "1441:276:12",
                        "trueBody": {
                          "id": 1507,
                          "nodeType": "Block",
                          "src": "1467:63:12",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1501,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1462,
                                    "src": "1499:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1502,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1464,
                                    "src": "1505:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1503,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1466,
                                    "src": "1509:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1504,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1468,
                                    "src": "1513:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1500,
                                  "name": "_transferFungible",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2209,
                                  "src": "1481:17:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256)"
                                  }
                                },
                                "id": 1505,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1481:38:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1506,
                              "nodeType": "ExpressionStatement",
                              "src": "1481:38:12"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1529,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1475,
                              "src": "1747:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1530,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1462,
                              "src": "1755:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1531,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1464,
                              "src": "1761:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1532,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1466,
                              "src": "1765:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 1533,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1468,
                              "src": "1769:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1528,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3430,
                            "src": "1732:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 1534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1732:43:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1535,
                        "nodeType": "EmitStatement",
                        "src": "1727:48:12"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 1536,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1464,
                              "src": "1789:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 1537,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1284,
                            "src": "1789:13:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 1538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1789:15:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1548,
                        "nodeType": "IfStatement",
                        "src": "1785:95:12",
                        "trueBody": {
                          "id": 1547,
                          "nodeType": "Block",
                          "src": "1806:74:12",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1540,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1462,
                                    "src": "1843:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1541,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1464,
                                    "src": "1849:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1542,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1466,
                                    "src": "1853:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1543,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1468,
                                    "src": "1857:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1544,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1470,
                                    "src": "1864: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_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 1539,
                                  "name": "_callOnERC1155Received",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2847,
                                  "src": "1820:22:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,bytes memory)"
                                  }
                                },
                                "id": 1545,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1820:49:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1546,
                              "nodeType": "ExpressionStatement",
                              "src": "1820:49:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1460,
                    "nodeType": "StructuredDocumentation",
                    "src": "1039:33:12",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "f242432a",
                  "id": 1550,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1472,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1236:8:12"
                  },
                  "parameters": {
                    "id": 1471,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1462,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1550,
                        "src": "1112:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1461,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1112:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1464,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1550,
                        "src": "1134:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1463,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1134:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1466,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1550,
                        "src": "1154:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1465,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1154:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1468,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1550,
                        "src": "1174:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1467,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1174:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1470,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1550,
                        "src": "1197:17:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1469,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1197:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1102:118:12"
                  },
                  "returnParameters": {
                    "id": 1473,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1245:0:12"
                  },
                  "scope": 2318,
                  "src": "1077:809:12",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3632
                  ],
                  "body": {
                    "id": 1575,
                    "nodeType": "Block",
                    "src": "2123:127:12",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1568,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1553,
                              "src": "2215:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1569,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1555,
                              "src": "2221:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1570,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1558,
                              "src": "2225:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1571,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1561,
                              "src": "2230:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1572,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1563,
                              "src": "2238: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_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1567,
                            "name": "_safeBatchTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1766,
                            "src": "2192:22:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 1573,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2192:51:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1574,
                        "nodeType": "ExpressionStatement",
                        "src": "2192:51:12"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1551,
                    "nodeType": "StructuredDocumentation",
                    "src": "1892:33:12",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 1576,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1565,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2114:8:12"
                  },
                  "parameters": {
                    "id": 1564,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1553,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1576,
                        "src": "1970:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1552,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1970:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1555,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1576,
                        "src": "1992:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1554,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1992:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1558,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1576,
                        "src": "2012:20:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1556,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2012:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1557,
                          "nodeType": "ArrayTypeName",
                          "src": "2012:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1561,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 1576,
                        "src": "2042:23:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1559,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2042:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1560,
                          "nodeType": "ArrayTypeName",
                          "src": "2042:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1563,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1576,
                        "src": "2075:17:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1562,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2075:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1960:138:12"
                  },
                  "returnParameters": {
                    "id": 1566,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2123:0:12"
                  },
                  "scope": 2318,
                  "src": "1930:320:12",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1765,
                    "nodeType": "Block",
                    "src": "2564:1757:12",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1597,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1592,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1580,
                                "src": "2582:2:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1595,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2596: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": 1594,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2588:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1593,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2588:7:12",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1596,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2588:10:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2582:16:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e7366657220746f207a65726f",
                              "id": 1598,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2600:29:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              },
                              "value": "Inventory: transfer to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              }
                            ],
                            "id": 1591,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2574:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2574:56:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1600,
                        "nodeType": "ExpressionStatement",
                        "src": "2574:56:12"
                      },
                      {
                        "assignments": [
                          1602
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1602,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 1765,
                            "src": "2640:14:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1601,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2640:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1605,
                        "initialValue": {
                          "expression": {
                            "id": 1603,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1583,
                            "src": "2657:3:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 1604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "2657:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2640:27:12"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1610,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1607,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1602,
                                "src": "2685:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 1608,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1586,
                                  "src": "2695:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1609,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2695:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2685:23:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 1611,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2710:32:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              },
                              "value": "Inventory: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              }
                            ],
                            "id": 1606,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2677:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2677:66:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1613,
                        "nodeType": "ExpressionStatement",
                        "src": "2677:66:12"
                      },
                      {
                        "assignments": [
                          1615
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1615,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 1765,
                            "src": "2753:14:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1614,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2753:7:12",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1618,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1616,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "2770:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 1617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2770:12:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2753:29:12"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1621,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1578,
                                  "src": "2814:4:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 1622,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1615,
                                  "src": "2820:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1620,
                                "name": "_isOperatable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2815,
                                "src": "2800:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address,address) view returns (bool)"
                                }
                              },
                              "id": 1623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2800:27:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                              "id": 1624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2829:32:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              },
                              "value": "Inventory: non-approved sender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              }
                            ],
                            "id": 1619,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2792:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2792:70:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1626,
                        "nodeType": "ExpressionStatement",
                        "src": "2792:70:12"
                      },
                      {
                        "assignments": [
                          1628
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1628,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 1765,
                            "src": "2873:22:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1627,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2873:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1629,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2873:22:12"
                      },
                      {
                        "assignments": [
                          1631
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1631,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 1765,
                            "src": "2905:25:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1630,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2905:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1632,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2905:25:12"
                      },
                      {
                        "body": {
                          "id": 1730,
                          "nodeType": "Block",
                          "src": "2974:1037:12",
                          "statements": [
                            {
                              "assignments": [
                                1643
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1643,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1730,
                                  "src": "2988:10:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1642,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2988:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1647,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 1644,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1583,
                                  "src": "3001:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1646,
                                "indexExpression": {
                                  "id": 1645,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1634,
                                  "src": "3005:1:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3001:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2988:19:12"
                            },
                            {
                              "assignments": [
                                1649
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1649,
                                  "mutability": "mutable",
                                  "name": "value",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1730,
                                  "src": "3021:13:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1648,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3021:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1653,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 1650,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1586,
                                  "src": "3037:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1652,
                                "indexExpression": {
                                  "id": 1651,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1634,
                                  "src": "3044:1:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3037:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3021:25:12"
                            },
                            {
                              "condition": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 1654,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1643,
                                    "src": "3064:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1655,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3310,
                                  "src": "3064:18:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (bool)"
                                  }
                                },
                                "id": 1656,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3064:20:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "arguments": [
                                    {
                                      "id": 1667,
                                      "name": "_collectionMaskLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2354,
                                      "src": "3189:21:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 1665,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1643,
                                      "src": "3167:2:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1666,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "isNonFungibleToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3334,
                                    "src": "3167:21:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (bool)"
                                    }
                                  },
                                  "id": 1668,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3167:44:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 1727,
                                  "nodeType": "Block",
                                  "src": "3933:68:12",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                            "id": 1724,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3958:27:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            },
                                            "value": "Inventory: not a token id"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            }
                                          ],
                                          "id": 1723,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "3951:6:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 1725,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3951:35:12",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 1726,
                                      "nodeType": "ExpressionStatement",
                                      "src": "3951:35:12"
                                    }
                                  ]
                                },
                                "id": 1728,
                                "nodeType": "IfStatement",
                                "src": "3163:838:12",
                                "trueBody": {
                                  "id": 1722,
                                  "nodeType": "Block",
                                  "src": "3213:714:12",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 1670,
                                            "name": "from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1578,
                                            "src": "3244:4:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 1671,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1580,
                                            "src": "3250:2:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 1672,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1643,
                                            "src": "3254:2:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 1673,
                                            "name": "value",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1649,
                                            "src": "3258:5:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "hexValue": "74727565",
                                            "id": 1674,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3265:4:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "true"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          ],
                                          "id": 1669,
                                          "name": "_transferNFT",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2284,
                                          "src": "3231:12:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                            "typeString": "function (address,address,uint256,uint256,bool)"
                                          }
                                        },
                                        "id": 1675,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3231:39:12",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 1676,
                                      "nodeType": "ExpressionStatement",
                                      "src": "3231:39:12"
                                    },
                                    {
                                      "assignments": [
                                        1678
                                      ],
                                      "declarations": [
                                        {
                                          "constant": false,
                                          "id": 1678,
                                          "mutability": "mutable",
                                          "name": "nextCollectionId",
                                          "nodeType": "VariableDeclaration",
                                          "scope": 1722,
                                          "src": "3288:24:12",
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "typeName": {
                                            "id": 1677,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3288:7:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "visibility": "internal"
                                        }
                                      ],
                                      "id": 1683,
                                      "initialValue": {
                                        "arguments": [
                                          {
                                            "id": 1681,
                                            "name": "_collectionMaskLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2354,
                                            "src": "3343:21:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 1679,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1643,
                                            "src": "3315:2:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 1680,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getNonFungibleCollection",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3351,
                                          "src": "3315:27:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 1682,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3315:50:12",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "VariableDeclarationStatement",
                                      "src": "3288:77:12"
                                    },
                                    {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 1686,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 1684,
                                          "name": "nfCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1628,
                                          "src": "3387:14:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 1685,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3405:1:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "3387:19:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 1720,
                                        "nodeType": "Block",
                                        "src": "3531:382:12",
                                        "statements": [
                                          {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 1698,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 1696,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1678,
                                                "src": "3557:16:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "!=",
                                              "rightExpression": {
                                                "id": 1697,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1628,
                                                "src": "3577:14:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "3557:34:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 1718,
                                              "nodeType": "Block",
                                              "src": "3827:68:12",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 1716,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "++",
                                                    "prefix": true,
                                                    "src": "3853:19:12",
                                                    "subExpression": {
                                                      "id": 1715,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1631,
                                                      "src": "3855:17:12",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 1717,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3853:19:12"
                                                }
                                              ]
                                            },
                                            "id": 1719,
                                            "nodeType": "IfStatement",
                                            "src": "3553:342:12",
                                            "trueBody": {
                                              "id": 1714,
                                              "nodeType": "Block",
                                              "src": "3593:228:12",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "arguments": [
                                                      {
                                                        "id": 1700,
                                                        "name": "from",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1578,
                                                        "src": "3648:4:12",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "id": 1701,
                                                        "name": "to",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1580,
                                                        "src": "3654:2:12",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "id": 1702,
                                                        "name": "nfCollectionId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1628,
                                                        "src": "3658:14:12",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      {
                                                        "id": 1703,
                                                        "name": "nfCollectionCount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1631,
                                                        "src": "3674:17:12",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      ],
                                                      "id": 1699,
                                                      "name": "_transferNFTUpdateCollection",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2317,
                                                      "src": "3619:28:12",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                        "typeString": "function (address,address,uint256,uint256)"
                                                      }
                                                    },
                                                    "id": 1704,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3619:73:12",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_tuple$__$",
                                                      "typeString": "tuple()"
                                                    }
                                                  },
                                                  "id": 1705,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3619:73:12"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 1708,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 1706,
                                                      "name": "nfCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1628,
                                                      "src": "3718:14:12",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "id": 1707,
                                                      "name": "nextCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1678,
                                                      "src": "3735:16:12",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "3718:33:12",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 1709,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3718:33:12"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 1712,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 1710,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1631,
                                                      "src": "3777:17:12",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "hexValue": "31",
                                                      "id": 1711,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "3797:1:12",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "3777:21:12",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 1713,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3777:21:12"
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      },
                                      "id": 1721,
                                      "nodeType": "IfStatement",
                                      "src": "3383:530:12",
                                      "trueBody": {
                                        "id": 1695,
                                        "nodeType": "Block",
                                        "src": "3408:117:12",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 1689,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 1687,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1628,
                                                "src": "3430:14:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "id": 1688,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1678,
                                                "src": "3447:16:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "3430:33:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 1690,
                                            "nodeType": "ExpressionStatement",
                                            "src": "3430:33:12"
                                          },
                                          {
                                            "expression": {
                                              "id": 1693,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 1691,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1631,
                                                "src": "3485:17:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "hexValue": "31",
                                                "id": 1692,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3505:1:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "3485:21:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 1694,
                                            "nodeType": "ExpressionStatement",
                                            "src": "3485:21:12"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 1729,
                              "nodeType": "IfStatement",
                              "src": "3060:941:12",
                              "trueBody": {
                                "id": 1664,
                                "nodeType": "Block",
                                "src": "3086:71:12",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 1658,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1578,
                                          "src": "3122:4:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 1659,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1580,
                                          "src": "3128:2:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 1660,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1643,
                                          "src": "3132:2:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 1661,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1649,
                                          "src": "3136:5:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 1657,
                                        "name": "_transferFungible",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2209,
                                        "src": "3104:17:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,uint256,uint256)"
                                        }
                                      },
                                      "id": 1662,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3104:38:12",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1663,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3104:38:12"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1636,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1634,
                            "src": "2956:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 1637,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1602,
                            "src": "2961:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2956:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1731,
                        "initializationExpression": {
                          "assignments": [
                            1634
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1634,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 1731,
                              "src": "2945:9:12",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1633,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2945:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1635,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2945:9:12"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1640,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "2969:3:12",
                            "subExpression": {
                              "id": 1639,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1634,
                              "src": "2971:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1641,
                          "nodeType": "ExpressionStatement",
                          "src": "2969:3:12"
                        },
                        "nodeType": "ForStatement",
                        "src": "2940:1071:12"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1732,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1628,
                            "src": "4025:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1733,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4043:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4025:19:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1743,
                        "nodeType": "IfStatement",
                        "src": "4021:123:12",
                        "trueBody": {
                          "id": 1742,
                          "nodeType": "Block",
                          "src": "4046:98:12",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1736,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1578,
                                    "src": "4089:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1737,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1580,
                                    "src": "4095:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1738,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1628,
                                    "src": "4099:14:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1739,
                                    "name": "nfCollectionCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1631,
                                    "src": "4115:17:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1735,
                                  "name": "_transferNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2317,
                                  "src": "4060:28:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256)"
                                  }
                                },
                                "id": 1740,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4060:73:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1741,
                              "nodeType": "ExpressionStatement",
                              "src": "4060:73:12"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1745,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1615,
                              "src": "4173:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1746,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1578,
                              "src": "4181:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1747,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1580,
                              "src": "4187:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1748,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1583,
                              "src": "4191:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1749,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1586,
                              "src": "4196:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 1744,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3444,
                            "src": "4159:13:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 1750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4159:44:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1751,
                        "nodeType": "EmitStatement",
                        "src": "4154:49:12"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 1752,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1580,
                              "src": "4217:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 1753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1284,
                            "src": "4217:13:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 1754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4217:15:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1764,
                        "nodeType": "IfStatement",
                        "src": "4213:102:12",
                        "trueBody": {
                          "id": 1763,
                          "nodeType": "Block",
                          "src": "4234:81:12",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1756,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1578,
                                    "src": "4276:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1757,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1580,
                                    "src": "4282:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1758,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1583,
                                    "src": "4286:3:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 1759,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1586,
                                    "src": "4291:6:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 1760,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1588,
                                    "src": "4299: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_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 1755,
                                  "name": "_callOnERC1155BatchReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2881,
                                  "src": "4248:27:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                                  }
                                },
                                "id": 1761,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4248:56:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1762,
                              "nodeType": "ExpressionStatement",
                              "src": "4248:56:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 1766,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1589,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1578,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1766,
                        "src": "2426:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1577,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2426:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1580,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1766,
                        "src": "2448:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1579,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2448:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1583,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1766,
                        "src": "2468:20:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1581,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2468:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1582,
                          "nodeType": "ArrayTypeName",
                          "src": "2468:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1586,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 1766,
                        "src": "2498:23:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1584,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2498:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1585,
                          "nodeType": "ArrayTypeName",
                          "src": "2498:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1588,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1766,
                        "src": "2531:17:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1587,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2531:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2416:138:12"
                  },
                  "returnParameters": {
                    "id": 1590,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2564:0:12"
                  },
                  "scope": 2318,
                  "src": "2385:1936:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1844,
                    "nodeType": "Block",
                    "src": "4451:516:12",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1783,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1778,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1768,
                                "src": "4469:2:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1781,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4483: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": 1780,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4475:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1779,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4475:7:12",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1782,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4475:10:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4469:16:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206d696e7420746f207a65726f",
                              "id": 1784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4487:25:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              },
                              "value": "Inventory: mint to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              }
                            ],
                            "id": 1777,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4461:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1785,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4461:52:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1786,
                        "nodeType": "ExpressionStatement",
                        "src": "4461:52:12"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 1787,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1770,
                              "src": "4528:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1788,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3310,
                            "src": "4528:18:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (bool)"
                            }
                          },
                          "id": 1789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4528:20:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "arguments": [
                              {
                                "id": 1799,
                                "name": "_collectionMaskLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2354,
                                "src": "4635:21:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 1797,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1770,
                                "src": "4613:2:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isNonFungibleToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3334,
                              "src": "4613:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (bool)"
                              }
                            },
                            "id": 1800,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4613:44:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 1813,
                            "nodeType": "Block",
                            "src": "4720:60:12",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                      "id": 1810,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4741:27:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      },
                                      "value": "Inventory: not a token id"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      }
                                    ],
                                    "id": 1809,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "4734:6:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 1811,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4734:35:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 1812,
                                "nodeType": "ExpressionStatement",
                                "src": "4734:35:12"
                              }
                            ]
                          },
                          "id": 1814,
                          "nodeType": "IfStatement",
                          "src": "4609:171:12",
                          "trueBody": {
                            "id": 1808,
                            "nodeType": "Block",
                            "src": "4659:55:12",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 1802,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1768,
                                      "src": "4682:2:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 1803,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1770,
                                      "src": "4686:2:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 1804,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1772,
                                      "src": "4690:5:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 1805,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4697:5:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 1801,
                                    "name": "_mintNFT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2152,
                                    "src": "4673:8:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                      "typeString": "function (address,uint256,uint256,bool)"
                                    }
                                  },
                                  "id": 1806,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4673:30:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 1807,
                                "nodeType": "ExpressionStatement",
                                "src": "4673:30:12"
                              }
                            ]
                          }
                        },
                        "id": 1815,
                        "nodeType": "IfStatement",
                        "src": "4524:256:12",
                        "trueBody": {
                          "id": 1796,
                          "nodeType": "Block",
                          "src": "4550:53:12",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1791,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1768,
                                    "src": "4578:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1792,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1770,
                                    "src": "4582:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1793,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1772,
                                    "src": "4586:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1790,
                                  "name": "_mintFungible",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2089,
                                  "src": "4564:13:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 1794,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4564:28:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1795,
                              "nodeType": "ExpressionStatement",
                              "src": "4564:28:12"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 1817,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "4810:10:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 1818,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4810:12:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1821,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4832: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": 1820,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4824:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1819,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4824:7:12",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1822,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4824:10:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 1823,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1768,
                              "src": "4836:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1824,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1770,
                              "src": "4840:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 1825,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1772,
                              "src": "4844:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1816,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3430,
                            "src": "4795:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 1826,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4795:55:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1827,
                        "nodeType": "EmitStatement",
                        "src": "4790:60:12"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 1828,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1768,
                              "src": "4864:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 1829,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1284,
                            "src": "4864:13:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 1830,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4864:15:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1843,
                        "nodeType": "IfStatement",
                        "src": "4860:101:12",
                        "trueBody": {
                          "id": 1842,
                          "nodeType": "Block",
                          "src": "4881:80:12",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 1834,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4926: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": 1833,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4918:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1832,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4918:7:12",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1835,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4918:10:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 1836,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1768,
                                    "src": "4930:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1837,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1770,
                                    "src": "4934:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1838,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1772,
                                    "src": "4938:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1839,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1774,
                                    "src": "4945:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 1831,
                                  "name": "_callOnERC1155Received",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2847,
                                  "src": "4895:22:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,bytes memory)"
                                  }
                                },
                                "id": 1840,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4895:55:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1841,
                              "nodeType": "ExpressionStatement",
                              "src": "4895:55:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 1845,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1775,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1768,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1845,
                        "src": "4355:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1767,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4355:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1770,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1845,
                        "src": "4375:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1769,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4375:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1772,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1845,
                        "src": "4395:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1771,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4395:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1774,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1845,
                        "src": "4418:17:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1773,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4418:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4345:96:12"
                  },
                  "returnParameters": {
                    "id": 1776,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4451:0:12"
                  },
                  "scope": 2318,
                  "src": "4327:640:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2038,
                    "nodeType": "Block",
                    "src": "5130:1718:12",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1864,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1859,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1847,
                                "src": "5148:2:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1862,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5162: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": 1861,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5154:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1860,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5154:7:12",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1863,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5154:10:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5148:16:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206d696e7420746f207a65726f",
                              "id": 1865,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5166:25:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              },
                              "value": "Inventory: mint to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              }
                            ],
                            "id": 1858,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5140:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5140:52:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1867,
                        "nodeType": "ExpressionStatement",
                        "src": "5140:52:12"
                      },
                      {
                        "assignments": [
                          1869
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1869,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 2038,
                            "src": "5202:14:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1868,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5202:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1872,
                        "initialValue": {
                          "expression": {
                            "id": 1870,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1850,
                            "src": "5219:3:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 1871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "5219:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5202:27:12"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1877,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1874,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1869,
                                "src": "5247:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 1875,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1853,
                                  "src": "5257:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1876,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "5257:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5247:23:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 1878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5272:32:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              },
                              "value": "Inventory: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              }
                            ],
                            "id": 1873,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5239:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1879,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5239:66:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1880,
                        "nodeType": "ExpressionStatement",
                        "src": "5239:66:12"
                      },
                      {
                        "assignments": [
                          1882
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1882,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 2038,
                            "src": "5316:22:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1881,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5316:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1883,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5316:22:12"
                      },
                      {
                        "assignments": [
                          1885
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1885,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 2038,
                            "src": "5348:25:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1884,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5348:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1886,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5348:25:12"
                      },
                      {
                        "body": {
                          "id": 1989,
                          "nodeType": "Block",
                          "src": "5417:1066:12",
                          "statements": [
                            {
                              "assignments": [
                                1897
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1897,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1989,
                                  "src": "5431:10:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1896,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5431:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1901,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 1898,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1850,
                                  "src": "5444:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1900,
                                "indexExpression": {
                                  "id": 1899,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1888,
                                  "src": "5448:1:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5444:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5431:19:12"
                            },
                            {
                              "assignments": [
                                1903
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1903,
                                  "mutability": "mutable",
                                  "name": "value",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1989,
                                  "src": "5464:13:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1902,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5464:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1907,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 1904,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1853,
                                  "src": "5480:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1906,
                                "indexExpression": {
                                  "id": 1905,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1888,
                                  "src": "5487:1:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5480:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5464:25:12"
                            },
                            {
                              "condition": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 1908,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1897,
                                    "src": "5507:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1909,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3310,
                                  "src": "5507:18:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (bool)"
                                  }
                                },
                                "id": 1910,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5507:20:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "arguments": [
                                    {
                                      "id": 1920,
                                      "name": "_collectionMaskLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2354,
                                      "src": "5622:21:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 1918,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1897,
                                      "src": "5600:2:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1919,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "isNonFungibleToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3334,
                                    "src": "5600:21:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (bool)"
                                    }
                                  },
                                  "id": 1921,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5600:44:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 1986,
                                  "nodeType": "Block",
                                  "src": "6405:68:12",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                            "id": 1983,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6430:27:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            },
                                            "value": "Inventory: not a token id"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            }
                                          ],
                                          "id": 1982,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "6423:6:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 1984,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6423:35:12",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 1985,
                                      "nodeType": "ExpressionStatement",
                                      "src": "6423:35:12"
                                    }
                                  ]
                                },
                                "id": 1987,
                                "nodeType": "IfStatement",
                                "src": "5596:877:12",
                                "trueBody": {
                                  "id": 1981,
                                  "nodeType": "Block",
                                  "src": "5646:753:12",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 1923,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1847,
                                            "src": "5673:2:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 1924,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1897,
                                            "src": "5677:2:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 1925,
                                            "name": "value",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1903,
                                            "src": "5681:5:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "hexValue": "74727565",
                                            "id": 1926,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5688:4:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "true"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          ],
                                          "id": 1922,
                                          "name": "_mintNFT",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2152,
                                          "src": "5664:8:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                            "typeString": "function (address,uint256,uint256,bool)"
                                          }
                                        },
                                        "id": 1927,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5664:29:12",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 1928,
                                      "nodeType": "ExpressionStatement",
                                      "src": "5664:29:12"
                                    },
                                    {
                                      "assignments": [
                                        1930
                                      ],
                                      "declarations": [
                                        {
                                          "constant": false,
                                          "id": 1930,
                                          "mutability": "mutable",
                                          "name": "nextCollectionId",
                                          "nodeType": "VariableDeclaration",
                                          "scope": 1981,
                                          "src": "5711:24:12",
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "typeName": {
                                            "id": 1929,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "5711:7:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "visibility": "internal"
                                        }
                                      ],
                                      "id": 1935,
                                      "initialValue": {
                                        "arguments": [
                                          {
                                            "id": 1933,
                                            "name": "_collectionMaskLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2354,
                                            "src": "5766:21:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 1931,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1897,
                                            "src": "5738:2:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 1932,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getNonFungibleCollection",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3351,
                                          "src": "5738:27:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 1934,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5738:50:12",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "VariableDeclarationStatement",
                                      "src": "5711:77:12"
                                    },
                                    {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 1938,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 1936,
                                          "name": "nfCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1882,
                                          "src": "5810:14:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 1937,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5828:1:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "5810:19:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 1979,
                                        "nodeType": "Block",
                                        "src": "5954:431:12",
                                        "statements": [
                                          {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 1950,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 1948,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1930,
                                                "src": "5980:16:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "!=",
                                              "rightExpression": {
                                                "id": 1949,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1882,
                                                "src": "6000:14:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "5980:34:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 1977,
                                              "nodeType": "Block",
                                              "src": "6299:68:12",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 1975,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "++",
                                                    "prefix": true,
                                                    "src": "6325:19:12",
                                                    "subExpression": {
                                                      "id": 1974,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1885,
                                                      "src": "6327:17:12",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 1976,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "6325:19:12"
                                                }
                                              ]
                                            },
                                            "id": 1978,
                                            "nodeType": "IfStatement",
                                            "src": "5976:391:12",
                                            "trueBody": {
                                              "id": 1973,
                                              "nodeType": "Block",
                                              "src": "6016:277:12",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 1957,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "baseExpression": {
                                                        "baseExpression": {
                                                          "id": 1951,
                                                          "name": "_balances",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 2375,
                                                          "src": "6042:9:12",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                                                          }
                                                        },
                                                        "id": 1954,
                                                        "indexExpression": {
                                                          "id": 1952,
                                                          "name": "nfCollectionId",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 1882,
                                                          "src": "6052:14:12",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "6042:25:12",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                          "typeString": "mapping(address => uint256)"
                                                        }
                                                      },
                                                      "id": 1955,
                                                      "indexExpression": {
                                                        "id": 1953,
                                                        "name": "to",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1847,
                                                        "src": "6068:2:12",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": true,
                                                      "nodeType": "IndexAccess",
                                                      "src": "6042:29:12",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                      "id": 1956,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1885,
                                                      "src": "6075:17:12",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "6042:50:12",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 1958,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "6042:50:12"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 1963,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "baseExpression": {
                                                        "id": 1959,
                                                        "name": "_supplies",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2379,
                                                        "src": "6118:9:12",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                          "typeString": "mapping(uint256 => uint256)"
                                                        }
                                                      },
                                                      "id": 1961,
                                                      "indexExpression": {
                                                        "id": 1960,
                                                        "name": "nfCollectionId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1882,
                                                        "src": "6128:14:12",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": true,
                                                      "nodeType": "IndexAccess",
                                                      "src": "6118:25:12",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                      "id": 1962,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1885,
                                                      "src": "6147:17:12",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "6118:46:12",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 1964,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "6118:46:12"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 1967,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 1965,
                                                      "name": "nfCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1882,
                                                      "src": "6190:14:12",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "id": 1966,
                                                      "name": "nextCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1930,
                                                      "src": "6207:16:12",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "6190:33:12",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 1968,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "6190:33:12"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 1971,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 1969,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1885,
                                                      "src": "6249:17:12",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "hexValue": "31",
                                                      "id": 1970,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "6269:1:12",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "6249:21:12",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 1972,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "6249:21:12"
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      },
                                      "id": 1980,
                                      "nodeType": "IfStatement",
                                      "src": "5806:579:12",
                                      "trueBody": {
                                        "id": 1947,
                                        "nodeType": "Block",
                                        "src": "5831:117:12",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 1941,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 1939,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1882,
                                                "src": "5853:14:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "id": 1940,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1930,
                                                "src": "5870:16:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "5853:33:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 1942,
                                            "nodeType": "ExpressionStatement",
                                            "src": "5853:33:12"
                                          },
                                          {
                                            "expression": {
                                              "id": 1945,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 1943,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1885,
                                                "src": "5908:17:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "hexValue": "31",
                                                "id": 1944,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5928:1:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "5908:21:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 1946,
                                            "nodeType": "ExpressionStatement",
                                            "src": "5908:21:12"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 1988,
                              "nodeType": "IfStatement",
                              "src": "5503:970:12",
                              "trueBody": {
                                "id": 1917,
                                "nodeType": "Block",
                                "src": "5529:61:12",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 1912,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1847,
                                          "src": "5561:2:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 1913,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1897,
                                          "src": "5565:2:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 1914,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1903,
                                          "src": "5569:5:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 1911,
                                        "name": "_mintFungible",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2089,
                                        "src": "5547:13:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256,uint256)"
                                        }
                                      },
                                      "id": 1915,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5547:28:12",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1916,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5547:28:12"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1890,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1888,
                            "src": "5399:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 1891,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1869,
                            "src": "5404:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5399:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1990,
                        "initializationExpression": {
                          "assignments": [
                            1888
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1888,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 1990,
                              "src": "5388:9:12",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1887,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5388:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1889,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "5388:9:12"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1894,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "5412:3:12",
                            "subExpression": {
                              "id": 1893,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1888,
                              "src": "5414:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1895,
                          "nodeType": "ExpressionStatement",
                          "src": "5412:3:12"
                        },
                        "nodeType": "ForStatement",
                        "src": "5383:1100:12"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1991,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1882,
                            "src": "6497:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1992,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6515:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6497:19:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2009,
                        "nodeType": "IfStatement",
                        "src": "6493:160:12",
                        "trueBody": {
                          "id": 2008,
                          "nodeType": "Block",
                          "src": "6518:135:12",
                          "statements": [
                            {
                              "expression": {
                                "id": 2000,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 1994,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2375,
                                      "src": "6532:9:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 1997,
                                    "indexExpression": {
                                      "id": 1995,
                                      "name": "nfCollectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1882,
                                      "src": "6542:14:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6532:25:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 1998,
                                  "indexExpression": {
                                    "id": 1996,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1847,
                                    "src": "6558:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6532:29:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 1999,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1885,
                                  "src": "6565:17:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6532:50:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2001,
                              "nodeType": "ExpressionStatement",
                              "src": "6532:50:12"
                            },
                            {
                              "expression": {
                                "id": 2006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 2002,
                                    "name": "_supplies",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2379,
                                    "src": "6596:9:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 2004,
                                  "indexExpression": {
                                    "id": 2003,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1882,
                                    "src": "6606:14:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6596:25:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 2005,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1885,
                                  "src": "6625:17:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6596:46:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2007,
                              "nodeType": "ExpressionStatement",
                              "src": "6596:46:12"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 2011,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "6682:10:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 2012,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6682:12:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 2015,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6704: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": 2014,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6696:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2013,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6696:7:12",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2016,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6696:10:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 2017,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1847,
                              "src": "6708:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2018,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1850,
                              "src": "6712:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 2019,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1853,
                              "src": "6717:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 2010,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3444,
                            "src": "6668:13:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 2020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6668:56:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2021,
                        "nodeType": "EmitStatement",
                        "src": "6663:61:12"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 2022,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1847,
                              "src": "6738:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1284,
                            "src": "6738:13:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 2024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6738:15:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2037,
                        "nodeType": "IfStatement",
                        "src": "6734:108:12",
                        "trueBody": {
                          "id": 2036,
                          "nodeType": "Block",
                          "src": "6755:87:12",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 2028,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6805: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": 2027,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6797:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2026,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6797:7:12",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2029,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6797:10:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 2030,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1847,
                                    "src": "6809:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2031,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1850,
                                    "src": "6813:3:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 2032,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1853,
                                    "src": "6818:6:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 2033,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1855,
                                    "src": "6826:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 2025,
                                  "name": "_callOnERC1155BatchReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2881,
                                  "src": "6769:27:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                                  }
                                },
                                "id": 2034,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6769:62:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2035,
                              "nodeType": "ExpressionStatement",
                              "src": "6769:62:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 2039,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeBatchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1856,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1847,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2039,
                        "src": "5006:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1846,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5006:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1850,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 2039,
                        "src": "5026:20:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1848,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5026:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1849,
                          "nodeType": "ArrayTypeName",
                          "src": "5026:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1853,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 2039,
                        "src": "5056:23:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1851,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5056:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1852,
                          "nodeType": "ArrayTypeName",
                          "src": "5056:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1855,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2039,
                        "src": "5089:17:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1854,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5089:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4996:116:12"
                  },
                  "returnParameters": {
                    "id": 1857,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5130:0:12"
                  },
                  "scope": 2318,
                  "src": "4973:1875:12",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2088,
                    "nodeType": "Block",
                    "src": "7084:375:12",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2051,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2049,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2045,
                                "src": "7102:5:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 2050,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7111:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7102:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2076616c7565",
                              "id": 2052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7114:23:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              },
                              "value": "Inventory: zero value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              }
                            ],
                            "id": 2048,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7094:7:12",
                            "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": "7094:44:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2054,
                        "nodeType": "ExpressionStatement",
                        "src": "7094:44:12"
                      },
                      {
                        "assignments": [
                          2056
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2056,
                            "mutability": "mutable",
                            "name": "supply",
                            "nodeType": "VariableDeclaration",
                            "scope": 2088,
                            "src": "7148:14:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2055,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7148:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2060,
                        "initialValue": {
                          "baseExpression": {
                            "id": 2057,
                            "name": "_supplies",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2379,
                            "src": "7165:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 2059,
                          "indexExpression": {
                            "id": 2058,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2043,
                            "src": "7175:2:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7165:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7148:30:12"
                      },
                      {
                        "assignments": [
                          2062
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2062,
                            "mutability": "mutable",
                            "name": "newSupply",
                            "nodeType": "VariableDeclaration",
                            "scope": 2088,
                            "src": "7188:17:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2061,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7188:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2066,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2065,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2063,
                            "name": "supply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2056,
                            "src": "7208:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 2064,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2045,
                            "src": "7217:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7208:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7188:34:12"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2070,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2068,
                                "name": "newSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2062,
                                "src": "7240:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "id": 2069,
                                "name": "supply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2056,
                                "src": "7252:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7240:18:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20737570706c79206f766572666c6f77",
                              "id": 2071,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7260:28:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c0eccaf1875915e4c46180a27a2af4eaa97d0b12ace18db3c53e487a78e65185",
                                "typeString": "literal_string \"Inventory: supply overflow\""
                              },
                              "value": "Inventory: supply overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c0eccaf1875915e4c46180a27a2af4eaa97d0b12ace18db3c53e487a78e65185",
                                "typeString": "literal_string \"Inventory: supply overflow\""
                              }
                            ],
                            "id": 2067,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7232:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2072,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7232:57:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2073,
                        "nodeType": "ExpressionStatement",
                        "src": "7232:57:12"
                      },
                      {
                        "expression": {
                          "id": 2078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2074,
                              "name": "_supplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2379,
                              "src": "7299:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 2076,
                            "indexExpression": {
                              "id": 2075,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2043,
                              "src": "7309:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7299:13:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2077,
                            "name": "newSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2062,
                            "src": "7315:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7299:25:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2079,
                        "nodeType": "ExpressionStatement",
                        "src": "7299:25:12"
                      },
                      {
                        "expression": {
                          "id": 2086,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 2080,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2375,
                                "src": "7426:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 2083,
                              "indexExpression": {
                                "id": 2081,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2043,
                                "src": "7436:2:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7426:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 2084,
                            "indexExpression": {
                              "id": 2082,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2041,
                              "src": "7440:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7426:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 2085,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2045,
                            "src": "7447:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7426:26:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2087,
                        "nodeType": "ExpressionStatement",
                        "src": "7426:26:12"
                      }
                    ]
                  },
                  "id": 2089,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mintFungible",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2046,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2041,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2089,
                        "src": "7015:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2040,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7015:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2043,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 2089,
                        "src": "7035:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2042,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7035:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2045,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 2089,
                        "src": "7055:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2044,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7055:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7005:69:12"
                  },
                  "returnParameters": {
                    "id": 2047,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7084:0:12"
                  },
                  "scope": 2318,
                  "src": "6983:476:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2151,
                    "nodeType": "Block",
                    "src": "7583:590:12",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2103,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2101,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2095,
                                "src": "7601:5:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 2102,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7610:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "7601:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2077726f6e67204e46542076616c7565",
                              "id": 2104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7613:28:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              },
                              "value": "Inventory: wrong NFT value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              }
                            ],
                            "id": 2100,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7593:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7593:49:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2106,
                        "nodeType": "ExpressionStatement",
                        "src": "7593:49:12"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2112,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 2108,
                                  "name": "_owners",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2383,
                                  "src": "7660:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 2110,
                                "indexExpression": {
                                  "id": 2109,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2093,
                                  "src": "7668:2:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7660:11:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 2111,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7675:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7660:16:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206578697374696e672f6275726e74204e4654",
                              "id": 2113,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7678:31:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dc6b072f9dcb9a5cd9efd4703d0dd3eb9f2653b441c9fc483eba48e59797e83d",
                                "typeString": "literal_string \"Inventory: existing/burnt NFT\""
                              },
                              "value": "Inventory: existing/burnt NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dc6b072f9dcb9a5cd9efd4703d0dd3eb9f2653b441c9fc483eba48e59797e83d",
                                "typeString": "literal_string \"Inventory: existing/burnt NFT\""
                              }
                            ],
                            "id": 2107,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7652:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7652:58:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2115,
                        "nodeType": "ExpressionStatement",
                        "src": "7652:58:12"
                      },
                      {
                        "expression": {
                          "id": 2126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2116,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2383,
                              "src": "7721:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 2118,
                            "indexExpression": {
                              "id": 2117,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2093,
                              "src": "7729:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7721:11:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 2123,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2091,
                                    "src": "7751:2:12",
                                    "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": "7743:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 2121,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7743:7:12",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2124,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7743:11:12",
                                "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": "7735:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 2119,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7735:7:12",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2125,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7735:20:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7721:34:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2127,
                        "nodeType": "ExpressionStatement",
                        "src": "7721:34:12"
                      },
                      {
                        "condition": {
                          "id": 2129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "7770:8:12",
                          "subExpression": {
                            "id": 2128,
                            "name": "isBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2097,
                            "src": "7771:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2150,
                        "nodeType": "IfStatement",
                        "src": "7766:401:12",
                        "trueBody": {
                          "id": 2149,
                          "nodeType": "Block",
                          "src": "7780:387:12",
                          "statements": [
                            {
                              "assignments": [
                                2131
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2131,
                                  "mutability": "mutable",
                                  "name": "collectionId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2149,
                                  "src": "7794:20:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2130,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7794:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2136,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 2134,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2354,
                                    "src": "7845:21:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 2132,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2093,
                                    "src": "7817:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2133,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getNonFungibleCollection",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3351,
                                  "src": "7817:27:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2135,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7817:50:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7794:73:12"
                            },
                            {
                              "expression": {
                                "id": 2140,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "8031:25:12",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 2137,
                                    "name": "_supplies",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2379,
                                    "src": "8033:9:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 2139,
                                  "indexExpression": {
                                    "id": 2138,
                                    "name": "collectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2131,
                                    "src": "8043:12:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8033:23:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2141,
                              "nodeType": "ExpressionStatement",
                              "src": "8031:25:12"
                            },
                            {
                              "expression": {
                                "id": 2147,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "8127:29:12",
                                "subExpression": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 2142,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2375,
                                      "src": "8129:9:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 2144,
                                    "indexExpression": {
                                      "id": 2143,
                                      "name": "collectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2131,
                                      "src": "8139:12:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8129:23:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 2146,
                                  "indexExpression": {
                                    "id": 2145,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2091,
                                    "src": "8153:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8129:27:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2148,
                              "nodeType": "ExpressionStatement",
                              "src": "8127:29:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 2152,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mintNFT",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2098,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2091,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2152,
                        "src": "7492:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2090,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7492:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2093,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 2152,
                        "src": "7512:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2092,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7512:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2095,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 2152,
                        "src": "7532:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2094,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7532:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2097,
                        "mutability": "mutable",
                        "name": "isBatch",
                        "nodeType": "VariableDeclaration",
                        "scope": 2152,
                        "src": "7555:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2096,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7555:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7482:91:12"
                  },
                  "returnParameters": {
                    "id": 2099,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7583:0:12"
                  },
                  "scope": 2318,
                  "src": "7465:708:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2208,
                    "nodeType": "Block",
                    "src": "8306:360:12",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2164,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2160,
                                "src": "8324:5:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 2165,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8333:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "8324:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2076616c7565",
                              "id": 2167,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8336:23:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              },
                              "value": "Inventory: zero value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              }
                            ],
                            "id": 2163,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8316:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8316:44:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2169,
                        "nodeType": "ExpressionStatement",
                        "src": "8316:44:12"
                      },
                      {
                        "assignments": [
                          2171
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2171,
                            "mutability": "mutable",
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 2208,
                            "src": "8370:15:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2170,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8370:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2177,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 2172,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2375,
                              "src": "8388:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 2174,
                            "indexExpression": {
                              "id": 2173,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2158,
                              "src": "8398:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8388:13:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2176,
                          "indexExpression": {
                            "id": 2175,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2154,
                            "src": "8402:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8388:19:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8370:37:12"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2179,
                                "name": "balance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2171,
                                "src": "8425:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 2180,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2160,
                                "src": "8436:5:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8425:16:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365",
                              "id": 2182,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8443:31:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_82c893371492309285d50bc6a7cf0711f02e83a8e143785e5e0b985266953be1",
                                "typeString": "literal_string \"Inventory: not enough balance\""
                              },
                              "value": "Inventory: not enough balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_82c893371492309285d50bc6a7cf0711f02e83a8e143785e5e0b985266953be1",
                                "typeString": "literal_string \"Inventory: not enough balance\""
                              }
                            ],
                            "id": 2178,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8417:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8417:58:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2184,
                        "nodeType": "ExpressionStatement",
                        "src": "8417:58:12"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2185,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2154,
                            "src": "8489:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 2186,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2156,
                            "src": "8497:2:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "8489:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2207,
                        "nodeType": "IfStatement",
                        "src": "8485:175:12",
                        "trueBody": {
                          "id": 2206,
                          "nodeType": "Block",
                          "src": "8501:159:12",
                          "statements": [
                            {
                              "expression": {
                                "id": 2196,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 2188,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2375,
                                      "src": "8515:9:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 2191,
                                    "indexExpression": {
                                      "id": 2189,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2158,
                                      "src": "8525:2:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8515:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 2192,
                                  "indexExpression": {
                                    "id": 2190,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2154,
                                    "src": "8529:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8515:19:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2195,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 2193,
                                    "name": "balance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2171,
                                    "src": "8537:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 2194,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2160,
                                    "src": "8547:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "8537:15:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8515:37:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2197,
                              "nodeType": "ExpressionStatement",
                              "src": "8515:37:12"
                            },
                            {
                              "expression": {
                                "id": 2204,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 2198,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2375,
                                      "src": "8623:9:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 2201,
                                    "indexExpression": {
                                      "id": 2199,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2158,
                                      "src": "8633:2:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8623:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 2202,
                                  "indexExpression": {
                                    "id": 2200,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2156,
                                    "src": "8637:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8623:17:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 2203,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2160,
                                  "src": "8644:5:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8623:26:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2205,
                              "nodeType": "ExpressionStatement",
                              "src": "8623:26:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 2209,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferFungible",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2161,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2154,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2209,
                        "src": "8215:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2153,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8215:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2156,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2209,
                        "src": "8237:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2155,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8237:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2158,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 2209,
                        "src": "8257:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2157,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8257:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2160,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 2209,
                        "src": "8277:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2159,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8277:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8205:91:12"
                  },
                  "returnParameters": {
                    "id": 2162,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8306:0:12"
                  },
                  "scope": 2318,
                  "src": "8179:487:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2283,
                    "nodeType": "Block",
                    "src": "8816:539:12",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2225,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2223,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2217,
                                "src": "8834:5:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 2224,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8843:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "8834:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2077726f6e67204e46542076616c7565",
                              "id": 2226,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8846:28:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              },
                              "value": "Inventory: wrong NFT value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              }
                            ],
                            "id": 2222,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8826:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8826:49:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2228,
                        "nodeType": "ExpressionStatement",
                        "src": "8826:49:12"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2230,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2211,
                                "src": "8893:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 2235,
                                          "name": "_owners",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2383,
                                          "src": "8917:7:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 2237,
                                        "indexExpression": {
                                          "id": 2236,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2215,
                                          "src": "8925:2:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "8917:11:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 2234,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8909:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 2233,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8909:7:12",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2238,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8909:20:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 2232,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8901:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2231,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8901:7:12",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2239,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8901:29:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "8893:37:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6f776e6564204e4654",
                              "id": 2241,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8932:26:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cb299a32a7af2eac6d18f568f522d952ea6c98cc6d0ce67299c271d8f74679c8",
                                "typeString": "literal_string \"Inventory: non-owned NFT\""
                              },
                              "value": "Inventory: non-owned NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cb299a32a7af2eac6d18f568f522d952ea6c98cc6d0ce67299c271d8f74679c8",
                                "typeString": "literal_string \"Inventory: non-owned NFT\""
                              }
                            ],
                            "id": 2229,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8885:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2242,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8885:74:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2243,
                        "nodeType": "ExpressionStatement",
                        "src": "8885:74:12"
                      },
                      {
                        "expression": {
                          "id": 2254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2244,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2383,
                              "src": "8969:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 2246,
                            "indexExpression": {
                              "id": 2245,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2215,
                              "src": "8977:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8969:11:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 2251,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2213,
                                    "src": "8999:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2250,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8991:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 2249,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8991:7:12",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8991:11:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 2248,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8983:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 2247,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8983:7:12",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2253,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8983:20:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8969:34:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2255,
                        "nodeType": "ExpressionStatement",
                        "src": "8969:34:12"
                      },
                      {
                        "condition": {
                          "id": 2257,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "9017:8:12",
                          "subExpression": {
                            "id": 2256,
                            "name": "isBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2219,
                            "src": "9018:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2282,
                        "nodeType": "IfStatement",
                        "src": "9013:336:12",
                        "trueBody": {
                          "id": 2281,
                          "nodeType": "Block",
                          "src": "9027:322:12",
                          "statements": [
                            {
                              "assignments": [
                                2259
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2259,
                                  "mutability": "mutable",
                                  "name": "collectionId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2281,
                                  "src": "9041:20:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2258,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9041:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2264,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 2262,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2354,
                                    "src": "9092:21:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 2260,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2215,
                                    "src": "9064:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2261,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getNonFungibleCollection",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3351,
                                  "src": "9064:27:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2263,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9064:50:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9041:73:12"
                            },
                            {
                              "expression": {
                                "id": 2271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 2265,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2375,
                                      "src": "9201:9:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 2268,
                                    "indexExpression": {
                                      "id": 2266,
                                      "name": "collectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2259,
                                      "src": "9211:12:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9201:23:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 2269,
                                  "indexExpression": {
                                    "id": 2267,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2211,
                                    "src": "9225:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "9201:29:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 2270,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9234:1:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "9201:34:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2272,
                              "nodeType": "ExpressionStatement",
                              "src": "9201:34:12"
                            },
                            {
                              "expression": {
                                "id": 2279,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 2273,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2375,
                                      "src": "9306:9:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 2276,
                                    "indexExpression": {
                                      "id": 2274,
                                      "name": "collectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2259,
                                      "src": "9316:12:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9306:23:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 2277,
                                  "indexExpression": {
                                    "id": 2275,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2213,
                                    "src": "9330:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "9306:27:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 2278,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9337:1:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "9306:32:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2280,
                              "nodeType": "ExpressionStatement",
                              "src": "9306:32:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 2284,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferNFT",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2220,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2211,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2284,
                        "src": "8703:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2210,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8703:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2213,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2284,
                        "src": "8725:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2212,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8725:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2215,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 2284,
                        "src": "8745:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2214,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8745:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2217,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 2284,
                        "src": "8765:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2216,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8765:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2219,
                        "mutability": "mutable",
                        "name": "isBatch",
                        "nodeType": "VariableDeclaration",
                        "scope": 2284,
                        "src": "8788:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2218,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8788:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8693:113:12"
                  },
                  "returnParameters": {
                    "id": 2221,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8816:0:12"
                  },
                  "scope": 2318,
                  "src": "8672:683:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2316,
                    "nodeType": "Block",
                    "src": "9518:277:12",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2295,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2286,
                            "src": "9532:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 2296,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2288,
                            "src": "9540:2:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9532:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2315,
                        "nodeType": "IfStatement",
                        "src": "9528:261:12",
                        "trueBody": {
                          "id": 2314,
                          "nodeType": "Block",
                          "src": "9544:245:12",
                          "statements": [
                            {
                              "expression": {
                                "id": 2304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 2298,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2375,
                                      "src": "9631:9:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 2301,
                                    "indexExpression": {
                                      "id": 2299,
                                      "name": "collectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2290,
                                      "src": "9641:12:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9631:23:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 2302,
                                  "indexExpression": {
                                    "id": 2300,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2286,
                                    "src": "9655:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "9631:29:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 2303,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2292,
                                  "src": "9664:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9631:39:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2305,
                              "nodeType": "ExpressionStatement",
                              "src": "9631:39:12"
                            },
                            {
                              "expression": {
                                "id": 2312,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 2306,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2375,
                                      "src": "9741:9:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 2309,
                                    "indexExpression": {
                                      "id": 2307,
                                      "name": "collectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2290,
                                      "src": "9751:12:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9741:23:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 2310,
                                  "indexExpression": {
                                    "id": 2308,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2288,
                                    "src": "9765:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "9741:27:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 2311,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2292,
                                  "src": "9772:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9741:37:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2313,
                              "nodeType": "ExpressionStatement",
                              "src": "9741:37:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 2317,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferNFTUpdateCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2293,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2286,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2317,
                        "src": "9408:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2285,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9408:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2288,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2317,
                        "src": "9430:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2287,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9430:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2290,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2317,
                        "src": "9450:20:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2289,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9450:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2292,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 2317,
                        "src": "9480:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2291,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9480:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9398:102:12"
                  },
                  "returnParameters": {
                    "id": 2294,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9518:0:12"
                  },
                  "scope": 2318,
                  "src": "9361:434:12",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 2319,
              "src": "656:9141:12"
            }
          ],
          "src": "33:9765:12"
        },
        "id": 12
      },
      "contracts/token/ERC1155/ERC1155InventoryBase.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/ERC1155InventoryBase.sol",
          "exportedSymbols": {
            "ERC1155InventoryBase": [
              2882
            ],
            "ERC1155InventoryIdentifiersLib": [
              3370
            ],
            "IERC1155": [
              3530
            ],
            "IERC1155Inventory": [
              3633
            ],
            "IERC1155InventoryFunctions": [
              3696
            ],
            "IERC1155InventoryTotalSupply": [
              3738
            ],
            "IERC1155MetadataURI": [
              3750
            ],
            "IERC1155TokenReceiver": [
              3788
            ],
            "IERC165": [
              218
            ],
            "ManagedIdentity": [
              322
            ]
          },
          "id": 2883,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2320,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:13"
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol",
              "file": "./ERC1155InventoryIdentifiersLib.sol",
              "id": 2322,
              "nodeType": "ImportDirective",
              "scope": 2883,
              "sourceUnit": 3371,
              "src": "66:84:13",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2321,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:30:13",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 2324,
              "nodeType": "ImportDirective",
              "scope": 2883,
              "sourceUnit": 219,
              "src": "151:93:13",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2323,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "159:7:13",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155.sol",
              "file": "./interfaces/IERC1155.sol",
              "id": 2326,
              "nodeType": "ImportDirective",
              "scope": 2883,
              "sourceUnit": 3531,
              "src": "245:51:13",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2325,
                    "name": "IERC1155",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "253:8:13",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryFunctions.sol",
              "file": "./interfaces/IERC1155InventoryFunctions.sol",
              "id": 2328,
              "nodeType": "ImportDirective",
              "scope": 2883,
              "sourceUnit": 3697,
              "src": "297:87:13",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2327,
                    "name": "IERC1155InventoryFunctions",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "305:26:13",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol",
              "file": "./interfaces/IERC1155Inventory.sol",
              "id": 2330,
              "nodeType": "ImportDirective",
              "scope": 2883,
              "sourceUnit": 3634,
              "src": "385:69:13",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2329,
                    "name": "IERC1155Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "393:17:13",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol",
              "file": "./interfaces/IERC1155MetadataURI.sol",
              "id": 2332,
              "nodeType": "ImportDirective",
              "scope": 2883,
              "sourceUnit": 3751,
              "src": "455:73:13",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2331,
                    "name": "IERC1155MetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "463:19:13",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryTotalSupply.sol",
              "file": "./interfaces/IERC1155InventoryTotalSupply.sol",
              "id": 2334,
              "nodeType": "ImportDirective",
              "scope": 2883,
              "sourceUnit": 3739,
              "src": "529:91:13",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2333,
                    "name": "IERC1155InventoryTotalSupply",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "537:28:13",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol",
              "file": "./interfaces/IERC1155TokenReceiver.sol",
              "id": 2336,
              "nodeType": "ImportDirective",
              "scope": 2883,
              "sourceUnit": 3789,
              "src": "621:77:13",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2335,
                    "name": "IERC1155TokenReceiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "629:21:13",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 2338,
              "nodeType": "ImportDirective",
              "scope": 2883,
              "sourceUnit": 323,
              "src": "699:102:13",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2337,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "707:15:13",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2340,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 322,
                    "src": "1218:15:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 2341,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1218:15:13"
                },
                {
                  "baseName": {
                    "id": 2342,
                    "name": "IERC165",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 218,
                    "src": "1235:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC165_$218",
                      "typeString": "contract IERC165"
                    }
                  },
                  "id": 2343,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1235:7:13"
                },
                {
                  "baseName": {
                    "id": 2344,
                    "name": "IERC1155Inventory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3633,
                    "src": "1244:17:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155Inventory_$3633",
                      "typeString": "contract IERC1155Inventory"
                    }
                  },
                  "id": 2345,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1244:17:13"
                },
                {
                  "baseName": {
                    "id": 2346,
                    "name": "IERC1155MetadataURI",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3750,
                    "src": "1263:19:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155MetadataURI_$3750",
                      "typeString": "contract IERC1155MetadataURI"
                    }
                  },
                  "id": 2347,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1263:19:13"
                },
                {
                  "baseName": {
                    "id": 2348,
                    "name": "IERC1155InventoryTotalSupply",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3738,
                    "src": "1284:28:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155InventoryTotalSupply_$3738",
                      "typeString": "contract IERC1155InventoryTotalSupply"
                    }
                  },
                  "id": 2349,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1284:28:13"
                }
              ],
              "contractDependencies": [
                218,
                322,
                3530,
                3633,
                3696,
                3738,
                3750
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 2339,
                "nodeType": "StructuredDocumentation",
                "src": "803:372:13",
                "text": " @title ERC1155 Inventory Base.\n @dev The functions `safeTransferFrom(address,address,uint256,uint256,bytes)`\n  and `safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)` need to be implemented by a child contract.\n @dev The function `uri(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`."
              },
              "fullyImplemented": false,
              "id": 2882,
              "linearizedBaseContracts": [
                2882,
                3738,
                3750,
                3633,
                3696,
                3530,
                218,
                322
              ],
              "name": "ERC1155InventoryBase",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 2352,
                  "libraryName": {
                    "id": 2350,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3370,
                    "src": "1325:30:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155InventoryIdentifiersLib_$3370",
                      "typeString": "library ERC1155InventoryIdentifiersLib"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1319:49:13",
                  "typeName": {
                    "id": 2351,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1360:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 2354,
                  "mutability": "immutable",
                  "name": "_collectionMaskLength",
                  "nodeType": "VariableDeclaration",
                  "scope": 2882,
                  "src": "1374:48:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2353,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1374:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 2357,
                  "mutability": "constant",
                  "name": "_ERC1155_RECEIVED",
                  "nodeType": "VariableDeclaration",
                  "scope": 2882,
                  "src": "1514:55:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2355,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1514:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786632336136653631",
                    "id": 2356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1559:10:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4063915617_by_1",
                      "typeString": "int_const 4063915617"
                    },
                    "value": "0xf23a6e61"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 2360,
                  "mutability": "constant",
                  "name": "_ERC1155_BATCH_RECEIVED",
                  "nodeType": "VariableDeclaration",
                  "scope": 2882,
                  "src": "1670:61:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2358,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1670:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786263313937633831",
                    "id": 2359,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1721:10:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3155786881_by_1",
                      "typeString": "int_const 3155786881"
                    },
                    "value": "0xbc197c81"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 2363,
                  "mutability": "constant",
                  "name": "_BURNT_NFT_OWNER",
                  "nodeType": "VariableDeclaration",
                  "scope": 2882,
                  "src": "1790:111:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2361,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1790:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "307864656164303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 2362,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1835:66:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_100719116927691798707895874029850069994745719541394658707722161504685790330880_by_1",
                      "typeString": "int_const 1007...(70 digits omitted)...0880"
                    },
                    "value": "0xdead000000000000000000000000000000000000000000000000000000000000"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2369,
                  "mutability": "mutable",
                  "name": "_operators",
                  "nodeType": "VariableDeclaration",
                  "scope": 2882,
                  "src": "1948:64: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": 2368,
                    "keyType": {
                      "id": 2364,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1956:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1948:44:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 2367,
                      "keyType": {
                        "id": 2365,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1975:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1967:24:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 2366,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1986:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2375,
                  "mutability": "mutable",
                  "name": "_balances",
                  "nodeType": "VariableDeclaration",
                  "scope": 2882,
                  "src": "2063:66:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(uint256 => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 2374,
                    "keyType": {
                      "id": 2370,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2071:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2063:47:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 2373,
                      "keyType": {
                        "id": 2371,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2090:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2082:27:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 2372,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2101:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2379,
                  "mutability": "mutable",
                  "name": "_supplies",
                  "nodeType": "VariableDeclaration",
                  "scope": 2882,
                  "src": "2170:46:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 2378,
                    "keyType": {
                      "id": 2376,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2178:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2170:27:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 2377,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2189:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2383,
                  "mutability": "mutable",
                  "name": "_owners",
                  "nodeType": "VariableDeclaration",
                  "scope": 2882,
                  "src": "2249:44:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 2382,
                    "keyType": {
                      "id": 2380,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2257:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2249:27:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 2381,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2268:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2387,
                  "mutability": "mutable",
                  "name": "_creators",
                  "nodeType": "VariableDeclaration",
                  "scope": 2882,
                  "src": "2335:46:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 2386,
                    "keyType": {
                      "id": 2384,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2343:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2335:27:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 2385,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2354:7:13",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2407,
                    "nodeType": "Block",
                    "src": "2430:167:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2399,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2395,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2393,
                                  "name": "collectionMaskLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2389,
                                  "src": "2448:20:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 2394,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2472:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "2448:25:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2398,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2396,
                                  "name": "collectionMaskLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2389,
                                  "src": "2477:20:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "323536",
                                  "id": 2397,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2500:3:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_256_by_1",
                                    "typeString": "int_const 256"
                                  },
                                  "value": "256"
                                },
                                "src": "2477:26:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2448:55:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2077726f6e67206d61736b206c656e677468",
                              "id": 2400,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2505:30:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cdc8ca47203c1769e556e8880975dcf9b64d0882efa61fd892496f119b4e1e8c",
                                "typeString": "literal_string \"Inventory: wrong mask length\""
                              },
                              "value": "Inventory: wrong mask length"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cdc8ca47203c1769e556e8880975dcf9b64d0882efa61fd892496f119b4e1e8c",
                                "typeString": "literal_string \"Inventory: wrong mask length\""
                              }
                            ],
                            "id": 2392,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2440:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2440:96:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2402,
                        "nodeType": "ExpressionStatement",
                        "src": "2440:96:13"
                      },
                      {
                        "expression": {
                          "id": 2405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2403,
                            "name": "_collectionMaskLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2354,
                            "src": "2546:21:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2404,
                            "name": "collectionMaskLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2389,
                            "src": "2570:20:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2546:44:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2406,
                        "nodeType": "ExpressionStatement",
                        "src": "2546:44:13"
                      }
                    ]
                  },
                  "id": 2408,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2390,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2389,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 2408,
                        "src": "2400:28:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2388,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2400:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2399:30:13"
                  },
                  "returnParameters": {
                    "id": 2391,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2430:0:13"
                  },
                  "scope": 2882,
                  "src": "2388:209:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    217
                  ],
                  "body": {
                    "id": 2452,
                    "nodeType": "Block",
                    "src": "2851:353:13",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2436,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "id": 2422,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 2417,
                                    "name": "interfaceId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2411,
                                    "src": "2880:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 2419,
                                          "name": "IERC165",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 218,
                                          "src": "2900:7:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                            "typeString": "type(contract IERC165)"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                            "typeString": "type(contract IERC165)"
                                          }
                                        ],
                                        "id": 2418,
                                        "name": "type",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -27,
                                        "src": "2895:4:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 2420,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2895:13:13",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$218",
                                        "typeString": "type(contract IERC165)"
                                      }
                                    },
                                    "id": 2421,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "interfaceId",
                                    "nodeType": "MemberAccess",
                                    "src": "2895:25:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "src": "2880:40:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "id": 2428,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 2423,
                                    "name": "interfaceId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2411,
                                    "src": "2936:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 2425,
                                          "name": "IERC1155",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3530,
                                          "src": "2956:8:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC1155_$3530_$",
                                            "typeString": "type(contract IERC1155)"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_type$_t_contract$_IERC1155_$3530_$",
                                            "typeString": "type(contract IERC1155)"
                                          }
                                        ],
                                        "id": 2424,
                                        "name": "type",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -27,
                                        "src": "2951:4:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 2426,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2951:14:13",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155_$3530",
                                        "typeString": "type(contract IERC1155)"
                                      }
                                    },
                                    "id": 2427,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "interfaceId",
                                    "nodeType": "MemberAccess",
                                    "src": "2951:26:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "src": "2936:41:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "2880:97:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 2435,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2430,
                                  "name": "interfaceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2411,
                                  "src": "2993:11:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 2432,
                                        "name": "IERC1155MetadataURI",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3750,
                                        "src": "3013:19:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC1155MetadataURI_$3750_$",
                                          "typeString": "type(contract IERC1155MetadataURI)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_contract$_IERC1155MetadataURI_$3750_$",
                                          "typeString": "type(contract IERC1155MetadataURI)"
                                        }
                                      ],
                                      "id": 2431,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "3008:4:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 2433,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3008:25:13",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155MetadataURI_$3750",
                                      "typeString": "type(contract IERC1155MetadataURI)"
                                    }
                                  },
                                  "id": 2434,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "interfaceId",
                                  "nodeType": "MemberAccess",
                                  "src": "3008:37:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "2993:52:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2880:165:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 2442,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2437,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2411,
                                "src": "3061:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 2439,
                                      "name": "IERC1155InventoryFunctions",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3696,
                                      "src": "3081:26:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryFunctions_$3696_$",
                                        "typeString": "type(contract IERC1155InventoryFunctions)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryFunctions_$3696_$",
                                        "typeString": "type(contract IERC1155InventoryFunctions)"
                                      }
                                    ],
                                    "id": 2438,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "3076:4:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 2440,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3076:32:13",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155InventoryFunctions_$3696",
                                    "typeString": "type(contract IERC1155InventoryFunctions)"
                                  }
                                },
                                "id": 2441,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "3076:44:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "3061:59:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2880:240:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 2449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2444,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2411,
                              "src": "3136:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2446,
                                    "name": "IERC1155InventoryTotalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3738,
                                    "src": "3156:28:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryTotalSupply_$3738_$",
                                      "typeString": "type(contract IERC1155InventoryTotalSupply)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryTotalSupply_$3738_$",
                                      "typeString": "type(contract IERC1155InventoryTotalSupply)"
                                    }
                                  ],
                                  "id": 2445,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "3151:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 2447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3151:34:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155InventoryTotalSupply_$3738",
                                  "typeString": "type(contract IERC1155InventoryTotalSupply)"
                                }
                              },
                              "id": 2448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "3151:46:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "3136:61:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2880:317:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 2416,
                        "id": 2451,
                        "nodeType": "Return",
                        "src": "2861:336:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2409,
                    "nodeType": "StructuredDocumentation",
                    "src": "2732:23:13",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 2453,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2413,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2827:8:13"
                  },
                  "parameters": {
                    "id": 2412,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2411,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2453,
                        "src": "2787:18:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 2410,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2787:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2786:20:13"
                  },
                  "returnParameters": {
                    "id": 2416,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2415,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2453,
                        "src": "2845:4:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2414,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2845:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2844:6:13"
                  },
                  "scope": 2882,
                  "src": "2760:444:13",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3586
                  ],
                  "body": {
                    "id": 2501,
                    "nodeType": "Block",
                    "src": "3470:248:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2465,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2456,
                                "src": "3488:5:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2468,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3505: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": 2467,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3497:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2466,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3497:7:13",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2469,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3497:10:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3488:19:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2061646472657373",
                              "id": 2471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3509:25:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_42707ea16674aa865e75081e780ce914a2dbf36492fac37b9d85bcb15fc7e9d7",
                                "typeString": "literal_string \"Inventory: zero address\""
                              },
                              "value": "Inventory: zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_42707ea16674aa865e75081e780ce914a2dbf36492fac37b9d85bcb15fc7e9d7",
                                "typeString": "literal_string \"Inventory: zero address\""
                              }
                            ],
                            "id": 2464,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3480:7:13",
                            "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,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3480:55:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2473,
                        "nodeType": "ExpressionStatement",
                        "src": "3480:55:13"
                      },
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 2476,
                              "name": "_collectionMaskLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2354,
                              "src": "3572:21:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 2474,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2458,
                              "src": "3550:2:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isNonFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3334,
                            "src": "3550:21:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (bool)"
                            }
                          },
                          "id": 2477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3550:44:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2494,
                        "nodeType": "IfStatement",
                        "src": "3546:128:13",
                        "trueBody": {
                          "id": 2493,
                          "nodeType": "Block",
                          "src": "3596:78:13",
                          "statements": [
                            {
                              "expression": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 2488,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "baseExpression": {
                                              "id": 2482,
                                              "name": "_owners",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2383,
                                              "src": "3633:7:13",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                "typeString": "mapping(uint256 => uint256)"
                                              }
                                            },
                                            "id": 2484,
                                            "indexExpression": {
                                              "id": 2483,
                                              "name": "id",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2458,
                                              "src": "3641:2:13",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3633:11:13",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 2481,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3625:7:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint160_$",
                                            "typeString": "type(uint160)"
                                          },
                                          "typeName": {
                                            "id": 2480,
                                            "name": "uint160",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3625:7:13",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 2485,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3625:20:13",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "id": 2479,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3617:7:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2478,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3617:7:13",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2486,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3617:29:13",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 2487,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2456,
                                    "src": "3650:5:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "3617:38:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "hexValue": "30",
                                  "id": 2490,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3662:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "id": 2491,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "3617:46:13",
                                "trueExpression": {
                                  "hexValue": "31",
                                  "id": 2489,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3658:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "functionReturnParameters": 2463,
                              "id": 2492,
                              "nodeType": "Return",
                              "src": "3610:53:13"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 2495,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2375,
                              "src": "3691:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 2497,
                            "indexExpression": {
                              "id": 2496,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2458,
                              "src": "3701:2:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3691:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2499,
                          "indexExpression": {
                            "id": 2498,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2456,
                            "src": "3705:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3691:20:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 2463,
                        "id": 2500,
                        "nodeType": "Return",
                        "src": "3684:27:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2454,
                    "nodeType": "StructuredDocumentation",
                    "src": "3339:33:13",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "00fdd58e",
                  "id": 2502,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2460,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3443:8:13"
                  },
                  "parameters": {
                    "id": 2459,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2456,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 2502,
                        "src": "3396:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2455,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3396:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2458,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 2502,
                        "src": "3411:10:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2457,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3411:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3395:27:13"
                  },
                  "returnParameters": {
                    "id": 2463,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2462,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2502,
                        "src": "3461:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2461,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3461:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3460:9:13"
                  },
                  "scope": 2882,
                  "src": "3377:341:13",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3600
                  ],
                  "body": {
                    "id": 2565,
                    "nodeType": "Block",
                    "src": "3895:302:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 2517,
                                  "name": "owners",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2506,
                                  "src": "3913:6:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 2518,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "3913:13:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 2519,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2509,
                                  "src": "3930:3:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 2520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "3930:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3913:27:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 2522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3942:32:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              },
                              "value": "Inventory: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              }
                            ],
                            "id": 2516,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3905:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3905:70:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2524,
                        "nodeType": "ExpressionStatement",
                        "src": "3905:70:13"
                      },
                      {
                        "assignments": [
                          2529
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2529,
                            "mutability": "mutable",
                            "name": "balances",
                            "nodeType": "VariableDeclaration",
                            "scope": 2565,
                            "src": "3986:25:13",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2527,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3986:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2528,
                              "nodeType": "ArrayTypeName",
                              "src": "3986:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2536,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 2533,
                                "name": "owners",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2506,
                                "src": "4028:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 2534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "4028:13:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2532,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4014:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2530,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4018:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2531,
                              "nodeType": "ArrayTypeName",
                              "src": "4018:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 2535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4014:28:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3986:56:13"
                      },
                      {
                        "body": {
                          "id": 2561,
                          "nodeType": "Block",
                          "src": "4098:67:13",
                          "statements": [
                            {
                              "expression": {
                                "id": 2559,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 2548,
                                    "name": "balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2529,
                                    "src": "4112:8:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 2550,
                                  "indexExpression": {
                                    "id": 2549,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2538,
                                    "src": "4121:1:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4112:11:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 2552,
                                        "name": "owners",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2506,
                                        "src": "4136:6:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 2554,
                                      "indexExpression": {
                                        "id": 2553,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2538,
                                        "src": "4143:1:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4136:9:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 2555,
                                        "name": "ids",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2509,
                                        "src": "4147:3:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 2557,
                                      "indexExpression": {
                                        "id": 2556,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2538,
                                        "src": "4151:1:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4147:6:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 2551,
                                    "name": "balanceOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2502,
                                    "src": "4126:9:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (address,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 2558,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4126:28:13",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4112:42:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2560,
                              "nodeType": "ExpressionStatement",
                              "src": "4112:42:13"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2541,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2538,
                            "src": "4073:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "id": 2542,
                              "name": "owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2506,
                              "src": "4078:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 2543,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "4078:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4073:18:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2562,
                        "initializationExpression": {
                          "assignments": [
                            2538
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2538,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 2562,
                              "src": "4058:9:13",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2537,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4058:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 2540,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 2539,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4070:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4058:13:13"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 2546,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "4093:3:13",
                            "subExpression": {
                              "id": 2545,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2538,
                              "src": "4095:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2547,
                          "nodeType": "ExpressionStatement",
                          "src": "4093:3:13"
                        },
                        "nodeType": "ForStatement",
                        "src": "4053:112:13"
                      },
                      {
                        "expression": {
                          "id": 2563,
                          "name": "balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2529,
                          "src": "4182:8:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 2515,
                        "id": 2564,
                        "nodeType": "Return",
                        "src": "4175:15:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2503,
                    "nodeType": "StructuredDocumentation",
                    "src": "3724:33:13",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "4e1273f4",
                  "id": 2566,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2511,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3859:8:13"
                  },
                  "parameters": {
                    "id": 2510,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2506,
                        "mutability": "mutable",
                        "name": "owners",
                        "nodeType": "VariableDeclaration",
                        "scope": 2566,
                        "src": "3786:25:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2504,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3786:7:13",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2505,
                          "nodeType": "ArrayTypeName",
                          "src": "3786:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2509,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 2566,
                        "src": "3813:22:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2507,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3813:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2508,
                          "nodeType": "ArrayTypeName",
                          "src": "3813:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3785:51:13"
                  },
                  "returnParameters": {
                    "id": 2515,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2514,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2566,
                        "src": "3877:16:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2512,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3877:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2513,
                          "nodeType": "ArrayTypeName",
                          "src": "3877:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3876:18:13"
                  },
                  "scope": 2882,
                  "src": "3762:435:13",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3519
                  ],
                  "body": {
                    "id": 2601,
                    "nodeType": "Block",
                    "src": "4316:217:13",
                    "statements": [
                      {
                        "assignments": [
                          2576
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2576,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 2601,
                            "src": "4326:14:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2575,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4326:7:13",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2579,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2577,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "4343:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 2578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4343:12:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4326:29:13"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2581,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2569,
                                "src": "4373:8:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 2582,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2576,
                                "src": "4385:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4373:18:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2073656c662d617070726f76616c",
                              "id": 2584,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4393:26:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7c4ceb33c8a3e4251a079e5bc00a1d088f7b07efcf485dc31e509282980ff352",
                                "typeString": "literal_string \"Inventory: self-approval\""
                              },
                              "value": "Inventory: self-approval"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7c4ceb33c8a3e4251a079e5bc00a1d088f7b07efcf485dc31e509282980ff352",
                                "typeString": "literal_string \"Inventory: self-approval\""
                              }
                            ],
                            "id": 2580,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4365:7:13",
                            "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": "4365:55:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2586,
                        "nodeType": "ExpressionStatement",
                        "src": "4365:55:13"
                      },
                      {
                        "expression": {
                          "id": 2593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 2587,
                                "name": "_operators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2369,
                                "src": "4430:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 2590,
                              "indexExpression": {
                                "id": 2588,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2576,
                                "src": "4441:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4430:18:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 2591,
                            "indexExpression": {
                              "id": 2589,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2569,
                              "src": "4449:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4430:28:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2592,
                            "name": "approved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2571,
                            "src": "4461:8:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4430:39:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2594,
                        "nodeType": "ExpressionStatement",
                        "src": "4430:39:13"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2596,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2576,
                              "src": "4499:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2597,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2569,
                              "src": "4507:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2598,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2571,
                              "src": "4517: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": 2595,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3452,
                            "src": "4484:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 2599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4484:42:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2600,
                        "nodeType": "EmitStatement",
                        "src": "4479:47:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2567,
                    "nodeType": "StructuredDocumentation",
                    "src": "4203:24:13",
                    "text": "@inheritdoc IERC1155"
                  },
                  "functionSelector": "a22cb465",
                  "id": 2602,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2573,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4307:8:13"
                  },
                  "parameters": {
                    "id": 2572,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2569,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 2602,
                        "src": "4259:16:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2568,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4259:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2571,
                        "mutability": "mutable",
                        "name": "approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 2602,
                        "src": "4277:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2570,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4277:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4258:33:13"
                  },
                  "returnParameters": {
                    "id": 2574,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4316:0:13"
                  },
                  "scope": 2882,
                  "src": "4232:301:13",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3529
                  ],
                  "body": {
                    "id": 2619,
                    "nodeType": "Block",
                    "src": "4676:56:13",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 2613,
                              "name": "_operators",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2369,
                              "src": "4693:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                "typeString": "mapping(address => mapping(address => bool))"
                              }
                            },
                            "id": 2615,
                            "indexExpression": {
                              "id": 2614,
                              "name": "tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2605,
                              "src": "4704:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4693:22:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 2617,
                          "indexExpression": {
                            "id": 2616,
                            "name": "operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2607,
                            "src": "4716:8:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4693:32:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 2612,
                        "id": 2618,
                        "nodeType": "Return",
                        "src": "4686:39:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2603,
                    "nodeType": "StructuredDocumentation",
                    "src": "4539:24:13",
                    "text": "@inheritdoc IERC1155"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 2620,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2609,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4652:8:13"
                  },
                  "parameters": {
                    "id": 2608,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2605,
                        "mutability": "mutable",
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 2620,
                        "src": "4594:18:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2604,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4594:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2607,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 2620,
                        "src": "4614:16:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2606,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4614:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4593:38:13"
                  },
                  "returnParameters": {
                    "id": 2612,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2611,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2620,
                        "src": "4670:4:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2610,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4670:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4669:6:13"
                  },
                  "scope": 2882,
                  "src": "4568:164:13",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3566
                  ],
                  "body": {
                    "id": 2633,
                    "nodeType": "Block",
                    "src": "4983:44:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 2629,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2623,
                              "src": "5000:2:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3310,
                            "src": "5000:18:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (bool)"
                            }
                          },
                          "id": 2631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5000:20:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 2628,
                        "id": 2632,
                        "nodeType": "Return",
                        "src": "4993:27:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2621,
                    "nodeType": "StructuredDocumentation",
                    "src": "4867:33:13",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "adebf6f2",
                  "id": 2634,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isFungible",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2625,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4959:8:13"
                  },
                  "parameters": {
                    "id": 2624,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2623,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 2634,
                        "src": "4925:10:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2622,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4925:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4924:12:13"
                  },
                  "returnParameters": {
                    "id": 2628,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2627,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2634,
                        "src": "4977:4:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2626,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4977:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4976:6:13"
                  },
                  "scope": 2882,
                  "src": "4905:122:13",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3575
                  ],
                  "body": {
                    "id": 2656,
                    "nodeType": "Block",
                    "src": "5157:168:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2646,
                                  "name": "_collectionMaskLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2354,
                                  "src": "5200:21:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 2644,
                                  "name": "nftId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2637,
                                  "src": "5175:5:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2645,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isNonFungibleToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3334,
                                "src": "5175:24:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (bool)"
                                }
                              },
                              "id": 2647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5175:47:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f7420616e204e4654",
                              "id": 2648,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5224:23:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6f6b3072d8f66101f2906a615e7ccee3daa7b495817e174efdc83fec1dfaad68",
                                "typeString": "literal_string \"Inventory: not an NFT\""
                              },
                              "value": "Inventory: not an NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6f6b3072d8f66101f2906a615e7ccee3daa7b495817e174efdc83fec1dfaad68",
                                "typeString": "literal_string \"Inventory: not an NFT\""
                              }
                            ],
                            "id": 2643,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5167:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5167:81:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2650,
                        "nodeType": "ExpressionStatement",
                        "src": "5167:81:13"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2653,
                              "name": "_collectionMaskLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2354,
                              "src": "5296:21:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 2651,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2637,
                              "src": "5265:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getNonFungibleCollection",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3351,
                            "src": "5265:30:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5265:53:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 2642,
                        "id": 2655,
                        "nodeType": "Return",
                        "src": "5258:60:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2635,
                    "nodeType": "StructuredDocumentation",
                    "src": "5033:33:13",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "c7778baa",
                  "id": 2657,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "collectionOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2639,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5130:8:13"
                  },
                  "parameters": {
                    "id": 2638,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2637,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2657,
                        "src": "5093:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2636,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5093:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5092:15:13"
                  },
                  "returnParameters": {
                    "id": 2642,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2641,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2657,
                        "src": "5148:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2640,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5148:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5147:9:13"
                  },
                  "scope": 2882,
                  "src": "5071:254:13",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3557
                  ],
                  "body": {
                    "id": 2690,
                    "nodeType": "Block",
                    "src": "5448:156:13",
                    "statements": [
                      {
                        "assignments": [
                          2667
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2667,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 2690,
                            "src": "5458:13:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2666,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5458:7:13",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2677,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 2672,
                                    "name": "_owners",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2383,
                                    "src": "5490:7:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 2674,
                                  "indexExpression": {
                                    "id": 2673,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2660,
                                    "src": "5498:5:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5490:14:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 2671,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5482:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 2670,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5482:7:13",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2675,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5482:23:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 2669,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5474:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2668,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5474:7:13",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5474:32:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5458:48:13"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2679,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2667,
                                "src": "5524:5:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2682,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5541: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": 2681,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5533:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2680,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5533:7:13",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2683,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5533:10:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5524:19:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6578697374696e67204e4654",
                              "id": 2685,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5545:29:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d5290294c0b7ad6913fae1832076fb2552b80ffccbd7db3c426d932ecf724f10",
                                "typeString": "literal_string \"Inventory: non-existing NFT\""
                              },
                              "value": "Inventory: non-existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d5290294c0b7ad6913fae1832076fb2552b80ffccbd7db3c426d932ecf724f10",
                                "typeString": "literal_string \"Inventory: non-existing NFT\""
                              }
                            ],
                            "id": 2678,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5516:7:13",
                            "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,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5516:59:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2687,
                        "nodeType": "ExpressionStatement",
                        "src": "5516:59:13"
                      },
                      {
                        "expression": {
                          "id": 2688,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2667,
                          "src": "5592:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2665,
                        "id": 2689,
                        "nodeType": "Return",
                        "src": "5585:12:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2658,
                    "nodeType": "StructuredDocumentation",
                    "src": "5331:33:13",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "6352211e",
                  "id": 2691,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2662,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5421:8:13"
                  },
                  "parameters": {
                    "id": 2661,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2660,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2691,
                        "src": "5386:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2659,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5386:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5385:15:13"
                  },
                  "returnParameters": {
                    "id": 2665,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2664,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2691,
                        "src": "5439:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2663,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5439:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5438:9:13"
                  },
                  "scope": 2882,
                  "src": "5369:235:13",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3737
                  ],
                  "body": {
                    "id": 2729,
                    "nodeType": "Block",
                    "src": "5870:200:13",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 2702,
                              "name": "_collectionMaskLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2354,
                              "src": "5906:21:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 2700,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2694,
                              "src": "5884:2:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2701,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isNonFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3334,
                            "src": "5884:21:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (bool)"
                            }
                          },
                          "id": 2703,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5884:44:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2727,
                          "nodeType": "Block",
                          "src": "6019:45:13",
                          "statements": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 2723,
                                  "name": "_supplies",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2379,
                                  "src": "6040:9:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 2725,
                                "indexExpression": {
                                  "id": 2724,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2694,
                                  "src": "6050:2:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6040:13:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 2699,
                              "id": 2726,
                              "nodeType": "Return",
                              "src": "6033:20:13"
                            }
                          ]
                        },
                        "id": 2728,
                        "nodeType": "IfStatement",
                        "src": "5880:184:13",
                        "trueBody": {
                          "id": 2722,
                          "nodeType": "Block",
                          "src": "5930:83:13",
                          "statements": [
                            {
                              "expression": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  "id": 2717,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "baseExpression": {
                                              "id": 2708,
                                              "name": "_owners",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2383,
                                              "src": "5967:7:13",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                "typeString": "mapping(uint256 => uint256)"
                                              }
                                            },
                                            "id": 2710,
                                            "indexExpression": {
                                              "id": 2709,
                                              "name": "id",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2694,
                                              "src": "5975:2:13",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "5967:11:13",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 2707,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "5959:7:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint160_$",
                                            "typeString": "type(uint160)"
                                          },
                                          "typeName": {
                                            "id": 2706,
                                            "name": "uint160",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "5959:7:13",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 2711,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5959:20:13",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "id": 2705,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5951:7:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2704,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5951:7:13",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2712,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5951:29:13",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 2715,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5992: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": 2714,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5984:7:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2713,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5984:7:13",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2716,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5984:10:13",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "src": "5951:43:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "hexValue": "31",
                                  "id": 2719,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6001:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "id": 2720,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "5951:51:13",
                                "trueExpression": {
                                  "hexValue": "30",
                                  "id": 2718,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5997:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "functionReturnParameters": 2699,
                              "id": 2721,
                              "nodeType": "Return",
                              "src": "5944:58:13"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2692,
                    "nodeType": "StructuredDocumentation",
                    "src": "5739:44:13",
                    "text": "@inheritdoc IERC1155InventoryTotalSupply"
                  },
                  "functionSelector": "bd85b039",
                  "id": 2730,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2696,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5843:8:13"
                  },
                  "parameters": {
                    "id": 2695,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2694,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 2730,
                        "src": "5809:10:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2693,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5809:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5808:12:13"
                  },
                  "returnParameters": {
                    "id": 2699,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2698,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2730,
                        "src": "5861:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2697,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5861:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5860:9:13"
                  },
                  "scope": 2882,
                  "src": "5788:282:13",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2771,
                    "nodeType": "Block",
                    "src": "6584:328:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2741,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "6602:55:13",
                              "subExpression": {
                                "arguments": [
                                  {
                                    "id": 2739,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2354,
                                    "src": "6635:21:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 2737,
                                    "name": "collectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2733,
                                    "src": "6603:12:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2738,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isNonFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3334,
                                  "src": "6603:31:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (bool)"
                                  }
                                },
                                "id": 2740,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6603:54:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f74206120636f6c6c656374696f6e",
                              "id": 2742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6659:29:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4cf1a66cbd2b296ca2a93478debecc083a26a6ddc0b56961dad8cdd18f419b26",
                                "typeString": "literal_string \"Inventory: not a collection\""
                              },
                              "value": "Inventory: not a collection"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4cf1a66cbd2b296ca2a93478debecc083a26a6ddc0b56961dad8cdd18f419b26",
                                "typeString": "literal_string \"Inventory: not a collection\""
                              }
                            ],
                            "id": 2736,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6594:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6594:95:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2744,
                        "nodeType": "ExpressionStatement",
                        "src": "6594:95:13"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 2746,
                                  "name": "_creators",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2387,
                                  "src": "6707:9:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 2748,
                                "indexExpression": {
                                  "id": 2747,
                                  "name": "collectionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2733,
                                  "src": "6717:12:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6707:23:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2751,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6742: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": 2750,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6734:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2749,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6734:7:13",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2752,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6734:10:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6707:37:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206578697374696e6720636f6c6c656374696f6e",
                              "id": 2754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6746:32:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_65351934c1a25270e8f5422cd0ed89ae29b70d27a5a34dc7d2c70cfb7e4d286c",
                                "typeString": "literal_string \"Inventory: existing collection\""
                              },
                              "value": "Inventory: existing collection"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_65351934c1a25270e8f5422cd0ed89ae29b70d27a5a34dc7d2c70cfb7e4d286c",
                                "typeString": "literal_string \"Inventory: existing collection\""
                              }
                            ],
                            "id": 2745,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6699:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2755,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6699:80:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2756,
                        "nodeType": "ExpressionStatement",
                        "src": "6699:80:13"
                      },
                      {
                        "expression": {
                          "id": 2762,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2757,
                              "name": "_creators",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2387,
                              "src": "6789:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 2759,
                            "indexExpression": {
                              "id": 2758,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2733,
                              "src": "6799:12:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6789:23:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 2760,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 312,
                              "src": "6815:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 2761,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6815:12:13",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6789:38:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2763,
                        "nodeType": "ExpressionStatement",
                        "src": "6789:38:13"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2765,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2733,
                              "src": "6860:12:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 2766,
                                  "name": "collectionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2733,
                                  "src": "6874:12:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2767,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isFungibleToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3310,
                                "src": "6874:28:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (bool)"
                                }
                              },
                              "id": 2768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6874:30:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2764,
                            "name": "CollectionCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3548,
                            "src": "6842:17:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,bool)"
                            }
                          },
                          "id": 2769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6842:63:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2770,
                        "nodeType": "EmitStatement",
                        "src": "6837:68:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2731,
                    "nodeType": "StructuredDocumentation",
                    "src": "6205:308:13",
                    "text": " Creates a collection (optional).\n @dev Reverts if `collectionId` does not represent a collection.\n @dev Reverts if `collectionId` has already been created.\n @dev Emits a {IERC1155Inventory-CollectionCreated} event.\n @param collectionId Identifier of the collection."
                  },
                  "id": 2772,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_createCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2734,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2733,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2772,
                        "src": "6545:20:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2732,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6545:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6544:22:13"
                  },
                  "returnParameters": {
                    "id": 2735,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6584:0:13"
                  },
                  "scope": 2882,
                  "src": "6518:394:13",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2792,
                    "nodeType": "Block",
                    "src": "6998:152:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "7016:55:13",
                              "subExpression": {
                                "arguments": [
                                  {
                                    "id": 2782,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2354,
                                    "src": "7049:21:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 2780,
                                    "name": "collectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2774,
                                    "src": "7017:12:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2781,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isNonFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3334,
                                  "src": "7017:31:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (bool)"
                                  }
                                },
                                "id": 2783,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7017:54:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f74206120636f6c6c656374696f6e",
                              "id": 2785,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7073:29:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4cf1a66cbd2b296ca2a93478debecc083a26a6ddc0b56961dad8cdd18f419b26",
                                "typeString": "literal_string \"Inventory: not a collection\""
                              },
                              "value": "Inventory: not a collection"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4cf1a66cbd2b296ca2a93478debecc083a26a6ddc0b56961dad8cdd18f419b26",
                                "typeString": "literal_string \"Inventory: not a collection\""
                              }
                            ],
                            "id": 2779,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7008:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7008:95:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2787,
                        "nodeType": "ExpressionStatement",
                        "src": "7008:95:13"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 2788,
                            "name": "_creators",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2387,
                            "src": "7120:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 2790,
                          "indexExpression": {
                            "id": 2789,
                            "name": "collectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2774,
                            "src": "7130:12:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7120:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2778,
                        "id": 2791,
                        "nodeType": "Return",
                        "src": "7113:30:13"
                      }
                    ]
                  },
                  "id": 2793,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_creator",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2775,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2774,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2793,
                        "src": "6936:20:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2773,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6936:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6935:22:13"
                  },
                  "returnParameters": {
                    "id": 2778,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2777,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2793,
                        "src": "6989:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2776,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6989:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6988:9:13"
                  },
                  "scope": 2882,
                  "src": "6918:232:13",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2814,
                    "nodeType": "Block",
                    "src": "7662:68:13",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2805,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2803,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2796,
                                  "src": "7680:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 2804,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2798,
                                  "src": "7688:6:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "7680:14:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2806,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7679:16:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 2807,
                                "name": "_operators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2369,
                                "src": "7699:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 2809,
                              "indexExpression": {
                                "id": 2808,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2796,
                                "src": "7710:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7699:16:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 2811,
                            "indexExpression": {
                              "id": 2810,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2798,
                              "src": "7716:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7699:24:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7679:44:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 2802,
                        "id": 2813,
                        "nodeType": "Return",
                        "src": "7672:51:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2794,
                    "nodeType": "StructuredDocumentation",
                    "src": "7285:282:13",
                    "text": " Returns whether `sender` is authorised to make a transfer on behalf of `from`.\n @param from The address to check operatibility upon.\n @param sender The sender address.\n @return True if sender is `from` or an operator for `from`, false otherwise."
                  },
                  "id": 2815,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_isOperatable",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2799,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2796,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2815,
                        "src": "7595:12:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2795,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7595:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2798,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 2815,
                        "src": "7609:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2797,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7609:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7594:30:13"
                  },
                  "returnParameters": {
                    "id": 2802,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2801,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2815,
                        "src": "7656:4:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2800,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7656:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7655:6:13"
                  },
                  "scope": 2882,
                  "src": "7572:158:13",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2846,
                    "nodeType": "Block",
                    "src": "8360:158:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 2842,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 2834,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 312,
                                      "src": "8422:10:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                        "typeString": "function () view returns (address payable)"
                                      }
                                    },
                                    "id": 2835,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8422:12:13",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 2836,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2818,
                                    "src": "8436:4:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2837,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2822,
                                    "src": "8442:2:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2838,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2824,
                                    "src": "8446:5:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2839,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2826,
                                    "src": "8453:4:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 2831,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2820,
                                        "src": "8400:2:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2830,
                                      "name": "IERC1155TokenReceiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3788,
                                      "src": "8378:21:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$3788_$",
                                        "typeString": "type(contract IERC1155TokenReceiver)"
                                      }
                                    },
                                    "id": 2832,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8378:25:13",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$3788",
                                      "typeString": "contract IERC1155TokenReceiver"
                                    }
                                  },
                                  "id": 2833,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onERC1155Received",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3769,
                                  "src": "8378:43:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                  }
                                },
                                "id": 2840,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8378:80:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 2841,
                                "name": "_ERC1155_RECEIVED",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2357,
                                "src": "8462:17:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "8378:101:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e736665722072656675736564",
                              "id": 2843,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8481:29:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f586869b43ba3901b74c780121b14f86de66ae1e2d38e1ac43de058c29664070",
                                "typeString": "literal_string \"Inventory: transfer refused\""
                              },
                              "value": "Inventory: transfer refused"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f586869b43ba3901b74c780121b14f86de66ae1e2d38e1ac43de058c29664070",
                                "typeString": "literal_string \"Inventory: transfer refused\""
                              }
                            ],
                            "id": 2829,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8370:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8370:141:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2845,
                        "nodeType": "ExpressionStatement",
                        "src": "8370:141:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2816,
                    "nodeType": "StructuredDocumentation",
                    "src": "7736:460:13",
                    "text": " Calls {IERC1155TokenReceiver-onERC1155Received} on a target contract.\n @dev Reverts if `to` is not a contract.\n @dev Reverts if the call to the target fails or is refused.\n @param from Previous token owner.\n @param to New token owner.\n @param id Identifier of the token transferred.\n @param value Amount of token transferred.\n @param data Optional data to send along with the receiver contract call."
                  },
                  "id": 2847,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callOnERC1155Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2827,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2818,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2847,
                        "src": "8242:12:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2817,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8242:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2820,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2847,
                        "src": "8264:10:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2819,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8264:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2822,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 2847,
                        "src": "8284:10:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2821,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8284:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2824,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 2847,
                        "src": "8304:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2823,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8304:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2826,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2847,
                        "src": "8327:17:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2825,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8327:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8232:118:13"
                  },
                  "returnParameters": {
                    "id": 2828,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8360:0:13"
                  },
                  "scope": 2882,
                  "src": "8201:317:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2880,
                    "nodeType": "Block",
                    "src": "9186:205:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 2876,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 2868,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 312,
                                      "src": "9266:10:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                        "typeString": "function () view returns (address payable)"
                                      }
                                    },
                                    "id": 2869,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9266:12:13",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 2870,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2850,
                                    "src": "9280:4:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2871,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2855,
                                    "src": "9286:3:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 2872,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2858,
                                    "src": "9291:6:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 2873,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2860,
                                    "src": "9299:4:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 2865,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2852,
                                        "src": "9239:2:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2864,
                                      "name": "IERC1155TokenReceiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3788,
                                      "src": "9217:21:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$3788_$",
                                        "typeString": "type(contract IERC1155TokenReceiver)"
                                      }
                                    },
                                    "id": 2866,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9217:25:13",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$3788",
                                      "typeString": "contract IERC1155TokenReceiver"
                                    }
                                  },
                                  "id": 2867,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onERC1155BatchReceived",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3787,
                                  "src": "9217:48:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_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) external returns (bytes4)"
                                  }
                                },
                                "id": 2874,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9217:87:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 2875,
                                "name": "_ERC1155_BATCH_RECEIVED",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2360,
                                "src": "9308:23:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "9217:114:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e736665722072656675736564",
                              "id": 2877,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9345:29:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f586869b43ba3901b74c780121b14f86de66ae1e2d38e1ac43de058c29664070",
                                "typeString": "literal_string \"Inventory: transfer refused\""
                              },
                              "value": "Inventory: transfer refused"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f586869b43ba3901b74c780121b14f86de66ae1e2d38e1ac43de058c29664070",
                                "typeString": "literal_string \"Inventory: transfer refused\""
                              }
                            ],
                            "id": 2863,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9196:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2878,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9196:188:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2879,
                        "nodeType": "ExpressionStatement",
                        "src": "9196:188:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2848,
                    "nodeType": "StructuredDocumentation",
                    "src": "8524:473:13",
                    "text": " Calls {IERC1155TokenReceiver-onERC1155batchReceived} on a target contract.\n @dev Reverts if `to` is not a contract.\n @dev Reverts if the call to the target fails or is refused.\n @param from Previous tokens owner.\n @param to New tokens owner.\n @param ids Identifiers of the tokens to transfer.\n @param values Amounts of tokens to transfer.\n @param data Optional data to send along with the receiver contract call."
                  },
                  "id": 2881,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callOnERC1155BatchReceived",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2861,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2850,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2881,
                        "src": "9048:12:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2849,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9048:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2852,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2881,
                        "src": "9070:10:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2851,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9070:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2855,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 2881,
                        "src": "9090:20:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2853,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9090:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2854,
                          "nodeType": "ArrayTypeName",
                          "src": "9090:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2858,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 2881,
                        "src": "9120:23:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2856,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9120:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2857,
                          "nodeType": "ArrayTypeName",
                          "src": "9120:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2860,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2881,
                        "src": "9153:17:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2859,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9153:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9038:138:13"
                  },
                  "returnParameters": {
                    "id": 2862,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9186:0:13"
                  },
                  "scope": 2882,
                  "src": "9002:389:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 2883,
              "src": "1176:8217:13"
            }
          ],
          "src": "33:9361:13"
        },
        "id": 13
      },
      "contracts/token/ERC1155/ERC1155InventoryBurnable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/ERC1155InventoryBurnable.sol",
          "exportedSymbols": {
            "ERC1155Inventory": [
              2318
            ],
            "ERC1155InventoryBurnable": [
              3288
            ],
            "ERC1155InventoryIdentifiersLib": [
              3370
            ],
            "IERC1155InventoryBurnable": [
              3659
            ],
            "IERC165": [
              218
            ]
          },
          "id": 3289,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2884,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:14"
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol",
              "file": "./ERC1155InventoryIdentifiersLib.sol",
              "id": 2886,
              "nodeType": "ImportDirective",
              "scope": 3289,
              "sourceUnit": 3371,
              "src": "66:84:14",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2885,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:30:14",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 2888,
              "nodeType": "ImportDirective",
              "scope": 3289,
              "sourceUnit": 219,
              "src": "151:93:14",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2887,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "159:7:14",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryBurnable.sol",
              "file": "./interfaces/IERC1155InventoryBurnable.sol",
              "id": 2890,
              "nodeType": "ImportDirective",
              "scope": 3289,
              "sourceUnit": 3660,
              "src": "245:85:14",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2889,
                    "name": "IERC1155InventoryBurnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "253:25:14",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155Inventory.sol",
              "file": "./ERC1155Inventory.sol",
              "id": 2892,
              "nodeType": "ImportDirective",
              "scope": 3289,
              "sourceUnit": 2319,
              "src": "331:56:14",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2891,
                    "name": "ERC1155Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "339:16:14",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2894,
                    "name": "IERC1155InventoryBurnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3659,
                    "src": "621:25:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155InventoryBurnable_$3659",
                      "typeString": "contract IERC1155InventoryBurnable"
                    }
                  },
                  "id": 2895,
                  "nodeType": "InheritanceSpecifier",
                  "src": "621:25:14"
                },
                {
                  "baseName": {
                    "id": 2896,
                    "name": "ERC1155Inventory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2318,
                    "src": "648:16:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155Inventory_$2318",
                      "typeString": "contract ERC1155Inventory"
                    }
                  },
                  "id": 2897,
                  "nodeType": "InheritanceSpecifier",
                  "src": "648:16:14"
                }
              ],
              "contractDependencies": [
                218,
                322,
                2318,
                2882,
                3530,
                3633,
                3659,
                3696,
                3738,
                3750
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 2893,
                "nodeType": "StructuredDocumentation",
                "src": "389:185:14",
                "text": " @title ERC1155Inventory, burnable version.\n @dev The function `uri(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`."
              },
              "fullyImplemented": false,
              "id": 3288,
              "linearizedBaseContracts": [
                3288,
                2318,
                2882,
                3738,
                3750,
                3633,
                3696,
                3530,
                218,
                322,
                3659
              ],
              "name": "ERC1155InventoryBurnable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 2900,
                  "libraryName": {
                    "id": 2898,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3370,
                    "src": "677:30:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155InventoryIdentifiersLib_$3370",
                      "typeString": "library ERC1155InventoryIdentifiersLib"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "671:49:14",
                  "typeName": {
                    "id": 2899,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "712:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "body": {
                    "id": 2908,
                    "nodeType": "Block",
                    "src": "807:2:14",
                    "statements": []
                  },
                  "id": 2909,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 2905,
                          "name": "collectionMaskLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2902,
                          "src": "785:20:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 2906,
                      "modifierName": {
                        "id": 2904,
                        "name": "ERC1155Inventory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2318,
                        "src": "768:16:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155Inventory_$2318_$",
                          "typeString": "type(contract ERC1155Inventory)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "768:38:14"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2903,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2902,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 2909,
                        "src": "738:28:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2901,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "738:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "737:30:14"
                  },
                  "returnParameters": {
                    "id": 2907,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "807:0:14"
                  },
                  "scope": 3288,
                  "src": "726:83:14",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2453
                  ],
                  "body": {
                    "id": 2930,
                    "nodeType": "Block",
                    "src": "1063:122:14",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 2923,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2918,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2912,
                              "src": "1080:11:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2920,
                                    "name": "IERC1155InventoryBurnable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3659,
                                    "src": "1100:25:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryBurnable_$3659_$",
                                      "typeString": "type(contract IERC1155InventoryBurnable)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryBurnable_$3659_$",
                                      "typeString": "type(contract IERC1155InventoryBurnable)"
                                    }
                                  ],
                                  "id": 2919,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1095:4:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 2921,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1095:31:14",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155InventoryBurnable_$3659",
                                  "typeString": "type(contract IERC1155InventoryBurnable)"
                                }
                              },
                              "id": 2922,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1095:43:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "1080:58:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 2926,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2912,
                                "src": "1166:11:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 2924,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "1142:5:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_super$_ERC1155InventoryBurnable_$3288",
                                  "typeString": "contract super ERC1155InventoryBurnable"
                                }
                              },
                              "id": 2925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2453,
                              "src": "1142:23:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 2927,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1142:36:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1080:98:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 2917,
                        "id": 2929,
                        "nodeType": "Return",
                        "src": "1073:105:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2910,
                    "nodeType": "StructuredDocumentation",
                    "src": "944:23:14",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 2931,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2914,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1039:8:14"
                  },
                  "parameters": {
                    "id": 2913,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2912,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2931,
                        "src": "999:18:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 2911,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "999:6:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "998:20:14"
                  },
                  "returnParameters": {
                    "id": 2917,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2916,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2931,
                        "src": "1057:4:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2915,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1057:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1056:6:14"
                  },
                  "scope": 3288,
                  "src": "972:213:14",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3646
                  ],
                  "body": {
                    "id": 2995,
                    "nodeType": "Block",
                    "src": "1479:463:14",
                    "statements": [
                      {
                        "assignments": [
                          2943
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2943,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 2995,
                            "src": "1489:14:14",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2942,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1489:7:14",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2946,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2944,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "1506:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 2945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1506:12:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1489:29:14"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2949,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2934,
                                  "src": "1550:4:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 2950,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2943,
                                  "src": "1556:6:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2948,
                                "name": "_isOperatable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2815,
                                "src": "1536:13:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address,address) view returns (bool)"
                                }
                              },
                              "id": 2951,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1536:27:14",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                              "id": 2952,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1565:32:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              },
                              "value": "Inventory: non-approved sender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              }
                            ],
                            "id": 2947,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1528: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": "1528:70:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2954,
                        "nodeType": "ExpressionStatement",
                        "src": "1528:70:14"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 2955,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2936,
                              "src": "1613:2:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2956,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3310,
                            "src": "1613:18:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (bool)"
                            }
                          },
                          "id": 2957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1613:20:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "arguments": [
                              {
                                "id": 2967,
                                "name": "_collectionMaskLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2354,
                                "src": "1722:21:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 2965,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2936,
                                "src": "1700:2:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2966,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isNonFungibleToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3334,
                              "src": "1700:21:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (bool)"
                              }
                            },
                            "id": 2968,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1700:44:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 2981,
                            "nodeType": "Block",
                            "src": "1809:60:14",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                      "id": 2978,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1830:27:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      },
                                      "value": "Inventory: not a token id"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      }
                                    ],
                                    "id": 2977,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "1823:6:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 2979,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1823:35:14",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 2980,
                                "nodeType": "ExpressionStatement",
                                "src": "1823:35:14"
                              }
                            ]
                          },
                          "id": 2982,
                          "nodeType": "IfStatement",
                          "src": "1696:173:14",
                          "trueBody": {
                            "id": 2976,
                            "nodeType": "Block",
                            "src": "1746:57:14",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 2970,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2934,
                                      "src": "1769:4:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 2971,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2936,
                                      "src": "1775:2:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 2972,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2938,
                                      "src": "1779:5:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 2973,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1786:5:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 2969,
                                    "name": "_burnNFT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3287,
                                    "src": "1760:8:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                      "typeString": "function (address,uint256,uint256,bool)"
                                    }
                                  },
                                  "id": 2974,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1760:32:14",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 2975,
                                "nodeType": "ExpressionStatement",
                                "src": "1760:32:14"
                              }
                            ]
                          }
                        },
                        "id": 2983,
                        "nodeType": "IfStatement",
                        "src": "1609:260:14",
                        "trueBody": {
                          "id": 2964,
                          "nodeType": "Block",
                          "src": "1635:55:14",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2959,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2934,
                                    "src": "1663:4:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2960,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2936,
                                    "src": "1669:2:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2961,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2938,
                                    "src": "1673:5:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2958,
                                  "name": "_burnFungible",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3224,
                                  "src": "1649:13:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 2962,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1649:30:14",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2963,
                              "nodeType": "ExpressionStatement",
                              "src": "1649:30:14"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2985,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2943,
                              "src": "1899:6:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2986,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2934,
                              "src": "1907:4:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 2989,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1921: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": 2988,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1913:7:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2987,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1913:7:14",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2990,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1913:10:14",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 2991,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2936,
                              "src": "1925:2:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2992,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2938,
                              "src": "1929:5:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2984,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3430,
                            "src": "1884:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 2993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1884:51:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2994,
                        "nodeType": "EmitStatement",
                        "src": "1879:56:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2932,
                    "nodeType": "StructuredDocumentation",
                    "src": "1320:41:14",
                    "text": "@inheritdoc IERC1155InventoryBurnable"
                  },
                  "functionSelector": "124d91e5",
                  "id": 2996,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2940,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1470:8:14"
                  },
                  "parameters": {
                    "id": 2939,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2934,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2996,
                        "src": "1393:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2933,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1393:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2936,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 2996,
                        "src": "1415:10:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2935,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1415:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2938,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 2996,
                        "src": "1435:13:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2937,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1435:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1383:71:14"
                  },
                  "returnParameters": {
                    "id": 2941,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1479:0:14"
                  },
                  "scope": 3288,
                  "src": "1366:576:14",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3658
                  ],
                  "body": {
                    "id": 3175,
                    "nodeType": "Block",
                    "src": "2132:1663:14",
                    "statements": [
                      {
                        "assignments": [
                          3010
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3010,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 3175,
                            "src": "2142:14:14",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3009,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2142:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3013,
                        "initialValue": {
                          "expression": {
                            "id": 3011,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3002,
                            "src": "2159:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 3012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "2159:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2142:27:14"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3015,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3010,
                                "src": "2187:6:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 3016,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3005,
                                  "src": "2197:6:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3017,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2197:13:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2187:23:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 3019,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2212:32:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              },
                              "value": "Inventory: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              }
                            ],
                            "id": 3014,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2179:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2179:66:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3021,
                        "nodeType": "ExpressionStatement",
                        "src": "2179:66:14"
                      },
                      {
                        "assignments": [
                          3023
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3023,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 3175,
                            "src": "2256:14:14",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3022,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2256:7:14",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3026,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3024,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "2273:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 3025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2273:12:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2256:29:14"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3029,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2999,
                                  "src": "2317:4:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 3030,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3023,
                                  "src": "2323:6:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3028,
                                "name": "_isOperatable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2815,
                                "src": "2303:13:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address,address) view returns (bool)"
                                }
                              },
                              "id": 3031,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2303:27:14",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                              "id": 3032,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2332:32:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              },
                              "value": "Inventory: non-approved sender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              }
                            ],
                            "id": 3027,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2295:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2295:70:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3034,
                        "nodeType": "ExpressionStatement",
                        "src": "2295:70:14"
                      },
                      {
                        "assignments": [
                          3036
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3036,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 3175,
                            "src": "2376:22:14",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3035,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2376:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3037,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2376:22:14"
                      },
                      {
                        "assignments": [
                          3039
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3039,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 3175,
                            "src": "2408:25:14",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3038,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2408:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3040,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2408:25:14"
                      },
                      {
                        "body": {
                          "id": 3143,
                          "nodeType": "Block",
                          "src": "2477:1072:14",
                          "statements": [
                            {
                              "assignments": [
                                3051
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3051,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3143,
                                  "src": "2491:10:14",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3050,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2491:7:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3055,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 3052,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3002,
                                  "src": "2504:3:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3054,
                                "indexExpression": {
                                  "id": 3053,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3042,
                                  "src": "2508:1:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2504:6:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2491:19:14"
                            },
                            {
                              "assignments": [
                                3057
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3057,
                                  "mutability": "mutable",
                                  "name": "value",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3143,
                                  "src": "2524:13:14",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3056,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2524:7:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3061,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 3058,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3005,
                                  "src": "2540:6:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3060,
                                "indexExpression": {
                                  "id": 3059,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3042,
                                  "src": "2547:1:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2540:9:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2524:25:14"
                            },
                            {
                              "condition": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 3062,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3051,
                                    "src": "2567:2:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3063,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3310,
                                  "src": "2567:18:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (bool)"
                                  }
                                },
                                "id": 3064,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2567:20:14",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "arguments": [
                                    {
                                      "id": 3074,
                                      "name": "_collectionMaskLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2354,
                                      "src": "2684:21:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 3072,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3051,
                                      "src": "2662:2:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3073,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "isNonFungibleToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3334,
                                    "src": "2662:21:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (bool)"
                                    }
                                  },
                                  "id": 3075,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2662:44:14",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 3140,
                                  "nodeType": "Block",
                                  "src": "3471:68:14",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                            "id": 3137,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3496:27:14",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            },
                                            "value": "Inventory: not a token id"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            }
                                          ],
                                          "id": 3136,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "3489:6:14",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 3138,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3489:35:14",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 3139,
                                      "nodeType": "ExpressionStatement",
                                      "src": "3489:35:14"
                                    }
                                  ]
                                },
                                "id": 3141,
                                "nodeType": "IfStatement",
                                "src": "2658:881:14",
                                "trueBody": {
                                  "id": 3135,
                                  "nodeType": "Block",
                                  "src": "2708:757:14",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 3077,
                                            "name": "from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2999,
                                            "src": "2735:4:14",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 3078,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3051,
                                            "src": "2741:2:14",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 3079,
                                            "name": "value",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3057,
                                            "src": "2745:5:14",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "hexValue": "74727565",
                                            "id": 3080,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2752:4:14",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "true"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          ],
                                          "id": 3076,
                                          "name": "_burnNFT",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3287,
                                          "src": "2726:8:14",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                            "typeString": "function (address,uint256,uint256,bool)"
                                          }
                                        },
                                        "id": 3081,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2726:31:14",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 3082,
                                      "nodeType": "ExpressionStatement",
                                      "src": "2726:31:14"
                                    },
                                    {
                                      "assignments": [
                                        3084
                                      ],
                                      "declarations": [
                                        {
                                          "constant": false,
                                          "id": 3084,
                                          "mutability": "mutable",
                                          "name": "nextCollectionId",
                                          "nodeType": "VariableDeclaration",
                                          "scope": 3135,
                                          "src": "2775:24:14",
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "typeName": {
                                            "id": 3083,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "2775:7:14",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "visibility": "internal"
                                        }
                                      ],
                                      "id": 3089,
                                      "initialValue": {
                                        "arguments": [
                                          {
                                            "id": 3087,
                                            "name": "_collectionMaskLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2354,
                                            "src": "2830:21:14",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 3085,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3051,
                                            "src": "2802:2:14",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 3086,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getNonFungibleCollection",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3351,
                                          "src": "2802:27:14",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 3088,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2802:50:14",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "VariableDeclarationStatement",
                                      "src": "2775:77:14"
                                    },
                                    {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3092,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3090,
                                          "name": "nfCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3036,
                                          "src": "2874:14:14",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 3091,
                                          "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"
                                        },
                                        "src": "2874:19:14",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 3133,
                                        "nodeType": "Block",
                                        "src": "3018:433:14",
                                        "statements": [
                                          {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 3104,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 3102,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3084,
                                                "src": "3044:16:14",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "!=",
                                              "rightExpression": {
                                                "id": 3103,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3036,
                                                "src": "3064:14:14",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "3044:34:14",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 3131,
                                              "nodeType": "Block",
                                              "src": "3365:68:14",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 3129,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "++",
                                                    "prefix": true,
                                                    "src": "3391:19:14",
                                                    "subExpression": {
                                                      "id": 3128,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3039,
                                                      "src": "3393:17:14",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 3130,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3391:19:14"
                                                }
                                              ]
                                            },
                                            "id": 3132,
                                            "nodeType": "IfStatement",
                                            "src": "3040:393:14",
                                            "trueBody": {
                                              "id": 3127,
                                              "nodeType": "Block",
                                              "src": "3080:279:14",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 3111,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "baseExpression": {
                                                        "baseExpression": {
                                                          "id": 3105,
                                                          "name": "_balances",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 2375,
                                                          "src": "3106:9:14",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                                                          }
                                                        },
                                                        "id": 3108,
                                                        "indexExpression": {
                                                          "id": 3106,
                                                          "name": "nfCollectionId",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 3036,
                                                          "src": "3116:14:14",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "3106:25:14",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                          "typeString": "mapping(address => uint256)"
                                                        }
                                                      },
                                                      "id": 3109,
                                                      "indexExpression": {
                                                        "id": 3107,
                                                        "name": "from",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2999,
                                                        "src": "3132:4:14",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": true,
                                                      "nodeType": "IndexAccess",
                                                      "src": "3106:31:14",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "-=",
                                                    "rightHandSide": {
                                                      "id": 3110,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3039,
                                                      "src": "3141:17:14",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "3106:52:14",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 3112,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3106:52:14"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 3117,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "baseExpression": {
                                                        "id": 3113,
                                                        "name": "_supplies",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2379,
                                                        "src": "3184:9:14",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                          "typeString": "mapping(uint256 => uint256)"
                                                        }
                                                      },
                                                      "id": 3115,
                                                      "indexExpression": {
                                                        "id": 3114,
                                                        "name": "nfCollectionId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3036,
                                                        "src": "3194:14:14",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": true,
                                                      "nodeType": "IndexAccess",
                                                      "src": "3184:25:14",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "-=",
                                                    "rightHandSide": {
                                                      "id": 3116,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3039,
                                                      "src": "3213:17:14",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "3184:46:14",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 3118,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3184:46:14"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 3121,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 3119,
                                                      "name": "nfCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3036,
                                                      "src": "3256:14:14",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "id": 3120,
                                                      "name": "nextCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3084,
                                                      "src": "3273:16:14",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "3256:33:14",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 3122,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3256:33:14"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 3125,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 3123,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3039,
                                                      "src": "3315:17:14",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "hexValue": "31",
                                                      "id": 3124,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "3335:1:14",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "3315:21:14",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 3126,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3315:21:14"
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      },
                                      "id": 3134,
                                      "nodeType": "IfStatement",
                                      "src": "2870:581:14",
                                      "trueBody": {
                                        "id": 3101,
                                        "nodeType": "Block",
                                        "src": "2895:117:14",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 3095,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 3093,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3036,
                                                "src": "2917:14:14",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "id": 3094,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3084,
                                                "src": "2934:16:14",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "2917:33:14",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 3096,
                                            "nodeType": "ExpressionStatement",
                                            "src": "2917:33:14"
                                          },
                                          {
                                            "expression": {
                                              "id": 3099,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 3097,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3039,
                                                "src": "2972:17:14",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "hexValue": "31",
                                                "id": 3098,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2992:1:14",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "2972:21:14",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 3100,
                                            "nodeType": "ExpressionStatement",
                                            "src": "2972:21:14"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 3142,
                              "nodeType": "IfStatement",
                              "src": "2563:976:14",
                              "trueBody": {
                                "id": 3071,
                                "nodeType": "Block",
                                "src": "2589:63:14",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 3066,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2999,
                                          "src": "2621:4:14",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 3067,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3051,
                                          "src": "2627:2:14",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 3068,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3057,
                                          "src": "2631:5:14",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 3065,
                                        "name": "_burnFungible",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3224,
                                        "src": "2607:13:14",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256,uint256)"
                                        }
                                      },
                                      "id": 3069,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2607:30:14",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3070,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2607:30:14"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3044,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3042,
                            "src": "2459:1:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 3045,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3010,
                            "src": "2464:6:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2459:11:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3144,
                        "initializationExpression": {
                          "assignments": [
                            3042
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3042,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 3144,
                              "src": "2448:9:14",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3041,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2448:7:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 3043,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2448:9:14"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 3048,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "2472:3:14",
                            "subExpression": {
                              "id": 3047,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3042,
                              "src": "2474:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3049,
                          "nodeType": "ExpressionStatement",
                          "src": "2472:3:14"
                        },
                        "nodeType": "ForStatement",
                        "src": "2443:1106:14"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3145,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3036,
                            "src": "3563:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 3146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3581:1:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3563:19:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3163,
                        "nodeType": "IfStatement",
                        "src": "3559:162:14",
                        "trueBody": {
                          "id": 3162,
                          "nodeType": "Block",
                          "src": "3584:137:14",
                          "statements": [
                            {
                              "expression": {
                                "id": 3154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 3148,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2375,
                                      "src": "3598:9:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3151,
                                    "indexExpression": {
                                      "id": 3149,
                                      "name": "nfCollectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3036,
                                      "src": "3608:14:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3598:25:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3152,
                                  "indexExpression": {
                                    "id": 3150,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2999,
                                    "src": "3624:4:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3598:31:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 3153,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3039,
                                  "src": "3633:17:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3598:52:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3155,
                              "nodeType": "ExpressionStatement",
                              "src": "3598:52:14"
                            },
                            {
                              "expression": {
                                "id": 3160,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 3156,
                                    "name": "_supplies",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2379,
                                    "src": "3664:9:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 3158,
                                  "indexExpression": {
                                    "id": 3157,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3036,
                                    "src": "3674:14:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3664:25:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 3159,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3039,
                                  "src": "3693:17:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3664:46:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3161,
                              "nodeType": "ExpressionStatement",
                              "src": "3664:46:14"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 3165,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3023,
                              "src": "3750:6:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3166,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2999,
                              "src": "3758:4:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 3169,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3772: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": 3168,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3764:7:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3167,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3764:7:14",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3170,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3764:10:14",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 3171,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3002,
                              "src": "3776:3:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 3172,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3005,
                              "src": "3781:6:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 3164,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3444,
                            "src": "3736:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 3173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3736:52:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3174,
                        "nodeType": "EmitStatement",
                        "src": "3731:57:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2997,
                    "nodeType": "StructuredDocumentation",
                    "src": "1948:41:14",
                    "text": "@inheritdoc IERC1155InventoryBurnable"
                  },
                  "functionSelector": "80534934",
                  "id": 3176,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3007,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2123:8:14"
                  },
                  "parameters": {
                    "id": 3006,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2999,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3176,
                        "src": "2026:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2998,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2026:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3002,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3176,
                        "src": "2048:20:14",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3000,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2048:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3001,
                          "nodeType": "ArrayTypeName",
                          "src": "2048:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3005,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 3176,
                        "src": "2078:23:14",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3003,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2078:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3004,
                          "nodeType": "ArrayTypeName",
                          "src": "2078:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2016:91:14"
                  },
                  "returnParameters": {
                    "id": 3008,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2132:0:14"
                  },
                  "scope": 3288,
                  "src": "1994:1801:14",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3223,
                    "nodeType": "Block",
                    "src": "4033:283:14",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3188,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3186,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3182,
                                "src": "4051:5:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3187,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4060:1:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4051:10:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2076616c7565",
                              "id": 3189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4063:23:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              },
                              "value": "Inventory: zero value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              }
                            ],
                            "id": 3185,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4043:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4043:44:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3191,
                        "nodeType": "ExpressionStatement",
                        "src": "4043:44:14"
                      },
                      {
                        "assignments": [
                          3193
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3193,
                            "mutability": "mutable",
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 3223,
                            "src": "4097:15:14",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3192,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4097:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3199,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 3194,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2375,
                              "src": "4115:9:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 3196,
                            "indexExpression": {
                              "id": 3195,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3180,
                              "src": "4125:2:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4115:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3198,
                          "indexExpression": {
                            "id": 3197,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3178,
                            "src": "4129:4:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4115:19:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4097:37:14"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3203,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3201,
                                "name": "balance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3193,
                                "src": "4152:7:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 3202,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3182,
                                "src": "4163:5:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4152:16:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365",
                              "id": 3204,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4170:31:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_82c893371492309285d50bc6a7cf0711f02e83a8e143785e5e0b985266953be1",
                                "typeString": "literal_string \"Inventory: not enough balance\""
                              },
                              "value": "Inventory: not enough balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_82c893371492309285d50bc6a7cf0711f02e83a8e143785e5e0b985266953be1",
                                "typeString": "literal_string \"Inventory: not enough balance\""
                              }
                            ],
                            "id": 3200,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4144:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4144:58:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3206,
                        "nodeType": "ExpressionStatement",
                        "src": "4144:58:14"
                      },
                      {
                        "expression": {
                          "id": 3215,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 3207,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2375,
                                "src": "4212:9:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 3210,
                              "indexExpression": {
                                "id": 3208,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3180,
                                "src": "4222:2:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4212:13:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3211,
                            "indexExpression": {
                              "id": 3209,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3178,
                              "src": "4226:4:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4212:19:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3214,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 3212,
                              "name": "balance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3193,
                              "src": "4234:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 3213,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3182,
                              "src": "4244:5:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4234:15:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4212:37:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3216,
                        "nodeType": "ExpressionStatement",
                        "src": "4212:37:14"
                      },
                      {
                        "expression": {
                          "id": 3221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3217,
                              "name": "_supplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2379,
                              "src": "4287:9:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 3219,
                            "indexExpression": {
                              "id": 3218,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3180,
                              "src": "4297:2:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4287:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 3220,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3182,
                            "src": "4304:5:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4287:22:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3222,
                        "nodeType": "ExpressionStatement",
                        "src": "4287:22:14"
                      }
                    ]
                  },
                  "id": 3224,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnFungible",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3183,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3178,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3224,
                        "src": "3962:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3177,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3962:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3180,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3224,
                        "src": "3984:10:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3179,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3984:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3182,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3224,
                        "src": "4004:13:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3181,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4004:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3952:71:14"
                  },
                  "returnParameters": {
                    "id": 3184,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4033:0:14"
                  },
                  "scope": 3288,
                  "src": "3930:386:14",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3286,
                    "nodeType": "Block",
                    "src": "4442:502:14",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3238,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3236,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3230,
                                "src": "4460:5:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 3237,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4469:1:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "4460:10:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2077726f6e67204e46542076616c7565",
                              "id": 3239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4472:28:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              },
                              "value": "Inventory: wrong NFT value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              }
                            ],
                            "id": 3235,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4452:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4452:49:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3241,
                        "nodeType": "ExpressionStatement",
                        "src": "4452:49:14"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3253,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3243,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3226,
                                "src": "4519:4:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 3248,
                                          "name": "_owners",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2383,
                                          "src": "4543:7:14",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 3250,
                                        "indexExpression": {
                                          "id": 3249,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3228,
                                          "src": "4551:2:14",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4543:11:14",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 3247,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4535:7:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 3246,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4535:7:14",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3251,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4535:20:14",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 3245,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4527:7:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3244,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4527:7:14",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4527:29:14",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4519:37:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6f776e6564204e4654",
                              "id": 3254,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4558:26:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cb299a32a7af2eac6d18f568f522d952ea6c98cc6d0ce67299c271d8f74679c8",
                                "typeString": "literal_string \"Inventory: non-owned NFT\""
                              },
                              "value": "Inventory: non-owned NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cb299a32a7af2eac6d18f568f522d952ea6c98cc6d0ce67299c271d8f74679c8",
                                "typeString": "literal_string \"Inventory: non-owned NFT\""
                              }
                            ],
                            "id": 3242,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4511:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3255,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4511:74:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3256,
                        "nodeType": "ExpressionStatement",
                        "src": "4511:74:14"
                      },
                      {
                        "expression": {
                          "id": 3261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3257,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2383,
                              "src": "4595:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 3259,
                            "indexExpression": {
                              "id": 3258,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3228,
                              "src": "4603:2:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4595:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3260,
                            "name": "_BURNT_NFT_OWNER",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2363,
                            "src": "4609:16:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4595:30:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3262,
                        "nodeType": "ExpressionStatement",
                        "src": "4595:30:14"
                      },
                      {
                        "condition": {
                          "id": 3264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "4640:8:14",
                          "subExpression": {
                            "id": 3263,
                            "name": "isBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3232,
                            "src": "4641:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3285,
                        "nodeType": "IfStatement",
                        "src": "4636:302:14",
                        "trueBody": {
                          "id": 3284,
                          "nodeType": "Block",
                          "src": "4650:288:14",
                          "statements": [
                            {
                              "assignments": [
                                3266
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3266,
                                  "mutability": "mutable",
                                  "name": "collectionId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3284,
                                  "src": "4664:20:14",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3265,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4664:7:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3271,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 3269,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2354,
                                    "src": "4715:21:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3267,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3228,
                                    "src": "4687:2:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3268,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getNonFungibleCollection",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3351,
                                  "src": "4687:27:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3270,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4687:50:14",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4664:73:14"
                            },
                            {
                              "expression": {
                                "id": 3277,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": true,
                                "src": "4825:31:14",
                                "subExpression": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 3272,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2375,
                                      "src": "4827:9:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3274,
                                    "indexExpression": {
                                      "id": 3273,
                                      "name": "collectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3266,
                                      "src": "4837:12:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4827:23:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3276,
                                  "indexExpression": {
                                    "id": 3275,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3226,
                                    "src": "4851:4:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4827:29:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3278,
                              "nodeType": "ExpressionStatement",
                              "src": "4825:31:14"
                            },
                            {
                              "expression": {
                                "id": 3282,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": true,
                                "src": "4902:25:14",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 3279,
                                    "name": "_supplies",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2379,
                                    "src": "4904:9:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 3281,
                                  "indexExpression": {
                                    "id": 3280,
                                    "name": "collectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3266,
                                    "src": "4914:12:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4904:23:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3283,
                              "nodeType": "ExpressionStatement",
                              "src": "4902:25:14"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 3287,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnNFT",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3233,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3226,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3287,
                        "src": "4349:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3225,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4349:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3228,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3287,
                        "src": "4371:10:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3227,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4371:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3230,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3287,
                        "src": "4391:13:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3229,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4391:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3232,
                        "mutability": "mutable",
                        "name": "isBatch",
                        "nodeType": "VariableDeclaration",
                        "scope": 3287,
                        "src": "4414:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3231,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4414:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4339:93:14"
                  },
                  "returnParameters": {
                    "id": 3234,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4442:0:14"
                  },
                  "scope": 3288,
                  "src": "4322:622:14",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3289,
              "src": "575:4371:14"
            }
          ],
          "src": "33:4914:14"
        },
        "id": 14
      },
      "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol",
          "exportedSymbols": {
            "ERC1155InventoryIdentifiersLib": [
              3370
            ]
          },
          "id": 3371,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3290,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:15"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3291,
                "nodeType": "StructuredDocumentation",
                "src": "66:497:15",
                "text": " @title ERC1155InventoryIdentifiersLib, a library to introspect inventory identifiers.\n @dev With 0 < N < 256 representing the Non-Fungible Collection mask length, identifiers are represented as follow:\n (a) a Fungible Token:\n     - most significant bit == 0\n (b) a Non-Fungible Collection:\n     - most significant bit == 1\n     - (256-N) least significant bits == 0\n (c) a Non-Fungible Token:\n     - most significant bit == 1\n     - (256-N) least significant bits != 0"
              },
              "fullyImplemented": true,
              "id": 3370,
              "linearizedBaseContracts": [
                3370
              ],
              "name": "ERC1155InventoryIdentifiersLib",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 3296,
                  "mutability": "constant",
                  "name": "_NF_BIT",
                  "nodeType": "VariableDeclaration",
                  "scope": 3370,
                  "src": "711:44:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3292,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "711:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const 5789...(69 digits omitted)...9968"
                    },
                    "id": 3295,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "31",
                      "id": 3293,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "747:1:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<<",
                    "rightExpression": {
                      "hexValue": "323535",
                      "id": 3294,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "752:3:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_255_by_1",
                        "typeString": "int_const 255"
                      },
                      "value": "255"
                    },
                    "src": "747:8:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const 5789...(69 digits omitted)...9968"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3309,
                    "nodeType": "Block",
                    "src": "828:41:15",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 3303,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3298,
                              "src": "845:2:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 3304,
                              "name": "_NF_BIT",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3296,
                              "src": "850:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "845:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 3306,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "861:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "845:17:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 3302,
                        "id": 3308,
                        "nodeType": "Return",
                        "src": "838:24:15"
                      }
                    ]
                  },
                  "id": 3310,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isFungibleToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3299,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3298,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3310,
                        "src": "787:10:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3297,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "787:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "786:12:15"
                  },
                  "returnParameters": {
                    "id": 3302,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3301,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3310,
                        "src": "822:4:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3300,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "822:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "821:6:15"
                  },
                  "scope": 3370,
                  "src": "762:107:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3333,
                    "nodeType": "Block",
                    "src": "974:101:15",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3323,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3321,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3319,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3312,
                                "src": "991:2:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "id": 3320,
                                "name": "_NF_BIT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3296,
                                "src": "996:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "991:12:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 3322,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1007:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "991:17:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3330,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3328,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3324,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3312,
                                "src": "1012:2:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 3326,
                                    "name": "collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3314,
                                    "src": "1042:20:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 3325,
                                  "name": "_getNonFungibleTokenMask",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3369,
                                  "src": "1017:24:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3327,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1017:46:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1012:51:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 3329,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1067:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1012:56:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "991:77:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 3318,
                        "id": 3332,
                        "nodeType": "Return",
                        "src": "984:84:15"
                      }
                    ]
                  },
                  "id": 3334,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isNonFungibleToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3315,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3312,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3334,
                        "src": "903:10:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3311,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "903:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3314,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 3334,
                        "src": "915:28:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3313,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "915:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "902:42:15"
                  },
                  "returnParameters": {
                    "id": 3318,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3317,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3334,
                        "src": "968:4:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3316,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "968:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "967:6:15"
                  },
                  "scope": 3370,
                  "src": "875:200:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3350,
                    "nodeType": "Block",
                    "src": "1192:79:15",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3343,
                            "name": "nftId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3336,
                            "src": "1209:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "id": 3347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "~",
                            "prefix": true,
                            "src": "1217:47:15",
                            "subExpression": {
                              "arguments": [
                                {
                                  "id": 3345,
                                  "name": "collectionMaskLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3338,
                                  "src": "1243:20:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 3344,
                                "name": "_getNonFungibleTokenMask",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3369,
                                "src": "1218:24:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 3346,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1218:46:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1209:55:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3342,
                        "id": 3349,
                        "nodeType": "Return",
                        "src": "1202:62:15"
                      }
                    ]
                  },
                  "id": 3351,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getNonFungibleCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3339,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3336,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 3351,
                        "src": "1115:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3335,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1115:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3338,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 3351,
                        "src": "1130:28:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3337,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1130:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1114:45:15"
                  },
                  "returnParameters": {
                    "id": 3342,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3341,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3351,
                        "src": "1183:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3340,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1183:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1182:9:15"
                  },
                  "scope": 3370,
                  "src": "1081:190:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3368,
                    "nodeType": "Block",
                    "src": "1372:63:15",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3363,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "31",
                                  "id": 3358,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1390: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": 3361,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "323536",
                                        "id": 3359,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1396:3:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_256_by_1",
                                          "typeString": "int_const 256"
                                        },
                                        "value": "256"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 3360,
                                        "name": "collectionMaskLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3353,
                                        "src": "1402:20:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1396:26:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 3362,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1395:28:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1390:33:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 3364,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1389:35:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 3365,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1427:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1389:39:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3357,
                        "id": 3367,
                        "nodeType": "Return",
                        "src": "1382:46:15"
                      }
                    ]
                  },
                  "id": 3369,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getNonFungibleTokenMask",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3354,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3353,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 3369,
                        "src": "1311:28:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3352,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1311:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1310:30:15"
                  },
                  "returnParameters": {
                    "id": 3357,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3356,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3369,
                        "src": "1363:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3355,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1363:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1362:9:15"
                  },
                  "scope": 3370,
                  "src": "1277:158:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 3371,
              "src": "564:873:15"
            }
          ],
          "src": "33:1405:15"
        },
        "id": 15
      },
      "contracts/token/ERC1155/ERC1155TokenReceiver.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/ERC1155TokenReceiver.sol",
          "exportedSymbols": {
            "ERC1155TokenReceiver": [
              3415
            ],
            "IERC1155TokenReceiver": [
              3788
            ],
            "IERC165": [
              218
            ]
          },
          "id": 3416,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3372,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:16"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 3374,
              "nodeType": "ImportDirective",
              "scope": 3416,
              "sourceUnit": 219,
              "src": "66:93:16",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3373,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:7:16",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol",
              "file": "./interfaces/IERC1155TokenReceiver.sol",
              "id": 3376,
              "nodeType": "ImportDirective",
              "scope": 3416,
              "sourceUnit": 3789,
              "src": "160:77:16",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3375,
                    "name": "IERC1155TokenReceiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "168:21:16",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 3378,
                    "name": "IERC165",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 218,
                    "src": "537:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC165_$218",
                      "typeString": "contract IERC165"
                    }
                  },
                  "id": 3379,
                  "nodeType": "InheritanceSpecifier",
                  "src": "537:7:16"
                },
                {
                  "baseName": {
                    "id": 3380,
                    "name": "IERC1155TokenReceiver",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3788,
                    "src": "546:21:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$3788",
                      "typeString": "contract IERC1155TokenReceiver"
                    }
                  },
                  "id": 3381,
                  "nodeType": "InheritanceSpecifier",
                  "src": "546:21:16"
                }
              ],
              "contractDependencies": [
                218,
                3788
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 3377,
                "nodeType": "StructuredDocumentation",
                "src": "239:255:16",
                "text": " @title ERC1155 Transfers Receiver Contract.\n @dev The functions `onERC1155Received(address,address,uint256,uint256,bytes)`\n  and `onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)` need to be implemented by a child contract."
              },
              "fullyImplemented": false,
              "id": 3415,
              "linearizedBaseContracts": [
                3415,
                3788,
                218
              ],
              "name": "ERC1155TokenReceiver",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 3384,
                  "mutability": "constant",
                  "name": "_ERC1155_RECEIVED",
                  "nodeType": "VariableDeclaration",
                  "scope": 3415,
                  "src": "659:55:16",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 3382,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "659:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786632336136653631",
                    "id": 3383,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "704:10:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4063915617_by_1",
                      "typeString": "int_const 4063915617"
                    },
                    "value": "0xf23a6e61"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3387,
                  "mutability": "constant",
                  "name": "_ERC1155_BATCH_RECEIVED",
                  "nodeType": "VariableDeclaration",
                  "scope": 3415,
                  "src": "815:61:16",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 3385,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "815:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786263313937633831",
                    "id": 3386,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "866:10:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3155786881_by_1",
                      "typeString": "int_const 3155786881"
                    },
                    "value": "0xbc197c81"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3390,
                  "mutability": "constant",
                  "name": "_ERC1155_REJECTED",
                  "nodeType": "VariableDeclaration",
                  "scope": 3415,
                  "src": "883:55:16",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 3388,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "883:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786666666666666666",
                    "id": 3389,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "928:10:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4294967295_by_1",
                      "typeString": "int_const 4294967295"
                    },
                    "value": "0xffffffff"
                  },
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    217
                  ],
                  "body": {
                    "id": 3413,
                    "nodeType": "Block",
                    "src": "1193:122:16",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 3404,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 3399,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3393,
                              "src": "1210:11:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3401,
                                    "name": "IERC165",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 218,
                                    "src": "1230:7:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  ],
                                  "id": 3400,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1225:4:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 3402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1225:13:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$218",
                                  "typeString": "type(contract IERC165)"
                                }
                              },
                              "id": 3403,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1225:25:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "1210:40:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 3410,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 3405,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3393,
                              "src": "1254:11:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3407,
                                    "name": "IERC1155TokenReceiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3788,
                                    "src": "1274:21:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$3788_$",
                                      "typeString": "type(contract IERC1155TokenReceiver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$3788_$",
                                      "typeString": "type(contract IERC1155TokenReceiver)"
                                    }
                                  ],
                                  "id": 3406,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1269:4:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 3408,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1269:27:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155TokenReceiver_$3788",
                                  "typeString": "type(contract IERC1155TokenReceiver)"
                                }
                              },
                              "id": 3409,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1269:39:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "1254:54:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1210:98:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 3398,
                        "id": 3412,
                        "nodeType": "Return",
                        "src": "1203:105:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3391,
                    "nodeType": "StructuredDocumentation",
                    "src": "1074:23:16",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 3414,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3395,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1169:8:16"
                  },
                  "parameters": {
                    "id": 3394,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3393,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 3414,
                        "src": "1129:18:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3392,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1129:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1128:20:16"
                  },
                  "returnParameters": {
                    "id": 3398,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3397,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3414,
                        "src": "1187:4:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3396,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1187:4:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1186:6:16"
                  },
                  "scope": 3415,
                  "src": "1102:213:16",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 3416,
              "src": "495:822:16"
            }
          ],
          "src": "33:1285:16"
        },
        "id": 16
      },
      "contracts/token/ERC1155/interfaces/IERC1155.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155.sol",
          "exportedSymbols": {
            "IERC1155": [
              3530
            ]
          },
          "id": 3531,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3417,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:17"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3418,
                "nodeType": "StructuredDocumentation",
                "src": "66:187:17",
                "text": " @title ERC1155 Multi Token Standard, basic interface.\n @dev See https://eips.ethereum.org/EIPS/eip-1155\n @dev Note: The ERC-165 identifier for this interface is 0xd9b67a26."
              },
              "fullyImplemented": false,
              "id": 3530,
              "linearizedBaseContracts": [
                3530
              ],
              "name": "IERC1155",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 3430,
                  "name": "TransferSingle",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3429,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3420,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 3430,
                        "src": "300:25:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3419,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "300:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3422,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3430,
                        "src": "327:21:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3421,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "327:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3424,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3430,
                        "src": "350:19:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3423,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "350:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3426,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3430,
                        "src": "371:11:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3425,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "371:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3428,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3430,
                        "src": "384:14:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3427,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "384:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "299:100:17"
                  },
                  "src": "279:121:17"
                },
                {
                  "anonymous": false,
                  "id": 3444,
                  "name": "TransferBatch",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3443,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3432,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 3444,
                        "src": "426:25:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3431,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "426:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3434,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3444,
                        "src": "453:21:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3433,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "453:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3436,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3444,
                        "src": "476:19:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3435,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "476:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3439,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3444,
                        "src": "497:14:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3437,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "497:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3438,
                          "nodeType": "ArrayTypeName",
                          "src": "497:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3442,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_values",
                        "nodeType": "VariableDeclaration",
                        "scope": 3444,
                        "src": "513:17:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3440,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "513:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3441,
                          "nodeType": "ArrayTypeName",
                          "src": "513:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "425:106:17"
                  },
                  "src": "406:126:17"
                },
                {
                  "anonymous": false,
                  "id": 3452,
                  "name": "ApprovalForAll",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3451,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3446,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 3452,
                        "src": "559:22:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3445,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "559:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3448,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 3452,
                        "src": "583:25:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3447,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "583:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3450,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 3452,
                        "src": "610:14:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3449,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "610:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "558:67:17"
                  },
                  "src": "538:88:17"
                },
                {
                  "anonymous": false,
                  "id": 3458,
                  "name": "URI",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3457,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3454,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3458,
                        "src": "642:13:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3453,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "642:6:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3456,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3458,
                        "src": "657:19:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3455,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "657:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "641:36:17"
                  },
                  "src": "632:46:17"
                },
                {
                  "documentation": {
                    "id": 3459,
                    "nodeType": "StructuredDocumentation",
                    "src": "684:634:17",
                    "text": " Safely transfers some token.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if `from` has an insufficient balance.\n @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155received} fails or is refused.\n @dev Emits a `TransferSingle` event.\n @param from Current token owner.\n @param to Address of the new token owner.\n @param id Identifier of the token to transfer.\n @param value Amount of token to transfer.\n @param data Optional data to send along to a receiver contract."
                  },
                  "functionSelector": "f242432a",
                  "id": 3472,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3470,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3461,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3472,
                        "src": "1358:12:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3460,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1358:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3463,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3472,
                        "src": "1380:10:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3462,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1380:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3465,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3472,
                        "src": "1400:10:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3464,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1400:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3467,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3472,
                        "src": "1420:13:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3466,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1420:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3469,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3472,
                        "src": "1443:19:17",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3468,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1443:5:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1348:120:17"
                  },
                  "returnParameters": {
                    "id": 3471,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1477:0:17"
                  },
                  "scope": 3530,
                  "src": "1323:155:17",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3473,
                    "nodeType": "StructuredDocumentation",
                    "src": "1484:734:17",
                    "text": " Safely transfers a batch of tokens.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if `ids` and `values` have different lengths.\n @dev Reverts if the sender is not approved.\n @dev Reverts if `from` has an insufficient balance for any of `ids`.\n @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n @dev Emits a `TransferBatch` event.\n @param from Current token owner.\n @param to Address of the new token owner.\n @param ids Identifiers of the tokens to transfer.\n @param values Amounts of tokens to transfer.\n @param data Optional data to send along to a receiver contract."
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 3488,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3486,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3475,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3488,
                        "src": "2263:12:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3474,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2263:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3477,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3488,
                        "src": "2285:10:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3476,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2285:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3480,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3488,
                        "src": "2305:22:17",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3478,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2305:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3479,
                          "nodeType": "ArrayTypeName",
                          "src": "2305:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3483,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 3488,
                        "src": "2337:25:17",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3481,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2337:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3482,
                          "nodeType": "ArrayTypeName",
                          "src": "2337:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3485,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3488,
                        "src": "2372:19:17",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3484,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2372:5:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2253:144:17"
                  },
                  "returnParameters": {
                    "id": 3487,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2406:0:17"
                  },
                  "scope": 3530,
                  "src": "2223:184:17",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3489,
                    "nodeType": "StructuredDocumentation",
                    "src": "2413:255:17",
                    "text": " Retrieves the balance of `id` owned by account `owner`.\n @param owner The account to retrieve the balance of.\n @param id The identifier to retrieve the balance of.\n @return The balance of `id` owned by account `owner`."
                  },
                  "functionSelector": "00fdd58e",
                  "id": 3498,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3494,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3491,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 3498,
                        "src": "2692:13:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3490,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2692:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3493,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3498,
                        "src": "2707:10:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3492,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2707:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2691:27:17"
                  },
                  "returnParameters": {
                    "id": 3497,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3496,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3498,
                        "src": "2742:7:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3495,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2742:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2741:9:17"
                  },
                  "scope": 3530,
                  "src": "2673:78:17",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3499,
                    "nodeType": "StructuredDocumentation",
                    "src": "2757:342:17",
                    "text": " Retrieves the balances of `ids` owned by accounts `owners`. For each pair:\n @dev Reverts if `owners` and `ids` have different lengths.\n @param owners The addresses of the token holders\n @param ids The identifiers to retrieve the balance of.\n @return The balances of `ids` owned by accounts `owners`."
                  },
                  "functionSelector": "4e1273f4",
                  "id": 3511,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3506,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3502,
                        "mutability": "mutable",
                        "name": "owners",
                        "nodeType": "VariableDeclaration",
                        "scope": 3511,
                        "src": "3128:25:17",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3500,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3128:7:17",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 3501,
                          "nodeType": "ArrayTypeName",
                          "src": "3128:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3505,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3511,
                        "src": "3155:22:17",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3503,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3155:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3504,
                          "nodeType": "ArrayTypeName",
                          "src": "3155:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3127:51:17"
                  },
                  "returnParameters": {
                    "id": 3510,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3509,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3511,
                        "src": "3202:16:17",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3507,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3202:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3508,
                          "nodeType": "ArrayTypeName",
                          "src": "3202:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3201:18:17"
                  },
                  "scope": 3530,
                  "src": "3104:116:17",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3512,
                    "nodeType": "StructuredDocumentation",
                    "src": "3226:237:17",
                    "text": " Enables or disables an operator's approval.\n @dev Emits an `ApprovalForAll` event.\n @param operator Address of the operator.\n @param approved True to approve the operator, false to revoke an approval."
                  },
                  "functionSelector": "a22cb465",
                  "id": 3519,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3517,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3514,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 3519,
                        "src": "3495:16:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3513,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3495:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3516,
                        "mutability": "mutable",
                        "name": "approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 3519,
                        "src": "3513:13:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3515,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3513:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3494:33:17"
                  },
                  "returnParameters": {
                    "id": 3518,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3536:0:17"
                  },
                  "scope": 3530,
                  "src": "3468:69:17",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3520,
                    "nodeType": "StructuredDocumentation",
                    "src": "3543:249:17",
                    "text": " Retrieves the approval status of an operator for a given owner.\n @param owner Address of the authorisation giver.\n @param operator Address of the operator.\n @return True if the operator is approved, false if not."
                  },
                  "functionSelector": "e985e9c5",
                  "id": 3529,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3525,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3522,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 3529,
                        "src": "3823:13:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3521,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3823:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3524,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 3529,
                        "src": "3838:16:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3523,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3838:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3822:33:17"
                  },
                  "returnParameters": {
                    "id": 3528,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3527,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3529,
                        "src": "3879:4:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3526,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3879:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3878:6:17"
                  },
                  "scope": 3530,
                  "src": "3797:88:17",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3531,
              "src": "254:3633:17"
            }
          ],
          "src": "33:3855:17"
        },
        "id": 17
      },
      "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol",
          "exportedSymbols": {
            "IERC1155": [
              3530
            ],
            "IERC1155Inventory": [
              3633
            ],
            "IERC1155InventoryFunctions": [
              3696
            ]
          },
          "id": 3634,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3532,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:18"
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155.sol",
              "file": "./IERC1155.sol",
              "id": 3534,
              "nodeType": "ImportDirective",
              "scope": 3634,
              "sourceUnit": 3531,
              "src": "66:40:18",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3533,
                    "name": "IERC1155",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:8:18",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryFunctions.sol",
              "file": "./IERC1155InventoryFunctions.sol",
              "id": 3536,
              "nodeType": "ImportDirective",
              "scope": 3634,
              "sourceUnit": 3697,
              "src": "107:76:18",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3535,
                    "name": "IERC1155InventoryFunctions",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "115:26:18",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 3538,
                    "name": "IERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3530,
                    "src": "1817:8:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155_$3530",
                      "typeString": "contract IERC1155"
                    }
                  },
                  "id": 3539,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1817:8:18"
                },
                {
                  "baseName": {
                    "id": 3540,
                    "name": "IERC1155InventoryFunctions",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3696,
                    "src": "1827:26:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155InventoryFunctions_$3696",
                      "typeString": "contract IERC1155InventoryFunctions"
                    }
                  },
                  "id": 3541,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1827:26:18"
                }
              ],
              "contractDependencies": [
                3530,
                3696
              ],
              "contractKind": "interface",
              "documentation": {
                "id": 3537,
                "nodeType": "StructuredDocumentation",
                "src": "185:1600:18",
                "text": " @title ERC1155 Multi Token Standard, optional extension: Inventory.\n Interface for Fungible/Non-Fungible Tokens management on an ERC1155 contract.\n This interface rationalizes the co-existence of Fungible and Non-Fungible Tokens\n within the same contract. As several kinds of Fungible Tokens can be managed under\n the Multi-Token standard, we consider that Non-Fungible Tokens can be classified\n under their own specific type. We introduce the concept of Non-Fungible Collection\n and consider the usage of 3 types of identifiers:\n (a) Fungible Token identifiers, each representing a set of Fungible Tokens,\n (b) Non-Fungible Collection identifiers, each representing a set of Non-Fungible Tokens (this is not a token),\n (c) Non-Fungible Token identifiers.\n Identifiers nature\n |       Type                | isFungible  | isCollection | isToken |\n |  Fungible Token           |   true      |     true     |  true   |\n |  Non-Fungible Collection  |   false     |     true     |  false  |\n |  Non-Fungible Token       |   false     |     false    |  true   |\n Identifiers compatibilities\n |       Type                |  transfer  |   balance    |   supply    |  owner  |\n |  Fungible Token           |    OK      |     OK       |     OK      |   NOK   |\n |  Non-Fungible Collection  |    NOK     |     OK       |     OK      |   NOK   |\n |  Non-Fungible Token       |    OK      |   0 or 1     |   0 or 1    |   OK    |\n @dev See https://eips.ethereum.org/EIPS/eip-xxxx\n @dev Note: The ERC-165 identifier for this interface is 0x09ce5c46."
              },
              "fullyImplemented": false,
              "id": 3633,
              "linearizedBaseContracts": [
                3633,
                3696,
                3530
              ],
              "name": "IERC1155Inventory",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 3542,
                    "nodeType": "StructuredDocumentation",
                    "src": "1988:382:18",
                    "text": " Optional event emitted when a collection (Fungible Token or Non-Fungible Collection) is created.\n  This event can be used by a client application to determine which identifiers are meaningful\n  to track through the functions `balanceOf`, `balanceOfBatch` and `totalSupply`.\n @dev This event MUST NOT be emitted twice for the same `collectionId`."
                  },
                  "id": 3548,
                  "name": "CollectionCreated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3547,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3544,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 3548,
                        "src": "2399:28:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3543,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2399:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3546,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "fungible",
                        "nodeType": "VariableDeclaration",
                        "scope": 3548,
                        "src": "2429:21:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3545,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2429:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2398:53:18"
                  },
                  "src": "2375:77:18"
                },
                {
                  "baseFunctions": [
                    3681
                  ],
                  "documentation": {
                    "id": 3549,
                    "nodeType": "StructuredDocumentation",
                    "src": "2458:256:18",
                    "text": " Retrieves the owner of a Non-Fungible Token (ERC721-compatible).\n @dev Reverts if `nftId` is owned by the zero address.\n @param nftId Identifier of the token to query.\n @return Address of the current owner of the token."
                  },
                  "functionSelector": "6352211e",
                  "id": 3557,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3553,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2765:8:18"
                  },
                  "parameters": {
                    "id": 3552,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3551,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 3557,
                        "src": "2736:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3550,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2736:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2735:15:18"
                  },
                  "returnParameters": {
                    "id": 3556,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3555,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3557,
                        "src": "2783:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3554,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2783:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2782:9:18"
                  },
                  "scope": 3633,
                  "src": "2719:73:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3688
                  ],
                  "documentation": {
                    "id": 3558,
                    "nodeType": "StructuredDocumentation",
                    "src": "2798:290:18",
                    "text": " Introspects whether or not `id` represents a Fungible Token.\n  This function MUST return true even for a Fungible Token which is not-yet created.\n @param id The identifier to query.\n @return bool True if `id` represents aFungible Token, false otherwise."
                  },
                  "functionSelector": "adebf6f2",
                  "id": 3566,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isFungible",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3562,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3139:8:18"
                  },
                  "parameters": {
                    "id": 3561,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3560,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3566,
                        "src": "3113:10:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3559,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3113:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3112:12:18"
                  },
                  "returnParameters": {
                    "id": 3565,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3564,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3566,
                        "src": "3157:4:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3563,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3157:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3156:6:18"
                  },
                  "scope": 3633,
                  "src": "3093:70:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3695
                  ],
                  "documentation": {
                    "id": 3567,
                    "nodeType": "StructuredDocumentation",
                    "src": "3169:534:18",
                    "text": " Introspects the Non-Fungible Collection to which `nftId` belongs.\n @dev This function MUST return a value representing a Non-Fungible Collection.\n @dev This function MUST return a value for a non-existing token, and SHOULD NOT be used to check the existence of a Non-Fungible Token.\n @dev Reverts if `nftId` does not represent a Non-Fungible Token.\n @param nftId The token identifier to query the collection of.\n @return The Non-Fungible Collection identifier to which `nftId` belongs."
                  },
                  "functionSelector": "c7778baa",
                  "id": 3575,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "collectionOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3571,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3759:8:18"
                  },
                  "parameters": {
                    "id": 3570,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3569,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 3575,
                        "src": "3730:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3568,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3730:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3729:15:18"
                  },
                  "returnParameters": {
                    "id": 3574,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3573,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3575,
                        "src": "3777:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3572,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3777:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3776:9:18"
                  },
                  "scope": 3633,
                  "src": "3708:78:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3498
                  ],
                  "documentation": {
                    "id": 3576,
                    "nodeType": "StructuredDocumentation",
                    "src": "3921:420:18",
                    "text": " Retrieves the balance of `id` owned by account `owner`.\n @param owner The account to retrieve the balance of.\n @param id The identifier to retrieve the balance of.\n @return\n  If `id` represents a collection (Fungible Token or Non-Fungible Collection), the balance for this collection.\n  If `id` represents a Non-Fungible Token, 1 if the token is owned by `owner`, else 0."
                  },
                  "functionSelector": "00fdd58e",
                  "id": 3586,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3582,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4406:8:18"
                  },
                  "parameters": {
                    "id": 3581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3578,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 3586,
                        "src": "4365:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3577,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4365:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3580,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3586,
                        "src": "4380:10:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3579,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4380:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4364:27:18"
                  },
                  "returnParameters": {
                    "id": 3585,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3584,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3586,
                        "src": "4424:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3583,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4424:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4423:9:18"
                  },
                  "scope": 3633,
                  "src": "4346:87:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3511
                  ],
                  "documentation": {
                    "id": 3587,
                    "nodeType": "StructuredDocumentation",
                    "src": "4439:553:18",
                    "text": " Retrieves the balances of `ids` owned by accounts `owners`.\n @dev Reverts if `owners` and `ids` have different lengths.\n @param owners The accounts to retrieve the balances of.\n @param ids The identifiers to retrieve the balances of.\n @return An array of elements such as for each pair `id`/`owner`:\n  If `id` represents a collection (Fungible Token or Non-Fungible Collection), the balance for this collection.\n  If `id` represents a Non-Fungible Token, 1 if the token is owned by `owner`, else 0."
                  },
                  "functionSelector": "4e1273f4",
                  "id": 3600,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3595,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5086:8:18"
                  },
                  "parameters": {
                    "id": 3594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3590,
                        "mutability": "mutable",
                        "name": "owners",
                        "nodeType": "VariableDeclaration",
                        "scope": 3600,
                        "src": "5021:25:18",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3588,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5021:7:18",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 3589,
                          "nodeType": "ArrayTypeName",
                          "src": "5021:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3593,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3600,
                        "src": "5048:22:18",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3591,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5048:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3592,
                          "nodeType": "ArrayTypeName",
                          "src": "5048:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5020:51:18"
                  },
                  "returnParameters": {
                    "id": 3599,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3598,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3600,
                        "src": "5104:16:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3596,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5104:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3597,
                          "nodeType": "ArrayTypeName",
                          "src": "5104:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5103:18:18"
                  },
                  "scope": 3633,
                  "src": "4997:125:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3472
                  ],
                  "documentation": {
                    "id": 3601,
                    "nodeType": "StructuredDocumentation",
                    "src": "5128:977:18",
                    "text": " Safely transfers some token.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if `id` does not represent a token.\n @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n @dev Reverts if `id` represents a Non-Fungible Token and is not owned by `from`.\n @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n @dev Reverts if `id` represents a Fungible Token and `from` has an insufficient balance.\n @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155received} fails or is refused.\n @dev Emits an {IERC1155-TransferSingle} event.\n @param from Current token owner.\n @param to Address of the new token owner.\n @param id Identifier of the token to transfer.\n @param value Amount of token to transfer.\n @param data Optional data to pass to the receiver contract."
                  },
                  "functionSelector": "f242432a",
                  "id": 3615,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3613,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6265:8:18"
                  },
                  "parameters": {
                    "id": 3612,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3603,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3615,
                        "src": "6145:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3602,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6145:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3605,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3615,
                        "src": "6167:10:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3604,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6167:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3607,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3615,
                        "src": "6187:10:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3606,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6187:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3609,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3615,
                        "src": "6207:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3608,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6207:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3611,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3615,
                        "src": "6230:19:18",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3610,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6230:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6135:120:18"
                  },
                  "returnParameters": {
                    "id": 3614,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6273:0:18"
                  },
                  "scope": 3633,
                  "src": "6110:164:18",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3488
                  ],
                  "documentation": {
                    "id": 3616,
                    "nodeType": "StructuredDocumentation",
                    "src": "6280:1168:18",
                    "text": " @notice this documentation overrides its {IERC1155-safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)}.\n Safely transfers a batch of tokens.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if one of `ids` does not represent a token.\n @dev Reverts if one of `ids` represents a Non-Fungible Token and `value` is not 1.\n @dev Reverts if one of `ids` represents a Non-Fungible Token and is not owned by `from`.\n @dev Reverts if one of `ids` represents a Fungible Token and `value` is 0.\n @dev Reverts if one of `ids` represents a Fungible Token and `from` has an insufficient balance.\n @dev Reverts if one of `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n @dev Emits an {IERC1155-TransferBatch} event.\n @param from Current tokens owner.\n @param to Address of the new tokens owner.\n @param ids Identifiers of the tokens to transfer.\n @param values Amounts of tokens to transfer.\n @param data Optional data to pass to the receiver contract."
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 3632,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3630,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7637:8:18"
                  },
                  "parameters": {
                    "id": 3629,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3618,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3632,
                        "src": "7493:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3617,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7493:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3620,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3632,
                        "src": "7515:10:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3619,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7515:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3623,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3632,
                        "src": "7535:22:18",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3621,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7535:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3622,
                          "nodeType": "ArrayTypeName",
                          "src": "7535:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3626,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 3632,
                        "src": "7567:25:18",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3624,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7567:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3625,
                          "nodeType": "ArrayTypeName",
                          "src": "7567:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3628,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3632,
                        "src": "7602:19:18",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3627,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7602:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7483:144:18"
                  },
                  "returnParameters": {
                    "id": 3631,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7645:0:18"
                  },
                  "scope": 3633,
                  "src": "7453:193:18",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3634,
              "src": "1786:5862:18"
            }
          ],
          "src": "33:7616:18"
        },
        "id": 18
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryBurnable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryBurnable.sol",
          "exportedSymbols": {
            "IERC1155InventoryBurnable": [
              3659
            ]
          },
          "id": 3660,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3635,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:19"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3636,
                "nodeType": "StructuredDocumentation",
                "src": "66:189:19",
                "text": " @title ERC1155 Inventory. optional extension: Burnable.\n @dev See https://eips.ethereum.org/EIPS/eip-1155\n @dev Note: The ERC-165 identifier for this interface is 0x921ed8d1."
              },
              "fullyImplemented": false,
              "id": 3659,
              "linearizedBaseContracts": [
                3659
              ],
              "name": "IERC1155InventoryBurnable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3637,
                    "nodeType": "StructuredDocumentation",
                    "src": "298:694:19",
                    "text": " Burns some token.\n @dev Reverts if the sender is not approved.\n @dev Reverts if `id` does not represent a token.\n @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n @dev Reverts if `id` represents a Fungible Token and `value` is higher than `from`'s balance.\n @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n @dev Reverts if `id` represents a Non-Fungible Token which is not owned by `from`.\n @dev Emits an {IERC1155-TransferSingle} event.\n @param from Address of the current token owner.\n @param id Identifier of the token to burn.\n @param value Amount of token to burn."
                  },
                  "functionSelector": "124d91e5",
                  "id": 3646,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3644,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3639,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3646,
                        "src": "1024:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3638,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1024:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3641,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3646,
                        "src": "1046:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3640,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1046:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3643,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3646,
                        "src": "1066:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3642,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1066:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1014:71:19"
                  },
                  "returnParameters": {
                    "id": 3645,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1094:0:19"
                  },
                  "scope": 3659,
                  "src": "997:98:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3647,
                    "nodeType": "StructuredDocumentation",
                    "src": "1101:811:19",
                    "text": " Burns multiple tokens.\n @dev Reverts if `ids` and `values` have different lengths.\n @dev Reverts if the sender is not approved.\n @dev Reverts if one of `ids` does not represent a token.\n @dev Reverts if one of `ids` represents a Fungible Token and `value` is 0.\n @dev Reverts if one of `ids` represents a Fungible Token and `value` is higher than `from`'s balance.\n @dev Reverts if one of `ids` represents a Non-Fungible Token and `value` is not 1.\n @dev Reverts if one of `ids` represents a Non-Fungible Token which is not owned by `from`.\n @dev Emits an {IERC1155-TransferBatch} event.\n @param from Address of the current tokens owner.\n @param ids Identifiers of the tokens to burn.\n @param values Amounts of tokens to burn."
                  },
                  "functionSelector": "80534934",
                  "id": 3658,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3656,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3649,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3658,
                        "src": "1949:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3648,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1949:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3652,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3658,
                        "src": "1971:22:19",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3650,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1971:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3651,
                          "nodeType": "ArrayTypeName",
                          "src": "1971:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3655,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 3658,
                        "src": "2003:25:19",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3653,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2003:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3654,
                          "nodeType": "ArrayTypeName",
                          "src": "2003:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1939:95:19"
                  },
                  "returnParameters": {
                    "id": 3657,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2043:0:19"
                  },
                  "scope": 3659,
                  "src": "1917:127:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3660,
              "src": "256:1790:19"
            }
          ],
          "src": "33:2014:19"
        },
        "id": 19
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryCreator.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryCreator.sol",
          "exportedSymbols": {
            "IERC1155InventoryCreator": [
              3671
            ]
          },
          "id": 3672,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3661,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:20"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3662,
                "nodeType": "StructuredDocumentation",
                "src": "66:188:20",
                "text": " @title ERC1155 Inventory, optional extension: Creator.\n @dev See https://eips.ethereum.org/EIPS/eip-1155\n @dev Note: The ERC-165 identifier for this interface is 0x510b5158."
              },
              "fullyImplemented": false,
              "id": 3671,
              "linearizedBaseContracts": [
                3671
              ],
              "name": "IERC1155InventoryCreator",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3663,
                    "nodeType": "StructuredDocumentation",
                    "src": "296:347:20",
                    "text": " Returns the creator of a collection, or the zero address if the collection has not been created.\n @dev Reverts if `collectionId` does not represent a collection.\n @param collectionId Identifier of the collection.\n @return The creator of a collection, or the zero address if the collection has not been created."
                  },
                  "functionSelector": "510b5158",
                  "id": 3670,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "creator",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3666,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3665,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 3670,
                        "src": "665:20:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3664,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "665:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "664:22:20"
                  },
                  "returnParameters": {
                    "id": 3669,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3668,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3670,
                        "src": "710:7:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3667,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "710:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "709:9:20"
                  },
                  "scope": 3671,
                  "src": "648:71:20",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3672,
              "src": "255:466:20"
            }
          ],
          "src": "33:689:20"
        },
        "id": 20
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryFunctions.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryFunctions.sol",
          "exportedSymbols": {
            "IERC1155InventoryFunctions": [
              3696
            ]
          },
          "id": 3697,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3673,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:21"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3674,
                "nodeType": "StructuredDocumentation",
                "src": "66:282:21",
                "text": " @title ERC1155 Multi Token Standard, optional extension: Inventory.\n Interface for Fungible/Non-Fungible Tokens management on an ERC1155 contract.\n @dev See https://eips.ethereum.org/EIPS/eip-xxxx\n @dev Note: The ERC-165 identifier for this interface is 0x09ce5c46."
              },
              "fullyImplemented": false,
              "id": 3696,
              "linearizedBaseContracts": [
                3696
              ],
              "name": "IERC1155InventoryFunctions",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "6352211e",
                  "id": 3681,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3677,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3676,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 3681,
                        "src": "409:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3675,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "409:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "408:15:21"
                  },
                  "returnParameters": {
                    "id": 3680,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3679,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3681,
                        "src": "447:7:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3678,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "447:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "446:9:21"
                  },
                  "scope": 3696,
                  "src": "392:64:21",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "adebf6f2",
                  "id": 3688,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isFungible",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3684,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3683,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3688,
                        "src": "482:10:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3682,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "482:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "481:12:21"
                  },
                  "returnParameters": {
                    "id": 3687,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3686,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3688,
                        "src": "517:4:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3685,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "517:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "516:6:21"
                  },
                  "scope": 3696,
                  "src": "462:61:21",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "c7778baa",
                  "id": 3695,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "collectionOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3691,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3690,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 3695,
                        "src": "551:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3689,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "551:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "550:15:21"
                  },
                  "returnParameters": {
                    "id": 3694,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3693,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3695,
                        "src": "589:7:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3692,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "589:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "588:9:21"
                  },
                  "scope": 3696,
                  "src": "529:69:21",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3697,
              "src": "349:251:21"
            }
          ],
          "src": "33:568:21"
        },
        "id": 21
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryMintable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryMintable.sol",
          "exportedSymbols": {
            "IERC1155InventoryMintable": [
              3726
            ]
          },
          "id": 3727,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3698,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:22"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3699,
                "nodeType": "StructuredDocumentation",
                "src": "66:118:22",
                "text": " @title ERC1155 Inventory, optional extension: Mintable.\n @dev See https://eips.ethereum.org/EIPS/eip-1155"
              },
              "fullyImplemented": false,
              "id": 3726,
              "linearizedBaseContracts": [
                3726
              ],
              "name": "IERC1155InventoryMintable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3700,
                    "nodeType": "StructuredDocumentation",
                    "src": "227:865:22",
                    "text": " Safely mints some token.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if `id` is not a token.\n @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n @dev Reverts if `id` represents a Non-Fungible Token which has already been minted.\n @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n @dev Reverts if `id` represents a Fungible Token and there is an overflow of supply.\n @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155Received} fails or is refused.\n @dev Emits an {IERC1155-TransferSingle} event.\n @param to Address of the new token owner.\n @param id Identifier of the token to mint.\n @param value Amount of token to mint.\n @param data Optional data to send along to a receiver contract."
                  },
                  "functionSelector": "5cfa9297",
                  "id": 3711,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3709,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3702,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3711,
                        "src": "1124:10:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3701,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1124:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3704,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3711,
                        "src": "1144:10:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3703,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1144:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3706,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3711,
                        "src": "1164:13:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3705,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1164:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3708,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3711,
                        "src": "1187:19:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3707,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1187:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1114:98:22"
                  },
                  "returnParameters": {
                    "id": 3710,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1221:0:22"
                  },
                  "scope": 3726,
                  "src": "1097:125:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3712,
                    "nodeType": "StructuredDocumentation",
                    "src": "1228:1007:22",
                    "text": " Safely mints a batch of tokens.\n @dev Reverts if `ids` and `values` have different lengths.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if one of `ids` is not a token.\n @dev Reverts if one of `ids` represents a Non-Fungible Token and its paired value is not 1.\n @dev Reverts if one of `ids` represents a Non-Fungible Token which has already been minted.\n @dev Reverts if one of `ids` represents a Fungible Token and its paired value is 0.\n @dev Reverts if one of `ids` represents a Fungible Token and there is an overflow of supply.\n @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n @dev Emits an {IERC1155-TransferBatch} event.\n @param to Address of the new tokens owner.\n @param ids Identifiers of the tokens to mint.\n @param values Amounts of tokens to mint.\n @param data Optional data to send along to a receiver contract."
                  },
                  "functionSelector": "0d6a5bbb",
                  "id": 3725,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3723,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3714,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3725,
                        "src": "2272:10:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3713,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2272:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3717,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3725,
                        "src": "2292:22:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3715,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2292:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3716,
                          "nodeType": "ArrayTypeName",
                          "src": "2292:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3720,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 3725,
                        "src": "2324:25:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3718,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2324:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3719,
                          "nodeType": "ArrayTypeName",
                          "src": "2324:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3722,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3725,
                        "src": "2359:19:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3721,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2359:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2262:122:22"
                  },
                  "returnParameters": {
                    "id": 3724,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2393:0:22"
                  },
                  "scope": 3726,
                  "src": "2240:154:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3727,
              "src": "185:2211:22"
            }
          ],
          "src": "33:2364:22"
        },
        "id": 22
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryTotalSupply.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryTotalSupply.sol",
          "exportedSymbols": {
            "IERC1155InventoryTotalSupply": [
              3738
            ]
          },
          "id": 3739,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3728,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:23"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3729,
                "nodeType": "StructuredDocumentation",
                "src": "66:193:23",
                "text": " @title ERC1155 Inventory, optional extension: Total Supply.\n @dev See https://eips.ethereum.org/EIPS/eip-xxxx\n @dev Note: The ERC-165 identifier for this interface is 0xbd85b039."
              },
              "fullyImplemented": false,
              "id": 3738,
              "linearizedBaseContracts": [
                3738
              ],
              "name": "IERC1155InventoryTotalSupply",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3730,
                    "nodeType": "StructuredDocumentation",
                    "src": "305:341:23",
                    "text": " Retrieves the total supply of `id`.\n @param id The identifier for which to retrieve the supply of.\n @return\n  If `id` represents a collection (Fungible Token or Non-Fungible Collection), the total supply for this collection.\n  If `id` represents a Non-Fungible Token, 1 if the token exists, else 0."
                  },
                  "functionSelector": "bd85b039",
                  "id": 3737,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3733,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3732,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3737,
                        "src": "672:10:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3731,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "672:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "671:12:23"
                  },
                  "returnParameters": {
                    "id": 3736,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3735,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3737,
                        "src": "707:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3734,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "707:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "706:9:23"
                  },
                  "scope": 3738,
                  "src": "651:65:23",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3739,
              "src": "260:458:23"
            }
          ],
          "src": "33:686:23"
        },
        "id": 23
      },
      "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol",
          "exportedSymbols": {
            "IERC1155MetadataURI": [
              3750
            ]
          },
          "id": 3751,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3740,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:24"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3741,
                "nodeType": "StructuredDocumentation",
                "src": "66:204:24",
                "text": " @title ERC1155 Multi Token Standard, optional extension: Metadata URI.\n @dev See https://eips.ethereum.org/EIPS/eip-1155\n @dev Note: The ERC-165 identifier for this interface is 0x0e89341c."
              },
              "fullyImplemented": false,
              "id": 3750,
              "linearizedBaseContracts": [
                3750
              ],
              "name": "IERC1155MetadataURI",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3742,
                    "nodeType": "StructuredDocumentation",
                    "src": "307:646:24",
                    "text": " @notice A distinct Uniform Resource Identifier (URI) for a given token.\n @dev URIs are defined in RFC 3986.\n @dev The URI MUST point to a JSON file that conforms to the \"ERC1155 Metadata URI JSON Schema\".\n @dev The uri function SHOULD be used to retrieve values if no event was emitted.\n @dev The uri function MUST return the same value as the latest event for an _id if it was emitted.\n @dev The uri function MUST NOT be used to check for the existence of a token as it is possible for\n  an implementation to return a valid string even if the token does not exist.\n @return URI string"
                  },
                  "functionSelector": "0e89341c",
                  "id": 3749,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3745,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3744,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3749,
                        "src": "971:10:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3743,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "971:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "970:12:24"
                  },
                  "returnParameters": {
                    "id": 3748,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3747,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3749,
                        "src": "1006:13:24",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3746,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1006:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1005:15:24"
                  },
                  "scope": 3750,
                  "src": "958:63:24",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3751,
              "src": "271:752:24"
            }
          ],
          "src": "33:991:24"
        },
        "id": 24
      },
      "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol",
          "exportedSymbols": {
            "IERC1155TokenReceiver": [
              3788
            ]
          },
          "id": 3789,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3752,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:25"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3753,
                "nodeType": "StructuredDocumentation",
                "src": "66:279:25",
                "text": " @title ERC1155 Multi Token Standard, Tokens Receiver.\n Interface for any contract that wants to support transfers from ERC1155 asset contracts.\n @dev See https://eips.ethereum.org/EIPS/eip-1155\n @dev Note: The ERC-165 identifier for this interface is 0x4e2312e0."
              },
              "fullyImplemented": false,
              "id": 3788,
              "linearizedBaseContracts": [
                3788
              ],
              "name": "IERC1155TokenReceiver",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3754,
                    "nodeType": "StructuredDocumentation",
                    "src": "384:963:25",
                    "text": " @notice Handle the receipt of a single ERC1155 token type.\n An ERC1155 contract MUST call this function on a recipient contract, at the end of a `safeTransferFrom` after the balance update.\n This function MUST return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n  (i.e. 0xf23a6e61) to accept the transfer.\n Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.\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   `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`"
                  },
                  "functionSelector": "f23a6e61",
                  "id": 3769,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3765,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3756,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 3769,
                        "src": "1388:16:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3755,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1388:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3758,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3769,
                        "src": "1414:12:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3757,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1414:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3760,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3769,
                        "src": "1436:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3759,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1436:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3762,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3769,
                        "src": "1456:13:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3761,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1456:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3764,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3769,
                        "src": "1479:19:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3763,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1479:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1378:126:25"
                  },
                  "returnParameters": {
                    "id": 3768,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3767,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3769,
                        "src": "1523:6:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3766,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1523:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1522:8:25"
                  },
                  "scope": 3788,
                  "src": "1352:179:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3770,
                    "nodeType": "StructuredDocumentation",
                    "src": "1537:1124:25",
                    "text": " @notice Handle the receipt of multiple ERC1155 token types.\n An ERC1155 contract MUST call this function on a recipient contract, at the end of a `safeBatchTransferFrom` after the balance updates.\n This function MUST return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n  (i.e. 0xbc197c81) if to accept the transfer(s).\n Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.\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)\"))`"
                  },
                  "functionSelector": "bc197c81",
                  "id": 3787,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3783,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3772,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 3787,
                        "src": "2707:16:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3771,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2707:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3774,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3787,
                        "src": "2733:12:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3773,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2733:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3777,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3787,
                        "src": "2755:22:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3775,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2755:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3776,
                          "nodeType": "ArrayTypeName",
                          "src": "2755:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3780,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 3787,
                        "src": "2787:25:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3778,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2787:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3779,
                          "nodeType": "ArrayTypeName",
                          "src": "2787:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3782,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3787,
                        "src": "2822:19:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3781,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2822:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2697:150:25"
                  },
                  "returnParameters": {
                    "id": 3786,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3785,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3787,
                        "src": "2866:6:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3784,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2866:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2865:8:25"
                  },
                  "scope": 3788,
                  "src": "2666:208:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3789,
              "src": "346:2530:25"
            }
          ],
          "src": "33:2844:25"
        },
        "id": 25
      },
      "contracts/token/ERC1155/mocks/ERC1155InventoryBurnableMock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/mocks/ERC1155InventoryBurnableMock.sol",
          "exportedSymbols": {
            "ERC1155InventoryBurnable": [
              3288
            ],
            "ERC1155InventoryBurnableMock": [
              4004
            ],
            "IERC1155InventoryCreator": [
              3671
            ],
            "IERC1155InventoryMintable": [
              3726
            ],
            "IERC1155MetadataURI": [
              3750
            ],
            "IERC165": [
              218
            ],
            "IForwarderRegistry": [
              15006
            ],
            "ManagedIdentity": [
              322
            ],
            "MinterRole": [
              125
            ],
            "NFTBaseMetadataURI": [
              1431
            ],
            "Recoverable": [
              1253
            ],
            "UsingUniversalForwarding": [
              15172
            ]
          },
          "id": 4005,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3790,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:26"
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "id": 3792,
              "nodeType": "ImportDirective",
              "scope": 4005,
              "sourceUnit": 15007,
              "src": "66:108:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3791,
                    "name": "IForwarderRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:18:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 3794,
              "nodeType": "ImportDirective",
              "scope": 4005,
              "sourceUnit": 219,
              "src": "175:93:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3793,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "183:7:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol",
              "file": "./../interfaces/IERC1155MetadataURI.sol",
              "id": 3796,
              "nodeType": "ImportDirective",
              "scope": 4005,
              "sourceUnit": 3751,
              "src": "269:76:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3795,
                    "name": "IERC1155MetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "277:19:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryMintable.sol",
              "file": "./../interfaces/IERC1155InventoryMintable.sol",
              "id": 3798,
              "nodeType": "ImportDirective",
              "scope": 4005,
              "sourceUnit": 3727,
              "src": "346:88:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3797,
                    "name": "IERC1155InventoryMintable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "354:25:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryCreator.sol",
              "file": "./../interfaces/IERC1155InventoryCreator.sol",
              "id": 3800,
              "nodeType": "ImportDirective",
              "scope": 4005,
              "sourceUnit": 3672,
              "src": "435:86:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3799,
                    "name": "IERC1155InventoryCreator",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "443:24:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 3802,
              "nodeType": "ImportDirective",
              "scope": 4005,
              "sourceUnit": 323,
              "src": "522:102:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3801,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "530:15:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "id": 3804,
              "nodeType": "ImportDirective",
              "scope": 4005,
              "sourceUnit": 1265,
              "src": "625:93:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3803,
                    "name": "Recoverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "633:11:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "id": 3806,
              "nodeType": "ImportDirective",
              "scope": 4005,
              "sourceUnit": 15173,
              "src": "719:120:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3805,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "727:24:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "id": 3808,
              "nodeType": "ImportDirective",
              "scope": 4005,
              "sourceUnit": 126,
              "src": "840:92:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3807,
                    "name": "MinterRole",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "848:10:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155InventoryBurnable.sol",
              "file": "./../ERC1155InventoryBurnable.sol",
              "id": 3810,
              "nodeType": "ImportDirective",
              "scope": 4005,
              "sourceUnit": 3289,
              "src": "933:75:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3809,
                    "name": "ERC1155InventoryBurnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "941:24:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/metadata/NFTBaseMetadataURI.sol",
              "file": "./../../../metadata/NFTBaseMetadataURI.sol",
              "id": 3812,
              "nodeType": "ImportDirective",
              "scope": 4005,
              "sourceUnit": 1432,
              "src": "1009:78:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3811,
                    "name": "NFTBaseMetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "1017:18:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 3814,
                    "name": "Recoverable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1253,
                    "src": "1185:11:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Recoverable_$1253",
                      "typeString": "contract Recoverable"
                    }
                  },
                  "id": 3815,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1185:11:26"
                },
                {
                  "baseName": {
                    "id": 3816,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15172,
                    "src": "1202:24:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                      "typeString": "contract UsingUniversalForwarding"
                    }
                  },
                  "id": 3817,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1202:24:26"
                },
                {
                  "baseName": {
                    "id": 3818,
                    "name": "ERC1155InventoryBurnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3288,
                    "src": "1232:24:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155InventoryBurnable_$3288",
                      "typeString": "contract ERC1155InventoryBurnable"
                    }
                  },
                  "id": 3819,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1232:24:26"
                },
                {
                  "baseName": {
                    "id": 3820,
                    "name": "IERC1155InventoryMintable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3726,
                    "src": "1262:25:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155InventoryMintable_$3726",
                      "typeString": "contract IERC1155InventoryMintable"
                    }
                  },
                  "id": 3821,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1262:25:26"
                },
                {
                  "baseName": {
                    "id": 3822,
                    "name": "IERC1155InventoryCreator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3671,
                    "src": "1293:24:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155InventoryCreator_$3671",
                      "typeString": "contract IERC1155InventoryCreator"
                    }
                  },
                  "id": 3823,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1293:24:26"
                },
                {
                  "baseName": {
                    "id": 3824,
                    "name": "NFTBaseMetadataURI",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1431,
                    "src": "1323:18:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_NFTBaseMetadataURI_$1431",
                      "typeString": "contract NFTBaseMetadataURI"
                    }
                  },
                  "id": 3825,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1323:18:26"
                },
                {
                  "baseName": {
                    "id": 3826,
                    "name": "MinterRole",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 125,
                    "src": "1347:10:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MinterRole_$125",
                      "typeString": "contract MinterRole"
                    }
                  },
                  "id": 3827,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1347:10:26"
                }
              ],
              "contractDependencies": [
                22,
                125,
                206,
                218,
                322,
                1253,
                1431,
                2318,
                2882,
                3288,
                3530,
                3633,
                3659,
                3671,
                3696,
                3726,
                3738,
                3750,
                14994,
                15031,
                15172
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 3813,
                "nodeType": "StructuredDocumentation",
                "src": "1089:50:26",
                "text": " @title ERC1155 Inventory Burnable Mock."
              },
              "fullyImplemented": true,
              "id": 4004,
              "linearizedBaseContracts": [
                4004,
                125,
                1431,
                3671,
                3726,
                3288,
                2318,
                2882,
                3738,
                3750,
                3633,
                3696,
                3530,
                218,
                15172,
                14994,
                15031,
                1253,
                206,
                22,
                322,
                3659
              ],
              "name": "ERC1155InventoryBurnableMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3847,
                    "nodeType": "Block",
                    "src": "1636:2:26",
                    "statements": []
                  },
                  "id": 3848,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 3836,
                          "name": "collectionMaskLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3833,
                          "src": "1527:20:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 3837,
                      "modifierName": {
                        "id": 3835,
                        "name": "ERC1155InventoryBurnable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3288,
                        "src": "1502:24:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155InventoryBurnable_$3288_$",
                          "typeString": "type(contract ERC1155InventoryBurnable)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1502:46:26"
                    },
                    {
                      "arguments": [
                        {
                          "id": 3839,
                          "name": "forwarderRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3829,
                          "src": "1574:17:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        {
                          "id": 3840,
                          "name": "universalForwarder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3831,
                          "src": "1593:18:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 3841,
                      "modifierName": {
                        "id": 3838,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15172,
                        "src": "1549:24:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                          "typeString": "type(contract UsingUniversalForwarding)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1549:63:26"
                    },
                    {
                      "arguments": [
                        {
                          "expression": {
                            "id": 3843,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1624:3:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1624:10:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "id": 3845,
                      "modifierName": {
                        "id": 3842,
                        "name": "MinterRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 125,
                        "src": "1613:10:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MinterRole_$125_$",
                          "typeString": "type(contract MinterRole)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1613:22:26"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3834,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3829,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 3848,
                        "src": "1385:36:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 3828,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15006,
                          "src": "1385:18:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3831,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 3848,
                        "src": "1431:26:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3830,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1431:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3833,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 3848,
                        "src": "1467:28:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3832,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1467:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1375:126:26"
                  },
                  "returnParameters": {
                    "id": 3846,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1636:0:26"
                  },
                  "scope": 4004,
                  "src": "1364:274:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2931
                  ],
                  "body": {
                    "id": 3869,
                    "nodeType": "Block",
                    "src": "1892:121:26",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 3862,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 3857,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3851,
                              "src": "1909:11:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3859,
                                    "name": "IERC1155InventoryCreator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3671,
                                    "src": "1929:24:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryCreator_$3671_$",
                                      "typeString": "type(contract IERC1155InventoryCreator)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryCreator_$3671_$",
                                      "typeString": "type(contract IERC1155InventoryCreator)"
                                    }
                                  ],
                                  "id": 3858,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1924:4:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 3860,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1924:30:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155InventoryCreator_$3671",
                                  "typeString": "type(contract IERC1155InventoryCreator)"
                                }
                              },
                              "id": 3861,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1924:42:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "1909:57:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 3865,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3851,
                                "src": "1994:11:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 3863,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "1970:5:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_super$_ERC1155InventoryBurnableMock_$4004",
                                  "typeString": "contract super ERC1155InventoryBurnableMock"
                                }
                              },
                              "id": 3864,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2931,
                              "src": "1970:23:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 3866,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1970:36:26",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1909:97:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 3856,
                        "id": 3868,
                        "nodeType": "Return",
                        "src": "1902:104:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3849,
                    "nodeType": "StructuredDocumentation",
                    "src": "1773:23:26",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 3870,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3853,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1868:8:26"
                  },
                  "parameters": {
                    "id": 3852,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3851,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 3870,
                        "src": "1828:18:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3850,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1828:6:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1827:20:26"
                  },
                  "returnParameters": {
                    "id": 3856,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3855,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3870,
                        "src": "1886:4:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3854,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1886:4:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1885:6:26"
                  },
                  "scope": 4004,
                  "src": "1801:212:26",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3749
                  ],
                  "body": {
                    "id": 3883,
                    "nodeType": "Block",
                    "src": "2268:32:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3880,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3873,
                              "src": "2290:2:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3879,
                            "name": "_uri",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1430,
                            "src": "2285:4:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256) view returns (string memory)"
                            }
                          },
                          "id": 3881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2285:8:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 3878,
                        "id": 3882,
                        "nodeType": "Return",
                        "src": "2278:15:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3871,
                    "nodeType": "StructuredDocumentation",
                    "src": "2148:35:26",
                    "text": "@inheritdoc IERC1155MetadataURI"
                  },
                  "functionSelector": "0e89341c",
                  "id": 3884,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3875,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2235:8:26"
                  },
                  "parameters": {
                    "id": 3874,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3873,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3884,
                        "src": "2201:10:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3872,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2201:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2200:12:26"
                  },
                  "returnParameters": {
                    "id": 3878,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3877,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3884,
                        "src": "2253:13:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3876,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2253:6:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2252:15:26"
                  },
                  "scope": 4004,
                  "src": "2188:112:26",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3670
                  ],
                  "body": {
                    "id": 3897,
                    "nodeType": "Block",
                    "src": "2560:46:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3894,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3887,
                              "src": "2586:12:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3893,
                            "name": "_creator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "2577:8:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 3895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2577:22:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3892,
                        "id": 3896,
                        "nodeType": "Return",
                        "src": "2570:29:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3885,
                    "nodeType": "StructuredDocumentation",
                    "src": "2435:40:26",
                    "text": "@inheritdoc IERC1155InventoryCreator"
                  },
                  "functionSelector": "510b5158",
                  "id": 3898,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "creator",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3889,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2533:8:26"
                  },
                  "parameters": {
                    "id": 3888,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3887,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 3898,
                        "src": "2497:20:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3886,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2497:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2496:22:26"
                  },
                  "returnParameters": {
                    "id": 3892,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3891,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3898,
                        "src": "2551:7:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3890,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2551:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2550:9:26"
                  },
                  "scope": 4004,
                  "src": "2480:126:26",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3913,
                    "nodeType": "Block",
                    "src": "3161:89:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3905,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3981
                                ],
                                "referencedDeclaration": 3981,
                                "src": "3189:10:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 3906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3189:12:26",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 3904,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "3171:17:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3171:31:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3908,
                        "nodeType": "ExpressionStatement",
                        "src": "3171:31:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3910,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3901,
                              "src": "3230:12:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3909,
                            "name": "_createCollection",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2772,
                            "src": "3212:17:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 3911,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3212:31:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3912,
                        "nodeType": "ExpressionStatement",
                        "src": "3212:31:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3899,
                    "nodeType": "StructuredDocumentation",
                    "src": "2741:358:26",
                    "text": " Creates a collection.\n @dev Reverts if the sender is not the contract owner.\n @dev Reverts if `collectionId` does not represent a collection.\n @dev Reverts if `collectionId` has already been created.\n @dev Emits a {IERC1155Inventory-CollectionCreated} event.\n @param collectionId Identifier of the collection."
                  },
                  "functionSelector": "d0011d9d",
                  "id": 3914,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "createCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3902,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3901,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 3914,
                        "src": "3130:20:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3900,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3130:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3129:22:26"
                  },
                  "returnParameters": {
                    "id": 3903,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3161:0:26"
                  },
                  "scope": 4004,
                  "src": "3104:146:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3711
                  ],
                  "body": {
                    "id": 3939,
                    "nodeType": "Block",
                    "src": "3621:85:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3928,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3981
                                ],
                                "referencedDeclaration": 3981,
                                "src": "3646:10:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 3929,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3646:12:26",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 3927,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "3631:14:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 3930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3631:28:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3931,
                        "nodeType": "ExpressionStatement",
                        "src": "3631:28:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3933,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3917,
                              "src": "3679:2:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3934,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3919,
                              "src": "3683:2:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3935,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3921,
                              "src": "3687:5:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3936,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3923,
                              "src": "3694:4:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3932,
                            "name": "_safeMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1845,
                            "src": "3669:9:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 3937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3669:30:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3938,
                        "nodeType": "ExpressionStatement",
                        "src": "3669:30:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3915,
                    "nodeType": "StructuredDocumentation",
                    "src": "3385:93:26",
                    "text": "@inheritdoc IERC1155InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "5cfa9297",
                  "id": 3940,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3925,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3612:8:26"
                  },
                  "parameters": {
                    "id": 3924,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3917,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3940,
                        "src": "3510:10:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3916,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3510:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3919,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3940,
                        "src": "3530:10:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3918,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3530:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3921,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3940,
                        "src": "3550:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3920,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3550:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3923,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3940,
                        "src": "3573:17:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3922,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3573:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3500:96:26"
                  },
                  "returnParameters": {
                    "id": 3926,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3621:0:26"
                  },
                  "scope": 4004,
                  "src": "3483:223:26",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3725
                  ],
                  "body": {
                    "id": 3967,
                    "nodeType": "Block",
                    "src": "3973:92:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3956,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3981
                                ],
                                "referencedDeclaration": 3981,
                                "src": "3998:10:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 3957,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3998:12:26",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 3955,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "3983:14:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 3958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3983:28:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3959,
                        "nodeType": "ExpressionStatement",
                        "src": "3983:28:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3961,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3943,
                              "src": "4036:2:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3962,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3946,
                              "src": "4040:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 3963,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3949,
                              "src": "4045:6:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 3964,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3951,
                              "src": "4053:4:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3960,
                            "name": "_safeBatchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2039,
                            "src": "4021:14:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 3965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4021:37:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3966,
                        "nodeType": "ExpressionStatement",
                        "src": "4021:37:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3941,
                    "nodeType": "StructuredDocumentation",
                    "src": "3712:93:26",
                    "text": "@inheritdoc IERC1155InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "0d6a5bbb",
                  "id": 3968,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3953,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3964:8:26"
                  },
                  "parameters": {
                    "id": 3952,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3943,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3968,
                        "src": "3842:10:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3942,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3842:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3946,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3968,
                        "src": "3862:20:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3944,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3862:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3945,
                          "nodeType": "ArrayTypeName",
                          "src": "3862:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3949,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 3968,
                        "src": "3892:23:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3947,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3892:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3948,
                          "nodeType": "ArrayTypeName",
                          "src": "3892:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3951,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3968,
                        "src": "3925:17:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3950,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3925:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3832:116:26"
                  },
                  "returnParameters": {
                    "id": 3954,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3973:0:26"
                  },
                  "scope": 4004,
                  "src": "3810:255:26",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    312,
                    15126
                  ],
                  "body": {
                    "id": 3980,
                    "nodeType": "Block",
                    "src": "4322:61:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 3976,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "4339:24:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 3977,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgSender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15126,
                            "src": "4339:35:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 3978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4339:37:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 3975,
                        "id": 3979,
                        "nodeType": "Return",
                        "src": "4332:44:26"
                      }
                    ]
                  },
                  "id": 3981,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3972,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 3970,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "4253:15:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 3971,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "4270:24:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "4244:51:26"
                  },
                  "parameters": {
                    "id": 3969,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4219:2:26"
                  },
                  "returnParameters": {
                    "id": 3975,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3974,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3981,
                        "src": "4305:15:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 3973,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4305:15:26",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4304:17:26"
                  },
                  "scope": 4004,
                  "src": "4200:183:26",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    321,
                    15171
                  ],
                  "body": {
                    "id": 3993,
                    "nodeType": "Block",
                    "src": "4510:59:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 3989,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "4527:24:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 3990,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15171,
                            "src": "4527:33:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$",
                              "typeString": "function () view returns (bytes calldata)"
                            }
                          },
                          "id": 3991,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4527:35:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 3988,
                        "id": 3992,
                        "nodeType": "Return",
                        "src": "4520:42:26"
                      }
                    ]
                  },
                  "id": 3994,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3985,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 3983,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "4440:15:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 3984,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "4457:24:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "4431:51:26"
                  },
                  "parameters": {
                    "id": 3982,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4406:2:26"
                  },
                  "returnParameters": {
                    "id": 3988,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3987,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 3994,
                        "src": "4492:16:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3986,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4492:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4491:18:26"
                  },
                  "scope": 4004,
                  "src": "4389:180:26",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4002,
                    "nodeType": "Block",
                    "src": "4764:34:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3999,
                            "name": "_msgData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3994
                            ],
                            "referencedDeclaration": 3994,
                            "src": "4781:8:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () view returns (bytes memory)"
                            }
                          },
                          "id": 4000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4781:10:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3998,
                        "id": 4001,
                        "nodeType": "Return",
                        "src": "4774:17:26"
                      }
                    ]
                  },
                  "functionSelector": "c4c2bfdc",
                  "id": 4003,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3995,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4720:2:26"
                  },
                  "returnParameters": {
                    "id": 3998,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3997,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 4003,
                        "src": "4746:16:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3996,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4746:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4745:18:26"
                  },
                  "scope": 4004,
                  "src": "4704:94:26",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4005,
              "src": "1140:3660:26"
            }
          ],
          "src": "33:4768:26"
        },
        "id": 26
      },
      "contracts/token/ERC1155/mocks/ERC1155InventoryMock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/mocks/ERC1155InventoryMock.sol",
          "exportedSymbols": {
            "ERC1155Inventory": [
              2318
            ],
            "ERC1155InventoryMock": [
              4220
            ],
            "IERC1155InventoryCreator": [
              3671
            ],
            "IERC1155InventoryMintable": [
              3726
            ],
            "IERC1155MetadataURI": [
              3750
            ],
            "IERC165": [
              218
            ],
            "IForwarderRegistry": [
              15006
            ],
            "ManagedIdentity": [
              322
            ],
            "MinterRole": [
              125
            ],
            "NFTBaseMetadataURI": [
              1431
            ],
            "Recoverable": [
              1253
            ],
            "UsingUniversalForwarding": [
              15172
            ]
          },
          "id": 4221,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4006,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:27"
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "id": 4008,
              "nodeType": "ImportDirective",
              "scope": 4221,
              "sourceUnit": 15007,
              "src": "66:108:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4007,
                    "name": "IForwarderRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:18:27",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 4010,
              "nodeType": "ImportDirective",
              "scope": 4221,
              "sourceUnit": 219,
              "src": "175:93:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4009,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "183:7:27",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol",
              "file": "./../interfaces/IERC1155MetadataURI.sol",
              "id": 4012,
              "nodeType": "ImportDirective",
              "scope": 4221,
              "sourceUnit": 3751,
              "src": "269:76:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4011,
                    "name": "IERC1155MetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "277:19:27",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryMintable.sol",
              "file": "./../interfaces/IERC1155InventoryMintable.sol",
              "id": 4014,
              "nodeType": "ImportDirective",
              "scope": 4221,
              "sourceUnit": 3727,
              "src": "346:88:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4013,
                    "name": "IERC1155InventoryMintable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "354:25:27",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryCreator.sol",
              "file": "./../interfaces/IERC1155InventoryCreator.sol",
              "id": 4016,
              "nodeType": "ImportDirective",
              "scope": 4221,
              "sourceUnit": 3672,
              "src": "435:86:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4015,
                    "name": "IERC1155InventoryCreator",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "443:24:27",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 4018,
              "nodeType": "ImportDirective",
              "scope": 4221,
              "sourceUnit": 323,
              "src": "522:102:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4017,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "530:15:27",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "id": 4020,
              "nodeType": "ImportDirective",
              "scope": 4221,
              "sourceUnit": 1265,
              "src": "625:93:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4019,
                    "name": "Recoverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "633:11:27",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "id": 4022,
              "nodeType": "ImportDirective",
              "scope": 4221,
              "sourceUnit": 15173,
              "src": "719:120:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4021,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "727:24:27",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "id": 4024,
              "nodeType": "ImportDirective",
              "scope": 4221,
              "sourceUnit": 126,
              "src": "840:92:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4023,
                    "name": "MinterRole",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "848:10:27",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155Inventory.sol",
              "file": "./../ERC1155Inventory.sol",
              "id": 4026,
              "nodeType": "ImportDirective",
              "scope": 4221,
              "sourceUnit": 2319,
              "src": "933:59:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4025,
                    "name": "ERC1155Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "941:16:27",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/metadata/NFTBaseMetadataURI.sol",
              "file": "./../../../metadata/NFTBaseMetadataURI.sol",
              "id": 4028,
              "nodeType": "ImportDirective",
              "scope": 4221,
              "sourceUnit": 1432,
              "src": "993:78:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4027,
                    "name": "NFTBaseMetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "1001:18:27",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4030,
                    "name": "Recoverable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1253,
                    "src": "1152:11:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Recoverable_$1253",
                      "typeString": "contract Recoverable"
                    }
                  },
                  "id": 4031,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1152:11:27"
                },
                {
                  "baseName": {
                    "id": 4032,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15172,
                    "src": "1169:24:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                      "typeString": "contract UsingUniversalForwarding"
                    }
                  },
                  "id": 4033,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1169:24:27"
                },
                {
                  "baseName": {
                    "id": 4034,
                    "name": "ERC1155Inventory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2318,
                    "src": "1199:16:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155Inventory_$2318",
                      "typeString": "contract ERC1155Inventory"
                    }
                  },
                  "id": 4035,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1199:16:27"
                },
                {
                  "baseName": {
                    "id": 4036,
                    "name": "IERC1155InventoryMintable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3726,
                    "src": "1221:25:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155InventoryMintable_$3726",
                      "typeString": "contract IERC1155InventoryMintable"
                    }
                  },
                  "id": 4037,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1221:25:27"
                },
                {
                  "baseName": {
                    "id": 4038,
                    "name": "IERC1155InventoryCreator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3671,
                    "src": "1252:24:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155InventoryCreator_$3671",
                      "typeString": "contract IERC1155InventoryCreator"
                    }
                  },
                  "id": 4039,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1252:24:27"
                },
                {
                  "baseName": {
                    "id": 4040,
                    "name": "NFTBaseMetadataURI",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1431,
                    "src": "1282:18:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_NFTBaseMetadataURI_$1431",
                      "typeString": "contract NFTBaseMetadataURI"
                    }
                  },
                  "id": 4041,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1282:18:27"
                },
                {
                  "baseName": {
                    "id": 4042,
                    "name": "MinterRole",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 125,
                    "src": "1306:10:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MinterRole_$125",
                      "typeString": "contract MinterRole"
                    }
                  },
                  "id": 4043,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1306:10:27"
                }
              ],
              "contractDependencies": [
                22,
                125,
                206,
                218,
                322,
                1253,
                1431,
                2318,
                2882,
                3530,
                3633,
                3671,
                3696,
                3726,
                3738,
                3750,
                14994,
                15031,
                15172
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4029,
                "nodeType": "StructuredDocumentation",
                "src": "1073:41:27",
                "text": " @title ERC1155 Inventory Mock."
              },
              "fullyImplemented": true,
              "id": 4220,
              "linearizedBaseContracts": [
                4220,
                125,
                1431,
                3671,
                3726,
                2318,
                2882,
                3738,
                3750,
                3633,
                3696,
                3530,
                218,
                15172,
                14994,
                15031,
                1253,
                206,
                22,
                322
              ],
              "name": "ERC1155InventoryMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 4063,
                    "nodeType": "Block",
                    "src": "1587:2:27",
                    "statements": []
                  },
                  "id": 4064,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 4052,
                          "name": "collectionMaskLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4049,
                          "src": "1478:20:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 4053,
                      "modifierName": {
                        "id": 4051,
                        "name": "ERC1155Inventory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2318,
                        "src": "1461:16:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155Inventory_$2318_$",
                          "typeString": "type(contract ERC1155Inventory)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1461:38:27"
                    },
                    {
                      "arguments": [
                        {
                          "id": 4055,
                          "name": "forwarderRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4045,
                          "src": "1525:17:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        {
                          "id": 4056,
                          "name": "universalForwarder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4047,
                          "src": "1544:18:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 4057,
                      "modifierName": {
                        "id": 4054,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15172,
                        "src": "1500:24:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                          "typeString": "type(contract UsingUniversalForwarding)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1500:63:27"
                    },
                    {
                      "arguments": [
                        {
                          "expression": {
                            "id": 4059,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1575:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1575:10:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "id": 4061,
                      "modifierName": {
                        "id": 4058,
                        "name": "MinterRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 125,
                        "src": "1564:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MinterRole_$125_$",
                          "typeString": "type(contract MinterRole)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1564:22:27"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4050,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4045,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 4064,
                        "src": "1344:36:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 4044,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15006,
                          "src": "1344:18:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4047,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 4064,
                        "src": "1390:26:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4046,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1390:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4049,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 4064,
                        "src": "1426:28:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4048,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1426:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1334:126:27"
                  },
                  "returnParameters": {
                    "id": 4062,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1587:0:27"
                  },
                  "scope": 4220,
                  "src": "1323:266:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2453
                  ],
                  "body": {
                    "id": 4085,
                    "nodeType": "Block",
                    "src": "1843:121:27",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4083,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 4078,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4073,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4067,
                              "src": "1860:11:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4075,
                                    "name": "IERC1155InventoryCreator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3671,
                                    "src": "1880:24:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryCreator_$3671_$",
                                      "typeString": "type(contract IERC1155InventoryCreator)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryCreator_$3671_$",
                                      "typeString": "type(contract IERC1155InventoryCreator)"
                                    }
                                  ],
                                  "id": 4074,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1875:4:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 4076,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1875:30:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155InventoryCreator_$3671",
                                  "typeString": "type(contract IERC1155InventoryCreator)"
                                }
                              },
                              "id": 4077,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1875:42:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "1860:57:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 4081,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4067,
                                "src": "1945:11:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 4079,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "1921:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_super$_ERC1155InventoryMock_$4220",
                                  "typeString": "contract super ERC1155InventoryMock"
                                }
                              },
                              "id": 4080,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2453,
                              "src": "1921:23:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 4082,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1921:36:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1860:97:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4072,
                        "id": 4084,
                        "nodeType": "Return",
                        "src": "1853:104:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4065,
                    "nodeType": "StructuredDocumentation",
                    "src": "1724:23:27",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 4086,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4069,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1819:8:27"
                  },
                  "parameters": {
                    "id": 4068,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4067,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4086,
                        "src": "1779:18:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 4066,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1779:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1778:20:27"
                  },
                  "returnParameters": {
                    "id": 4072,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4071,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4086,
                        "src": "1837:4:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4070,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1837:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1836:6:27"
                  },
                  "scope": 4220,
                  "src": "1752:212:27",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3749
                  ],
                  "body": {
                    "id": 4099,
                    "nodeType": "Block",
                    "src": "2219:32:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4096,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4089,
                              "src": "2241:2:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4095,
                            "name": "_uri",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1430,
                            "src": "2236:4:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256) view returns (string memory)"
                            }
                          },
                          "id": 4097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2236:8:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 4094,
                        "id": 4098,
                        "nodeType": "Return",
                        "src": "2229:15:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4087,
                    "nodeType": "StructuredDocumentation",
                    "src": "2099:35:27",
                    "text": "@inheritdoc IERC1155MetadataURI"
                  },
                  "functionSelector": "0e89341c",
                  "id": 4100,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4091,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2186:8:27"
                  },
                  "parameters": {
                    "id": 4090,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4089,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4100,
                        "src": "2152:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4088,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2152:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2151:12:27"
                  },
                  "returnParameters": {
                    "id": 4094,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4093,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4100,
                        "src": "2204:13:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4092,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2204:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2203:15:27"
                  },
                  "scope": 4220,
                  "src": "2139:112:27",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3670
                  ],
                  "body": {
                    "id": 4113,
                    "nodeType": "Block",
                    "src": "2511:46:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4110,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4103,
                              "src": "2537:12:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4109,
                            "name": "_creator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "2528:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 4111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2528:22:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 4108,
                        "id": 4112,
                        "nodeType": "Return",
                        "src": "2521:29:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4101,
                    "nodeType": "StructuredDocumentation",
                    "src": "2386:40:27",
                    "text": "@inheritdoc IERC1155InventoryCreator"
                  },
                  "functionSelector": "510b5158",
                  "id": 4114,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "creator",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4105,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2484:8:27"
                  },
                  "parameters": {
                    "id": 4104,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4103,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4114,
                        "src": "2448:20:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4102,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2448:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2447:22:27"
                  },
                  "returnParameters": {
                    "id": 4108,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4107,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4114,
                        "src": "2502:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4106,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2502:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2501:9:27"
                  },
                  "scope": 4220,
                  "src": "2431:126:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4129,
                    "nodeType": "Block",
                    "src": "3112:89:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 4121,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  4197
                                ],
                                "referencedDeclaration": 4197,
                                "src": "3140:10:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 4122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3140:12:27",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 4120,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "3122:17:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3122:31:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4124,
                        "nodeType": "ExpressionStatement",
                        "src": "3122:31:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4126,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4117,
                              "src": "3181:12:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4125,
                            "name": "_createCollection",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2772,
                            "src": "3163:17:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 4127,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3163:31:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4128,
                        "nodeType": "ExpressionStatement",
                        "src": "3163:31:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4115,
                    "nodeType": "StructuredDocumentation",
                    "src": "2692:358:27",
                    "text": " Creates a collection.\n @dev Reverts if the sender is not the contract owner.\n @dev Reverts if `collectionId` does not represent a collection.\n @dev Reverts if `collectionId` has already been created.\n @dev Emits a {IERC1155Inventory-CollectionCreated} event.\n @param collectionId Identifier of the collection."
                  },
                  "functionSelector": "d0011d9d",
                  "id": 4130,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "createCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4118,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4117,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4130,
                        "src": "3081:20:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4116,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3081:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3080:22:27"
                  },
                  "returnParameters": {
                    "id": 4119,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3112:0:27"
                  },
                  "scope": 4220,
                  "src": "3055:146:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3711
                  ],
                  "body": {
                    "id": 4155,
                    "nodeType": "Block",
                    "src": "3572:85:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 4144,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  4197
                                ],
                                "referencedDeclaration": 4197,
                                "src": "3597:10:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 4145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3597:12:27",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 4143,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "3582:14:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 4146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3582:28:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4147,
                        "nodeType": "ExpressionStatement",
                        "src": "3582:28:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4149,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4133,
                              "src": "3630:2:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4150,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4135,
                              "src": "3634:2:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4151,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4137,
                              "src": "3638:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4152,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4139,
                              "src": "3645:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4148,
                            "name": "_safeMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1845,
                            "src": "3620:9:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 4153,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3620:30:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4154,
                        "nodeType": "ExpressionStatement",
                        "src": "3620:30:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4131,
                    "nodeType": "StructuredDocumentation",
                    "src": "3336:93:27",
                    "text": "@inheritdoc IERC1155InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "5cfa9297",
                  "id": 4156,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4141,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3563:8:27"
                  },
                  "parameters": {
                    "id": 4140,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4133,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4156,
                        "src": "3461:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4132,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3461:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4135,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4156,
                        "src": "3481:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4134,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3481:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4137,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4156,
                        "src": "3501:13:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4136,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3501:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4139,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4156,
                        "src": "3524:17:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4138,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3524:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3451:96:27"
                  },
                  "returnParameters": {
                    "id": 4142,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3572:0:27"
                  },
                  "scope": 4220,
                  "src": "3434:223:27",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3725
                  ],
                  "body": {
                    "id": 4183,
                    "nodeType": "Block",
                    "src": "3924:92:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 4172,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  4197
                                ],
                                "referencedDeclaration": 4197,
                                "src": "3949:10:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 4173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3949:12:27",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 4171,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "3934:14:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 4174,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3934:28:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4175,
                        "nodeType": "ExpressionStatement",
                        "src": "3934:28:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4177,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4159,
                              "src": "3987:2:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4178,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4162,
                              "src": "3991:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4179,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4165,
                              "src": "3996:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4180,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4167,
                              "src": "4004:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4176,
                            "name": "_safeBatchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2039,
                            "src": "3972:14:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 4181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3972:37:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4182,
                        "nodeType": "ExpressionStatement",
                        "src": "3972:37:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4157,
                    "nodeType": "StructuredDocumentation",
                    "src": "3663:93:27",
                    "text": "@inheritdoc IERC1155InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "0d6a5bbb",
                  "id": 4184,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4169,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3915:8:27"
                  },
                  "parameters": {
                    "id": 4168,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4159,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4184,
                        "src": "3793:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4158,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3793:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4162,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4184,
                        "src": "3813:20:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4160,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3813:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4161,
                          "nodeType": "ArrayTypeName",
                          "src": "3813:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4165,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4184,
                        "src": "3843:23:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4163,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3843:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4164,
                          "nodeType": "ArrayTypeName",
                          "src": "3843:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4167,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4184,
                        "src": "3876:17:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4166,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3876:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3783:116:27"
                  },
                  "returnParameters": {
                    "id": 4170,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3924:0:27"
                  },
                  "scope": 4220,
                  "src": "3761:255:27",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    312,
                    15126
                  ],
                  "body": {
                    "id": 4196,
                    "nodeType": "Block",
                    "src": "4273:61:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 4192,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "4290:24:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 4193,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgSender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15126,
                            "src": "4290:35:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 4194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4290:37:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 4191,
                        "id": 4195,
                        "nodeType": "Return",
                        "src": "4283:44:27"
                      }
                    ]
                  },
                  "id": 4197,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4188,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 4186,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "4204:15:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 4187,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "4221:24:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "4195:51:27"
                  },
                  "parameters": {
                    "id": 4185,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4170:2:27"
                  },
                  "returnParameters": {
                    "id": 4191,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4190,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4197,
                        "src": "4256:15:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 4189,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4256:15:27",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4255:17:27"
                  },
                  "scope": 4220,
                  "src": "4151:183:27",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    321,
                    15171
                  ],
                  "body": {
                    "id": 4209,
                    "nodeType": "Block",
                    "src": "4461:59:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 4205,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "4478:24:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 4206,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15171,
                            "src": "4478:33:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$",
                              "typeString": "function () view returns (bytes calldata)"
                            }
                          },
                          "id": 4207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4478:35:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 4204,
                        "id": 4208,
                        "nodeType": "Return",
                        "src": "4471:42:27"
                      }
                    ]
                  },
                  "id": 4210,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4201,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 4199,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "4391:15:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 4200,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "4408:24:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "4382:51:27"
                  },
                  "parameters": {
                    "id": 4198,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4357:2:27"
                  },
                  "returnParameters": {
                    "id": 4204,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4203,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 4210,
                        "src": "4443:16:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4202,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4443:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4442:18:27"
                  },
                  "scope": 4220,
                  "src": "4340:180:27",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4218,
                    "nodeType": "Block",
                    "src": "4715:34:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4215,
                            "name": "_msgData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4210
                            ],
                            "referencedDeclaration": 4210,
                            "src": "4732:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () view returns (bytes memory)"
                            }
                          },
                          "id": 4216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4732:10:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 4214,
                        "id": 4217,
                        "nodeType": "Return",
                        "src": "4725:17:27"
                      }
                    ]
                  },
                  "functionSelector": "c4c2bfdc",
                  "id": 4219,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4211,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4671:2:27"
                  },
                  "returnParameters": {
                    "id": 4214,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4213,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 4219,
                        "src": "4697:16:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4212,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4697:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4696:18:27"
                  },
                  "scope": 4220,
                  "src": "4655:94:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4221,
              "src": "1115:3636:27"
            }
          ],
          "src": "33:4719:27"
        },
        "id": 27
      },
      "contracts/token/ERC1155/mocks/ERC1155InventoryPausableMock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/mocks/ERC1155InventoryPausableMock.sol",
          "exportedSymbols": {
            "ERC1155InventoryBurnableMock": [
              4004
            ],
            "ERC1155InventoryPausableMock": [
              4420
            ],
            "IERC1155": [
              3530
            ],
            "IERC1155InventoryBurnable": [
              3659
            ],
            "IForwarderRegistry": [
              15006
            ],
            "ManagedIdentity": [
              322
            ],
            "Pausable": [
              301
            ],
            "UsingUniversalForwarding": [
              15172
            ]
          },
          "id": 4421,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4222,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:28"
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "id": 4224,
              "nodeType": "ImportDirective",
              "scope": 4421,
              "sourceUnit": 15007,
              "src": "66:108:28",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4223,
                    "name": "IForwarderRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:18:28",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155.sol",
              "file": "./../interfaces/IERC1155.sol",
              "id": 4226,
              "nodeType": "ImportDirective",
              "scope": 4421,
              "sourceUnit": 3531,
              "src": "175:54:28",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4225,
                    "name": "IERC1155",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "183:8:28",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryBurnable.sol",
              "file": "./../interfaces/IERC1155InventoryBurnable.sol",
              "id": 4228,
              "nodeType": "ImportDirective",
              "scope": 4421,
              "sourceUnit": 3660,
              "src": "230:88:28",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4227,
                    "name": "IERC1155InventoryBurnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "238:25:28",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 4230,
              "nodeType": "ImportDirective",
              "scope": 4421,
              "sourceUnit": 323,
              "src": "319:102:28",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4229,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "327:15:28",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "id": 4232,
              "nodeType": "ImportDirective",
              "scope": 4421,
              "sourceUnit": 15173,
              "src": "422:120:28",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4231,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "430:24:28",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/mocks/ERC1155InventoryBurnableMock.sol",
              "file": "./ERC1155InventoryBurnableMock.sol",
              "id": 4234,
              "nodeType": "ImportDirective",
              "scope": 4421,
              "sourceUnit": 4005,
              "src": "543:80:28",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4233,
                    "name": "ERC1155InventoryBurnableMock",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "551:28:28",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/lifecycle/Pausable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/lifecycle/Pausable.sol",
              "id": 4236,
              "nodeType": "ImportDirective",
              "scope": 4421,
              "sourceUnit": 302,
              "src": "624:91:28",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4235,
                    "name": "Pausable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "632:8:28",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4238,
                    "name": "Pausable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 301,
                    "src": "936:8:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Pausable_$301",
                      "typeString": "contract Pausable"
                    }
                  },
                  "id": 4239,
                  "nodeType": "InheritanceSpecifier",
                  "src": "936:8:28"
                },
                {
                  "baseName": {
                    "id": 4240,
                    "name": "ERC1155InventoryBurnableMock",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4004,
                    "src": "946:28:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155InventoryBurnableMock_$4004",
                      "typeString": "contract ERC1155InventoryBurnableMock"
                    }
                  },
                  "id": 4241,
                  "nodeType": "InheritanceSpecifier",
                  "src": "946:28:28"
                }
              ],
              "contractDependencies": [
                22,
                125,
                206,
                218,
                301,
                322,
                1253,
                1431,
                2318,
                2882,
                3288,
                3530,
                3633,
                3659,
                3671,
                3696,
                3726,
                3738,
                3750,
                4004,
                14994,
                15031,
                15172
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4237,
                "nodeType": "StructuredDocumentation",
                "src": "717:177:28",
                "text": " @title ERC1155 Inventory Pausable Mock.\n @dev The minting functions are usable while paused as it can be useful for contract maintenance such as contract migration."
              },
              "fullyImplemented": true,
              "id": 4420,
              "linearizedBaseContracts": [
                4420,
                4004,
                125,
                1431,
                3671,
                3726,
                3288,
                2318,
                2882,
                3738,
                3750,
                3633,
                3696,
                3530,
                218,
                15172,
                14994,
                15031,
                1253,
                206,
                22,
                301,
                322,
                3659
              ],
              "name": "ERC1155InventoryPausableMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 4258,
                    "nodeType": "Block",
                    "src": "1225:2:28",
                    "statements": []
                  },
                  "id": 4259,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 4250,
                          "name": "forwarderRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4243,
                          "src": "1148:17:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        {
                          "id": 4251,
                          "name": "universalForwarder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4245,
                          "src": "1167:18:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 4252,
                          "name": "collectionMaskLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4247,
                          "src": "1187:20:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 4253,
                      "modifierName": {
                        "id": 4249,
                        "name": "ERC1155InventoryBurnableMock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4004,
                        "src": "1119:28:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155InventoryBurnableMock_$4004_$",
                          "typeString": "type(contract ERC1155InventoryBurnableMock)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1119:89:28"
                    },
                    {
                      "arguments": [
                        {
                          "hexValue": "66616c7365",
                          "id": 4255,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1218:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        }
                      ],
                      "id": 4256,
                      "modifierName": {
                        "id": 4254,
                        "name": "Pausable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 301,
                        "src": "1209:8:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Pausable_$301_$",
                          "typeString": "type(contract Pausable)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1209:15:28"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4248,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4243,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 4259,
                        "src": "1002:36:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 4242,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15006,
                          "src": "1002:18:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4245,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 4259,
                        "src": "1048:26:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4244,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1048:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4247,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 4259,
                        "src": "1084:28:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4246,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1084:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "992:126:28"
                  },
                  "returnParameters": {
                    "id": 4257,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1225:0:28"
                  },
                  "scope": 4420,
                  "src": "981:246:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4271,
                    "nodeType": "Block",
                    "src": "1458:66:28",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 4264,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  4406
                                ],
                                "referencedDeclaration": 4406,
                                "src": "1486:10:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 4265,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1486:12:28",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 4263,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "1468:17:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1468:31:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4267,
                        "nodeType": "ExpressionStatement",
                        "src": "1468:31:28"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4268,
                            "name": "_pause",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 283,
                            "src": "1509:6:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 4269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1509:8:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4270,
                        "nodeType": "ExpressionStatement",
                        "src": "1509:8:28"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4260,
                    "nodeType": "StructuredDocumentation",
                    "src": "1362:57:28",
                    "text": "@dev Reverts if the sender is not the contract owner."
                  },
                  "functionSelector": "8456cb59",
                  "id": 4272,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pause",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4261,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1438:2:28"
                  },
                  "returnParameters": {
                    "id": 4262,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1458:0:28"
                  },
                  "scope": 4420,
                  "src": "1424:100:28",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4284,
                    "nodeType": "Block",
                    "src": "1628:68:28",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 4277,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  4406
                                ],
                                "referencedDeclaration": 4406,
                                "src": "1656:10:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 4278,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1656:12:28",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 4276,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "1638:17:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1638:31:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4280,
                        "nodeType": "ExpressionStatement",
                        "src": "1638:31:28"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4281,
                            "name": "_unpause",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 300,
                            "src": "1679:8:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 4282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1679:10:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4283,
                        "nodeType": "ExpressionStatement",
                        "src": "1679:10:28"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4273,
                    "nodeType": "StructuredDocumentation",
                    "src": "1530:57:28",
                    "text": "@dev Reverts if the sender is not the contract owner."
                  },
                  "functionSelector": "3f4ba83a",
                  "id": 4285,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "unpause",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4274,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1608:2:28"
                  },
                  "returnParameters": {
                    "id": 4275,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1628:0:28"
                  },
                  "scope": 4420,
                  "src": "1592:104:28",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1550
                  ],
                  "body": {
                    "id": 4313,
                    "nodeType": "Block",
                    "src": "2076:95:28",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4300,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "2086:17:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 4301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2086:19:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4302,
                        "nodeType": "ExpressionStatement",
                        "src": "2086:19:28"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4306,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4288,
                              "src": "2138:4:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4307,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4290,
                              "src": "2144:2:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4308,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4292,
                              "src": "2148:2:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4309,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294,
                              "src": "2152:5:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4310,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4296,
                              "src": "2159:4:28",
                              "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_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 4303,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "2115:5:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155InventoryPausableMock_$4420",
                                "typeString": "contract super ERC1155InventoryPausableMock"
                              }
                            },
                            "id": 4305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1550,
                            "src": "2115:22:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 4311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2115:49:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4312,
                        "nodeType": "ExpressionStatement",
                        "src": "2115:49:28"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4286,
                    "nodeType": "StructuredDocumentation",
                    "src": "1831:72:28",
                    "text": "@inheritdoc IERC1155\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "f242432a",
                  "id": 4314,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4298,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2067:8:28"
                  },
                  "parameters": {
                    "id": 4297,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4288,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4314,
                        "src": "1943:12:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4287,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1943:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4290,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4314,
                        "src": "1965:10:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4289,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1965:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4292,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4314,
                        "src": "1985:10:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4291,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1985:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4294,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4314,
                        "src": "2005:13:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4293,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2005:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4296,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4314,
                        "src": "2028:17:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4295,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2028:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1933:118:28"
                  },
                  "returnParameters": {
                    "id": 4299,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2076:0:28"
                  },
                  "scope": 4420,
                  "src": "1908:263:28",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1576
                  ],
                  "body": {
                    "id": 4344,
                    "nodeType": "Block",
                    "src": "2447:102:28",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4331,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "2457:17:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 4332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2457:19:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4333,
                        "nodeType": "ExpressionStatement",
                        "src": "2457:19:28"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4337,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4317,
                              "src": "2514:4:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4338,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4319,
                              "src": "2520:2:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4339,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4322,
                              "src": "2524:3:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4340,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4325,
                              "src": "2529:6:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4341,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4327,
                              "src": "2537:4:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 4334,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "2486:5:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155InventoryPausableMock_$4420",
                                "typeString": "contract super ERC1155InventoryPausableMock"
                              }
                            },
                            "id": 4336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeBatchTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1576,
                            "src": "2486:27:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 4342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2486:56:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4343,
                        "nodeType": "ExpressionStatement",
                        "src": "2486:56:28"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4315,
                    "nodeType": "StructuredDocumentation",
                    "src": "2177:72:28",
                    "text": "@inheritdoc IERC1155\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 4345,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4329,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2438:8:28"
                  },
                  "parameters": {
                    "id": 4328,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4317,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4345,
                        "src": "2294:12:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4316,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2294:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4319,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4345,
                        "src": "2316:10:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4318,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2316:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4322,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4345,
                        "src": "2336:20:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4320,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2336:7:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4321,
                          "nodeType": "ArrayTypeName",
                          "src": "2336:9:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4325,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4345,
                        "src": "2366:23:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4323,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2366:7:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4324,
                          "nodeType": "ArrayTypeName",
                          "src": "2366:9:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4327,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4345,
                        "src": "2399:17:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4326,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2399:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2284:138:28"
                  },
                  "returnParameters": {
                    "id": 4330,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2447:0:28"
                  },
                  "scope": 4420,
                  "src": "2254:295:28",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2996
                  ],
                  "body": {
                    "id": 4367,
                    "nodeType": "Block",
                    "src": "2891:77:28",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4356,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "2901:17:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 4357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2901:19:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4358,
                        "nodeType": "ExpressionStatement",
                        "src": "2901:19:28"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4362,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4348,
                              "src": "2945:4:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4363,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4350,
                              "src": "2951:2:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4364,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4352,
                              "src": "2955:5:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 4359,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "2930:5:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155InventoryPausableMock_$4420",
                                "typeString": "contract super ERC1155InventoryPausableMock"
                              }
                            },
                            "id": 4361,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burnFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2996,
                            "src": "2930:14:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 4365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2930:31:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4366,
                        "nodeType": "ExpressionStatement",
                        "src": "2930:31:28"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4346,
                    "nodeType": "StructuredDocumentation",
                    "src": "2684:89:28",
                    "text": "@inheritdoc IERC1155InventoryBurnable\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "124d91e5",
                  "id": 4368,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4354,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2882:8:28"
                  },
                  "parameters": {
                    "id": 4353,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4348,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4368,
                        "src": "2805:12:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4347,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2805:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4350,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4368,
                        "src": "2827:10:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4349,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2827:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4352,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4368,
                        "src": "2847:13:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4351,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2847:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2795:71:28"
                  },
                  "returnParameters": {
                    "id": 4355,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2891:0:28"
                  },
                  "scope": 4420,
                  "src": "2778:190:28",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3176
                  ],
                  "body": {
                    "id": 4392,
                    "nodeType": "Block",
                    "src": "3206:84:28",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4381,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "3216:17:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 4382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3216:19:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4383,
                        "nodeType": "ExpressionStatement",
                        "src": "3216:19:28"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4387,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4371,
                              "src": "3265:4:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4388,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "3271:3:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4389,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4377,
                              "src": "3276:6:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "expression": {
                              "id": 4384,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "3245:5:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155InventoryPausableMock_$4420",
                                "typeString": "contract super ERC1155InventoryPausableMock"
                              }
                            },
                            "id": 4386,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "batchBurnFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3176,
                            "src": "3245:19:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 4390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3245:38:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4391,
                        "nodeType": "ExpressionStatement",
                        "src": "3245:38:28"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4369,
                    "nodeType": "StructuredDocumentation",
                    "src": "2974:89:28",
                    "text": "@inheritdoc IERC1155InventoryBurnable\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "80534934",
                  "id": 4393,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4379,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3197:8:28"
                  },
                  "parameters": {
                    "id": 4378,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4371,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4393,
                        "src": "3100:12:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4370,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3100:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4374,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4393,
                        "src": "3122:20:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4372,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3122:7:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4373,
                          "nodeType": "ArrayTypeName",
                          "src": "3122:9:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4377,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4393,
                        "src": "3152:23:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4375,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3152:7:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4376,
                          "nodeType": "ArrayTypeName",
                          "src": "3152:9:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3090:91:28"
                  },
                  "returnParameters": {
                    "id": 4380,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3206:0:28"
                  },
                  "scope": 4420,
                  "src": "3068:222:28",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    312,
                    3981
                  ],
                  "body": {
                    "id": 4405,
                    "nodeType": "Block",
                    "src": "3551:61:28",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 4401,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "3568:24:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 4402,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgSender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15126,
                            "src": "3568:35:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 4403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3568:37:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 4400,
                        "id": 4404,
                        "nodeType": "Return",
                        "src": "3561:44:28"
                      }
                    ]
                  },
                  "id": 4406,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4397,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 4395,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "3478:15:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 4396,
                        "name": "ERC1155InventoryBurnableMock",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4004,
                        "src": "3495:28:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155InventoryBurnableMock_$4004",
                          "typeString": "contract ERC1155InventoryBurnableMock"
                        }
                      }
                    ],
                    "src": "3469:55:28"
                  },
                  "parameters": {
                    "id": 4394,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3444:2:28"
                  },
                  "returnParameters": {
                    "id": 4400,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4399,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4406,
                        "src": "3534:15:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 4398,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3534:15:28",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3533:17:28"
                  },
                  "scope": 4420,
                  "src": "3425:187:28",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    321,
                    3994
                  ],
                  "body": {
                    "id": 4418,
                    "nodeType": "Block",
                    "src": "3743:59:28",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 4414,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "3760:24:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 4415,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15171,
                            "src": "3760:33:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$",
                              "typeString": "function () view returns (bytes calldata)"
                            }
                          },
                          "id": 4416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3760:35:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 4413,
                        "id": 4417,
                        "nodeType": "Return",
                        "src": "3753:42:28"
                      }
                    ]
                  },
                  "id": 4419,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4410,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 4408,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "3669:15:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 4409,
                        "name": "ERC1155InventoryBurnableMock",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4004,
                        "src": "3686:28:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155InventoryBurnableMock_$4004",
                          "typeString": "contract ERC1155InventoryBurnableMock"
                        }
                      }
                    ],
                    "src": "3660:55:28"
                  },
                  "parameters": {
                    "id": 4407,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3635:2:28"
                  },
                  "returnParameters": {
                    "id": 4413,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4412,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 4419,
                        "src": "3725:16:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4411,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3725:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3724:18:28"
                  },
                  "scope": 4420,
                  "src": "3618:184:28",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 4421,
              "src": "895:2909:28"
            }
          ],
          "src": "33:3772:28"
        },
        "id": 28
      },
      "contracts/token/ERC1155/mocks/ERC1155TokenReceiverMock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/mocks/ERC1155TokenReceiverMock.sol",
          "exportedSymbols": {
            "ERC1155TokenReceiver": [
              3415
            ],
            "ERC1155TokenReceiverMock": [
              4572
            ],
            "IERC1155TokenReceiver": [
              3788
            ]
          },
          "id": 4573,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4422,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:29"
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol",
              "file": "./../interfaces/IERC1155TokenReceiver.sol",
              "id": 4424,
              "nodeType": "ImportDirective",
              "scope": 4573,
              "sourceUnit": 3789,
              "src": "66:80:29",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4423,
                    "name": "IERC1155TokenReceiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:21:29",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155TokenReceiver.sol",
              "file": "./../ERC1155TokenReceiver.sol",
              "id": 4426,
              "nodeType": "ImportDirective",
              "scope": 4573,
              "sourceUnit": 3416,
              "src": "147:67:29",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4425,
                    "name": "ERC1155TokenReceiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "155:20:29",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4428,
                    "name": "ERC1155TokenReceiver",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3415,
                    "src": "300:20:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155TokenReceiver_$3415",
                      "typeString": "contract ERC1155TokenReceiver"
                    }
                  },
                  "id": 4429,
                  "nodeType": "InheritanceSpecifier",
                  "src": "300:20:29"
                }
              ],
              "contractDependencies": [
                218,
                3415,
                3788
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4427,
                "nodeType": "StructuredDocumentation",
                "src": "216:46:29",
                "text": " @title ERC1155 Token Receiver Mock."
              },
              "fullyImplemented": true,
              "id": 4572,
              "linearizedBaseContracts": [
                4572,
                3415,
                3788,
                218
              ],
              "name": "ERC1155TokenReceiverMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 4443,
                  "name": "ReceivedSingle",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4442,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4431,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 4443,
                        "src": "348:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4430,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "348:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4433,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4443,
                        "src": "366:12:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4432,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "366:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4435,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4443,
                        "src": "380:10:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4434,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "380:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4437,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4443,
                        "src": "392:13:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4436,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "392:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4439,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4443,
                        "src": "407:10:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4438,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "407:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4441,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "gas",
                        "nodeType": "VariableDeclaration",
                        "scope": 4443,
                        "src": "419:11:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4440,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "419:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "347:84:29"
                  },
                  "src": "327:105:29"
                },
                {
                  "anonymous": false,
                  "id": 4459,
                  "name": "ReceivedBatch",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4458,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4445,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 4459,
                        "src": "458:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4444,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "458:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4447,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4459,
                        "src": "476:12:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4446,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "476:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4450,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4459,
                        "src": "490:13:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4448,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "490:7:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4449,
                          "nodeType": "ArrayTypeName",
                          "src": "490:9:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4453,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4459,
                        "src": "505:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4451,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "505:7:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4452,
                          "nodeType": "ArrayTypeName",
                          "src": "505:9:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4455,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4459,
                        "src": "523:10:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4454,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "523:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4457,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "gas",
                        "nodeType": "VariableDeclaration",
                        "scope": 4459,
                        "src": "535:11:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4456,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "535:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "457:90:29"
                  },
                  "src": "438:110:29"
                },
                {
                  "constant": false,
                  "id": 4461,
                  "mutability": "immutable",
                  "name": "_accept1155",
                  "nodeType": "VariableDeclaration",
                  "scope": 4572,
                  "src": "554:35:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4460,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "554:4:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4463,
                  "mutability": "immutable",
                  "name": "_tokenAddress1155",
                  "nodeType": "VariableDeclaration",
                  "scope": 4572,
                  "src": "595:44:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4462,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "595:7:29",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4480,
                    "nodeType": "Block",
                    "src": "720:83:29",
                    "statements": [
                      {
                        "expression": {
                          "id": 4474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4472,
                            "name": "_accept1155",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4461,
                            "src": "730:11:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4473,
                            "name": "accept1155",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4465,
                            "src": "744:10:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "730:24:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4475,
                        "nodeType": "ExpressionStatement",
                        "src": "730:24:29"
                      },
                      {
                        "expression": {
                          "id": 4478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4476,
                            "name": "_tokenAddress1155",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4463,
                            "src": "764:17:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4477,
                            "name": "tokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4467,
                            "src": "784:12:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "764:32:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4479,
                        "nodeType": "ExpressionStatement",
                        "src": "764:32:29"
                      }
                    ]
                  },
                  "id": 4481,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [],
                      "id": 4470,
                      "modifierName": {
                        "id": 4469,
                        "name": "ERC1155TokenReceiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3415,
                        "src": "697:20:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155TokenReceiver_$3415_$",
                          "typeString": "type(contract ERC1155TokenReceiver)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "697:22:29"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4468,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4465,
                        "mutability": "mutable",
                        "name": "accept1155",
                        "nodeType": "VariableDeclaration",
                        "scope": 4481,
                        "src": "658:15:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4464,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "658:4:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4467,
                        "mutability": "mutable",
                        "name": "tokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 4481,
                        "src": "675:20:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4466,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "675:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "657:39:29"
                  },
                  "returnParameters": {
                    "id": 4471,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "720:0:29"
                  },
                  "scope": 4572,
                  "src": "646:157:29",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3769
                  ],
                  "body": {
                    "id": 4524,
                    "nodeType": "Block",
                    "src": "1246:296:29",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4502,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 4499,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1264:3:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "1264:10:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 4501,
                                "name": "_tokenAddress1155",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4463,
                                "src": "1278:17:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1264:31:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433131353552656365697665723a2077726f6e6720746f6b656e",
                              "id": 4503,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1297:30:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1ccec925e4eac0f34e1128c4f077a36528dcfe31ed768ad35961abad4ec0c348",
                                "typeString": "literal_string \"ERC1155Receiver: wrong token\""
                              },
                              "value": "ERC1155Receiver: wrong token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1ccec925e4eac0f34e1128c4f077a36528dcfe31ed768ad35961abad4ec0c348",
                                "typeString": "literal_string \"ERC1155Receiver: wrong token\""
                              }
                            ],
                            "id": 4498,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1256:7:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1256:72:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4505,
                        "nodeType": "ExpressionStatement",
                        "src": "1256:72:29"
                      },
                      {
                        "condition": {
                          "id": 4506,
                          "name": "_accept1155",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4461,
                          "src": "1342:11:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4522,
                          "nodeType": "Block",
                          "src": "1487:49:29",
                          "statements": [
                            {
                              "expression": {
                                "id": 4520,
                                "name": "_ERC1155_REJECTED",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3390,
                                "src": "1508:17:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "functionReturnParameters": 4497,
                              "id": 4521,
                              "nodeType": "Return",
                              "src": "1501:24:29"
                            }
                          ]
                        },
                        "id": 4523,
                        "nodeType": "IfStatement",
                        "src": "1338:198:29",
                        "trueBody": {
                          "id": 4519,
                          "nodeType": "Block",
                          "src": "1355:126:29",
                          "statements": [
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 4508,
                                    "name": "operator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4484,
                                    "src": "1389:8:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4509,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4486,
                                    "src": "1399:4:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4510,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4488,
                                    "src": "1405:2:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4511,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4490,
                                    "src": "1409:5:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4512,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4492,
                                    "src": "1416:4:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 4513,
                                      "name": "gasleft",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -7,
                                      "src": "1422:7:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                        "typeString": "function () view returns (uint256)"
                                      }
                                    },
                                    "id": 4514,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1422:9:29",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4507,
                                  "name": "ReceivedSingle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4443,
                                  "src": "1374:14:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,bytes memory,uint256)"
                                  }
                                },
                                "id": 4515,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1374:58:29",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4516,
                              "nodeType": "EmitStatement",
                              "src": "1369:63:29"
                            },
                            {
                              "expression": {
                                "id": 4517,
                                "name": "_ERC1155_RECEIVED",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3384,
                                "src": "1453:17:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "functionReturnParameters": 4497,
                              "id": 4518,
                              "nodeType": "Return",
                              "src": "1446:24:29"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4482,
                    "nodeType": "StructuredDocumentation",
                    "src": "938:111:29",
                    "text": "@inheritdoc IERC1155TokenReceiver\n @dev reverts if the sender is not the supported ERC1155 contract."
                  },
                  "functionSelector": "f23a6e61",
                  "id": 4525,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4494,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1220:8:29"
                  },
                  "parameters": {
                    "id": 4493,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4484,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 4525,
                        "src": "1090:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4483,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1090:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4486,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4525,
                        "src": "1116:12:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4485,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1116:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4488,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4525,
                        "src": "1138:10:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4487,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1138:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4490,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4525,
                        "src": "1158:13:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4489,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1158:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4492,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4525,
                        "src": "1181:17:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4491,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1181:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1080:124:29"
                  },
                  "returnParameters": {
                    "id": 4497,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4496,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4525,
                        "src": "1238:6:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 4495,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1238:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1237:8:29"
                  },
                  "scope": 4572,
                  "src": "1054:488:29",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3787
                  ],
                  "body": {
                    "id": 4570,
                    "nodeType": "Block",
                    "src": "1881:303:29",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4548,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 4545,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1899:3:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4546,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "1899:10:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 4547,
                                "name": "_tokenAddress1155",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4463,
                                "src": "1913:17:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1899:31:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433131353552656365697665723a2077726f6e6720746f6b656e",
                              "id": 4549,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1932:30:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1ccec925e4eac0f34e1128c4f077a36528dcfe31ed768ad35961abad4ec0c348",
                                "typeString": "literal_string \"ERC1155Receiver: wrong token\""
                              },
                              "value": "ERC1155Receiver: wrong token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1ccec925e4eac0f34e1128c4f077a36528dcfe31ed768ad35961abad4ec0c348",
                                "typeString": "literal_string \"ERC1155Receiver: wrong token\""
                              }
                            ],
                            "id": 4544,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1891:7:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1891:72:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4551,
                        "nodeType": "ExpressionStatement",
                        "src": "1891:72:29"
                      },
                      {
                        "condition": {
                          "id": 4552,
                          "name": "_accept1155",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4461,
                          "src": "1977:11:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4568,
                          "nodeType": "Block",
                          "src": "2129:49:29",
                          "statements": [
                            {
                              "expression": {
                                "id": 4566,
                                "name": "_ERC1155_REJECTED",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3390,
                                "src": "2150:17:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "functionReturnParameters": 4543,
                              "id": 4567,
                              "nodeType": "Return",
                              "src": "2143:24:29"
                            }
                          ]
                        },
                        "id": 4569,
                        "nodeType": "IfStatement",
                        "src": "1973:205:29",
                        "trueBody": {
                          "id": 4565,
                          "nodeType": "Block",
                          "src": "1990:133:29",
                          "statements": [
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 4554,
                                    "name": "operator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4528,
                                    "src": "2023:8:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4555,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4530,
                                    "src": "2033:4:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4556,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4533,
                                    "src": "2039:3:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 4557,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4536,
                                    "src": "2044:6:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 4558,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4538,
                                    "src": "2052:4:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 4559,
                                      "name": "gasleft",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -7,
                                      "src": "2058:7:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                        "typeString": "function () view returns (uint256)"
                                      }
                                    },
                                    "id": 4560,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2058:9:29",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4553,
                                  "name": "ReceivedBatch",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4459,
                                  "src": "2009:13:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory,uint256)"
                                  }
                                },
                                "id": 4561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2009:59:29",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4562,
                              "nodeType": "EmitStatement",
                              "src": "2004:64:29"
                            },
                            {
                              "expression": {
                                "id": 4563,
                                "name": "_ERC1155_BATCH_RECEIVED",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3387,
                                "src": "2089:23:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "functionReturnParameters": 4543,
                              "id": 4564,
                              "nodeType": "Return",
                              "src": "2082:30:29"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4526,
                    "nodeType": "StructuredDocumentation",
                    "src": "1548:111:29",
                    "text": "@inheritdoc IERC1155TokenReceiver\n @dev reverts if the sender is not the supported ERC1155 contract."
                  },
                  "functionSelector": "bc197c81",
                  "id": 4571,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4540,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1855:8:29"
                  },
                  "parameters": {
                    "id": 4539,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4528,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 4571,
                        "src": "1705:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4527,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1705:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4530,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4571,
                        "src": "1731:12:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4529,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1731:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4533,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4571,
                        "src": "1753:20:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4531,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1753:7:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4532,
                          "nodeType": "ArrayTypeName",
                          "src": "1753:9:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4536,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4571,
                        "src": "1783:23:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4534,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1783:7:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4535,
                          "nodeType": "ArrayTypeName",
                          "src": "1783:9:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4538,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4571,
                        "src": "1816:17:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4537,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1816:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1695:144:29"
                  },
                  "returnParameters": {
                    "id": 4543,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4542,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4571,
                        "src": "1873:6:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 4541,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1873:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1872:8:29"
                  },
                  "scope": 4572,
                  "src": "1664:520:29",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 4573,
              "src": "263:1923:29"
            }
          ],
          "src": "33:2154:29"
        },
        "id": 29
      },
      "contracts/token/ERC1155721/ERC1155721Inventory.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/ERC1155721Inventory.sol",
          "exportedSymbols": {
            "AddressIsContract": [
              1285
            ],
            "ERC1155721Inventory": [
              6851
            ],
            "ERC1155InventoryBase": [
              2882
            ],
            "ERC1155InventoryIdentifiersLib": [
              3370
            ],
            "IERC1155721Inventory": [
              7642
            ],
            "IERC1155Inventory": [
              3633
            ],
            "IERC1155MetadataURI": [
              3750
            ],
            "IERC1155TokenReceiver": [
              3788
            ],
            "IERC165": [
              218
            ],
            "IERC721": [
              13702
            ],
            "IERC721BatchTransfer": [
              13717
            ],
            "IERC721Metadata": [
              13790
            ],
            "IERC721Receiver": [
              13839
            ]
          },
          "id": 6852,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4574,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:30"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
              "id": 4576,
              "nodeType": "ImportDirective",
              "scope": 6852,
              "sourceUnit": 1286,
              "src": "66:111:30",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4575,
                    "name": "AddressIsContract",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:17:30",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol",
              "file": "./../ERC1155/ERC1155InventoryIdentifiersLib.sol",
              "id": 4578,
              "nodeType": "ImportDirective",
              "scope": 6852,
              "sourceUnit": 3371,
              "src": "178:95:30",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4577,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "186:30:30",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 4580,
              "nodeType": "ImportDirective",
              "scope": 6852,
              "sourceUnit": 219,
              "src": "274:93:30",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4579,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "282:7:30",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721.sol",
              "file": "./../ERC721/interfaces/IERC721.sol",
              "id": 4582,
              "nodeType": "ImportDirective",
              "scope": 6852,
              "sourceUnit": 13703,
              "src": "368:59:30",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4581,
                    "name": "IERC721",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "376:7:30",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Metadata.sol",
              "file": "./../ERC721/interfaces/IERC721Metadata.sol",
              "id": 4584,
              "nodeType": "ImportDirective",
              "scope": 6852,
              "sourceUnit": 13791,
              "src": "428:75:30",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4583,
                    "name": "IERC721Metadata",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "436:15:30",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol",
              "file": "./../ERC721/interfaces/IERC721BatchTransfer.sol",
              "id": 4586,
              "nodeType": "ImportDirective",
              "scope": 6852,
              "sourceUnit": 13718,
              "src": "504:85:30",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4585,
                    "name": "IERC721BatchTransfer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "512:20:30",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Receiver.sol",
              "file": "./../ERC721/interfaces/IERC721Receiver.sol",
              "id": 4588,
              "nodeType": "ImportDirective",
              "scope": 6852,
              "sourceUnit": 13840,
              "src": "590:75:30",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4587,
                    "name": "IERC721Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "598:15:30",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol",
              "file": "./../ERC1155/interfaces/IERC1155MetadataURI.sol",
              "id": 4590,
              "nodeType": "ImportDirective",
              "scope": 6852,
              "sourceUnit": 3751,
              "src": "666:84:30",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4589,
                    "name": "IERC1155MetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "674:19:30",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol",
              "file": "./../ERC1155/interfaces/IERC1155TokenReceiver.sol",
              "id": 4592,
              "nodeType": "ImportDirective",
              "scope": 6852,
              "sourceUnit": 3789,
              "src": "751:88:30",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4591,
                    "name": "IERC1155TokenReceiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "759:21:30",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol",
              "file": "./../ERC1155/interfaces/IERC1155Inventory.sol",
              "id": 4594,
              "nodeType": "ImportDirective",
              "scope": 6852,
              "sourceUnit": 3634,
              "src": "840:80:30",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4593,
                    "name": "IERC1155Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "848:17:30",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721Inventory.sol",
              "file": "./interfaces/IERC1155721Inventory.sol",
              "id": 4596,
              "nodeType": "ImportDirective",
              "scope": 6852,
              "sourceUnit": 7643,
              "src": "921:75:30",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4595,
                    "name": "IERC1155721Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "929:20:30",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155InventoryBase.sol",
              "file": "./../ERC1155/ERC1155InventoryBase.sol",
              "id": 4598,
              "nodeType": "ImportDirective",
              "scope": 6852,
              "sourceUnit": 2883,
              "src": "997:75:30",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4597,
                    "name": "ERC1155InventoryBase",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "1005:20:30",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4600,
                    "name": "IERC1155721Inventory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7642,
                    "src": "1342:20:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155721Inventory_$7642",
                      "typeString": "contract IERC1155721Inventory"
                    }
                  },
                  "id": 4601,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1342:20:30"
                },
                {
                  "baseName": {
                    "id": 4602,
                    "name": "IERC721Metadata",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13790,
                    "src": "1364:15:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721Metadata_$13790",
                      "typeString": "contract IERC721Metadata"
                    }
                  },
                  "id": 4603,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1364:15:30"
                },
                {
                  "baseName": {
                    "id": 4604,
                    "name": "ERC1155InventoryBase",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2882,
                    "src": "1381:20:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155InventoryBase_$2882",
                      "typeString": "contract ERC1155InventoryBase"
                    }
                  },
                  "id": 4605,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1381:20:30"
                }
              ],
              "contractDependencies": [
                218,
                322,
                2882,
                3530,
                3633,
                3696,
                3738,
                3750,
                7642,
                13702,
                13717,
                13790
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4599,
                "nodeType": "StructuredDocumentation",
                "src": "1074:226:30",
                "text": " @title ERC1155721Inventory, an ERC1155Inventory with additional support for ERC721.\n @dev The function `uri(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`."
              },
              "fullyImplemented": false,
              "id": 6851,
              "linearizedBaseContracts": [
                6851,
                2882,
                3738,
                3750,
                13790,
                7642,
                13717,
                13702,
                3633,
                3696,
                3530,
                218,
                322
              ],
              "name": "ERC1155721Inventory",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 4608,
                  "libraryName": {
                    "id": 4606,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3370,
                    "src": "1414:30:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155InventoryIdentifiersLib_$3370",
                      "typeString": "library ERC1155InventoryIdentifiersLib"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1408:49:30",
                  "typeName": {
                    "id": 4607,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1449:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 4611,
                  "libraryName": {
                    "id": 4609,
                    "name": "AddressIsContract",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1285,
                    "src": "1468:17:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddressIsContract_$1285",
                      "typeString": "library AddressIsContract"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1462:36:30",
                  "typeName": {
                    "id": 4610,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1490:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 4616,
                  "mutability": "constant",
                  "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                  "nodeType": "VariableDeclaration",
                  "scope": 6851,
                  "src": "1504:63:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4612,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1504:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542976_by_1",
                      "typeString": "int_const 1461...(41 digits omitted)...2976"
                    },
                    "id": 4615,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "31",
                      "id": 4613,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1559:1:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<<",
                    "rightExpression": {
                      "hexValue": "313630",
                      "id": 4614,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1564:3:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_160_by_1",
                        "typeString": "int_const 160"
                      },
                      "value": "160"
                    },
                    "src": "1559:8:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542976_by_1",
                      "typeString": "int_const 1461...(41 digits omitted)...2976"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4618,
                  "mutability": "mutable",
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 6851,
                  "src": "1574:21:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4617,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1574:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4620,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 6851,
                  "src": "1601:23:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4619,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1601:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4624,
                  "mutability": "mutable",
                  "name": "_nftBalances",
                  "nodeType": "VariableDeclaration",
                  "scope": 6851,
                  "src": "1662:49:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 4623,
                    "keyType": {
                      "id": 4621,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1670:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1662:27:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 4622,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1681:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4628,
                  "mutability": "mutable",
                  "name": "_nftApprovals",
                  "nodeType": "VariableDeclaration",
                  "scope": 6851,
                  "src": "1747:50:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 4627,
                    "keyType": {
                      "id": 4625,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1755:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1747:27:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 4626,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1766:7:30",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4648,
                    "nodeType": "Block",
                    "src": "1963:57:30",
                    "statements": [
                      {
                        "expression": {
                          "id": 4642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4640,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4618,
                            "src": "1973:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4641,
                            "name": "name_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4630,
                            "src": "1981:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1973:13:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 4643,
                        "nodeType": "ExpressionStatement",
                        "src": "1973:13:30"
                      },
                      {
                        "expression": {
                          "id": 4646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4644,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4620,
                            "src": "1996:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4645,
                            "name": "symbol_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4632,
                            "src": "2006:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1996:17:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 4647,
                        "nodeType": "ExpressionStatement",
                        "src": "1996:17:30"
                      }
                    ]
                  },
                  "id": 4649,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 4637,
                          "name": "collectionMaskLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4634,
                          "src": "1941:20:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 4638,
                      "modifierName": {
                        "id": 4636,
                        "name": "ERC1155InventoryBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2882,
                        "src": "1920:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155InventoryBase_$2882_$",
                          "typeString": "type(contract ERC1155InventoryBase)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1920:42:30"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4635,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4630,
                        "mutability": "mutable",
                        "name": "name_",
                        "nodeType": "VariableDeclaration",
                        "scope": 4649,
                        "src": "1825:19:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4629,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1825:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4632,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nodeType": "VariableDeclaration",
                        "scope": 4649,
                        "src": "1854:21:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4631,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1854:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4634,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 4649,
                        "src": "1885:28:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4633,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1885:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1815:104:30"
                  },
                  "returnParameters": {
                    "id": 4639,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1963:0:30"
                  },
                  "scope": 6851,
                  "src": "1804:216:30",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2453
                  ],
                  "body": {
                    "id": 4684,
                    "nodeType": "Block",
                    "src": "2274:261:30",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4682,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 4677,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 4670,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 4663,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4658,
                                  "name": "interfaceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4652,
                                  "src": "2303:11:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 4660,
                                        "name": "IERC721",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13702,
                                        "src": "2323:7:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC721_$13702_$",
                                          "typeString": "type(contract IERC721)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_contract$_IERC721_$13702_$",
                                          "typeString": "type(contract IERC721)"
                                        }
                                      ],
                                      "id": 4659,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "2318:4:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 4661,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2318:13:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$13702",
                                      "typeString": "type(contract IERC721)"
                                    }
                                  },
                                  "id": 4662,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "interfaceId",
                                  "nodeType": "MemberAccess",
                                  "src": "2318:25:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "2303:40:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 4669,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4664,
                                  "name": "interfaceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4652,
                                  "src": "2359:11:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 4666,
                                        "name": "IERC721Metadata",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13790,
                                        "src": "2379:15:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$13790_$",
                                          "typeString": "type(contract IERC721Metadata)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$13790_$",
                                          "typeString": "type(contract IERC721Metadata)"
                                        }
                                      ],
                                      "id": 4665,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "2374:4:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 4667,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2374:21:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$13790",
                                      "typeString": "type(contract IERC721Metadata)"
                                    }
                                  },
                                  "id": 4668,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "interfaceId",
                                  "nodeType": "MemberAccess",
                                  "src": "2374:33:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "2359:48:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2303:104:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 4676,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4671,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4652,
                                "src": "2423:11:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 4673,
                                      "name": "IERC721BatchTransfer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13717,
                                      "src": "2443:20:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721BatchTransfer_$13717_$",
                                        "typeString": "type(contract IERC721BatchTransfer)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721BatchTransfer_$13717_$",
                                        "typeString": "type(contract IERC721BatchTransfer)"
                                      }
                                    ],
                                    "id": 4672,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "2438:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 4674,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2438:26:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721BatchTransfer_$13717",
                                    "typeString": "type(contract IERC721BatchTransfer)"
                                  }
                                },
                                "id": 4675,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "2438:38:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "2423:53:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2303:173:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 4680,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4652,
                                "src": "2516:11:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 4678,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "2492:5:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_super$_ERC1155721Inventory_$6851",
                                  "typeString": "contract super ERC1155721Inventory"
                                }
                              },
                              "id": 4679,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2453,
                              "src": "2492:23:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 4681,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2492:36:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2303:225:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4657,
                        "id": 4683,
                        "nodeType": "Return",
                        "src": "2284:244:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4650,
                    "nodeType": "StructuredDocumentation",
                    "src": "2155:23:30",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 4685,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4654,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2250:8:30"
                  },
                  "parameters": {
                    "id": 4653,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4652,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4685,
                        "src": "2210:18:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 4651,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2210:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2209:20:30"
                  },
                  "returnParameters": {
                    "id": 4657,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4656,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4685,
                        "src": "2268:4:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4655,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2268:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2267:6:30"
                  },
                  "scope": 6851,
                  "src": "2183:352:30",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13775
                  ],
                  "body": {
                    "id": 4694,
                    "nodeType": "Block",
                    "src": "2775:29:30",
                    "statements": [
                      {
                        "expression": {
                          "id": 4692,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4618,
                          "src": "2792:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 4691,
                        "id": 4693,
                        "nodeType": "Return",
                        "src": "2785:12:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4686,
                    "nodeType": "StructuredDocumentation",
                    "src": "2670:31:30",
                    "text": "@inheritdoc IERC721Metadata"
                  },
                  "functionSelector": "06fdde03",
                  "id": 4695,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4688,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2742:8:30"
                  },
                  "parameters": {
                    "id": 4687,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2719:2:30"
                  },
                  "returnParameters": {
                    "id": 4691,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4690,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4695,
                        "src": "2760:13:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4689,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2760:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2759:15:30"
                  },
                  "scope": 6851,
                  "src": "2706:98:30",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13781
                  ],
                  "body": {
                    "id": 4704,
                    "nodeType": "Block",
                    "src": "2917:31:30",
                    "statements": [
                      {
                        "expression": {
                          "id": 4702,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4620,
                          "src": "2934:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 4701,
                        "id": 4703,
                        "nodeType": "Return",
                        "src": "2927:14:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4696,
                    "nodeType": "StructuredDocumentation",
                    "src": "2810:31:30",
                    "text": "@inheritdoc IERC721Metadata"
                  },
                  "functionSelector": "95d89b41",
                  "id": 4705,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4698,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2884:8:30"
                  },
                  "parameters": {
                    "id": 4697,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2861:2:30"
                  },
                  "returnParameters": {
                    "id": 4701,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4700,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4705,
                        "src": "2902:13:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4699,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2902:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2901:15:30"
                  },
                  "scope": 6851,
                  "src": "2846:102:30",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13789
                  ],
                  "body": {
                    "id": 4736,
                    "nodeType": "Block",
                    "src": "3078:130:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 4728,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 4719,
                                          "name": "_owners",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2383,
                                          "src": "3112:7:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 4721,
                                        "indexExpression": {
                                          "id": 4720,
                                          "name": "nftId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4708,
                                          "src": "3120:5:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3112:14:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 4718,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3104:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 4717,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3104:7:30",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4722,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3104:23:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 4716,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3096:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4715,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3096:7:30",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4723,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3096:32:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 4726,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3140:1:30",
                                    "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": 4725,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3132:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4724,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3132:7:30",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4727,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3132:10:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3096:46:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6578697374696e67204e4654",
                              "id": 4729,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3144:29:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d5290294c0b7ad6913fae1832076fb2552b80ffccbd7db3c426d932ecf724f10",
                                "typeString": "literal_string \"Inventory: non-existing NFT\""
                              },
                              "value": "Inventory: non-existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d5290294c0b7ad6913fae1832076fb2552b80ffccbd7db3c426d932ecf724f10",
                                "typeString": "literal_string \"Inventory: non-existing NFT\""
                              }
                            ],
                            "id": 4714,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3088:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3088:86:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4731,
                        "nodeType": "ExpressionStatement",
                        "src": "3088:86:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4733,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4708,
                              "src": "3195:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4732,
                            "name": "uri",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4746,
                            "src": "3191:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256) view returns (string memory)"
                            }
                          },
                          "id": 4734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3191:10:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 4713,
                        "id": 4735,
                        "nodeType": "Return",
                        "src": "3184:17:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4706,
                    "nodeType": "StructuredDocumentation",
                    "src": "2954:31:30",
                    "text": "@inheritdoc IERC721Metadata"
                  },
                  "functionSelector": "c87b56dd",
                  "id": 4737,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4710,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3045:8:30"
                  },
                  "parameters": {
                    "id": 4709,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4708,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4737,
                        "src": "3008:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4707,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3008:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3007:15:30"
                  },
                  "returnParameters": {
                    "id": 4713,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4712,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4737,
                        "src": "3063:13:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4711,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3063:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3062:15:30"
                  },
                  "scope": 6851,
                  "src": "2990:218:30",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3749
                  ],
                  "documentation": {
                    "id": 4738,
                    "nodeType": "StructuredDocumentation",
                    "src": "3343:35:30",
                    "text": "@inheritdoc IERC1155MetadataURI"
                  },
                  "functionSelector": "0e89341c",
                  "id": 4746,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4742,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3425:8:30"
                  },
                  "parameters": {
                    "id": 4741,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4740,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4746,
                        "src": "3396:7:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4739,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3396:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3395:9:30"
                  },
                  "returnParameters": {
                    "id": 4745,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4744,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4746,
                        "src": "3443:13:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4743,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3443:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3442:15:30"
                  },
                  "scope": 6851,
                  "src": "3383:75:30",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13627
                  ],
                  "body": {
                    "id": 4769,
                    "nodeType": "Block",
                    "src": "3709:118:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4756,
                                "name": "tokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4749,
                                "src": "3727:10:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 4759,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3749:1:30",
                                    "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": 4758,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3741:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4757,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3741:7:30",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4760,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3741:10:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3727:24:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2061646472657373",
                              "id": 4762,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3753:25:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_42707ea16674aa865e75081e780ce914a2dbf36492fac37b9d85bcb15fc7e9d7",
                                "typeString": "literal_string \"Inventory: zero address\""
                              },
                              "value": "Inventory: zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_42707ea16674aa865e75081e780ce914a2dbf36492fac37b9d85bcb15fc7e9d7",
                                "typeString": "literal_string \"Inventory: zero address\""
                              }
                            ],
                            "id": 4755,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3719:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3719:60:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4764,
                        "nodeType": "ExpressionStatement",
                        "src": "3719:60:30"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 4765,
                            "name": "_nftBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4624,
                            "src": "3796:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 4767,
                          "indexExpression": {
                            "id": 4766,
                            "name": "tokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4749,
                            "src": "3809:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3796:24:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4754,
                        "id": 4768,
                        "nodeType": "Return",
                        "src": "3789:31:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4747,
                    "nodeType": "StructuredDocumentation",
                    "src": "3593:23:30",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "70a08231",
                  "id": 4770,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4751,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3682:8:30"
                  },
                  "parameters": {
                    "id": 4750,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4749,
                        "mutability": "mutable",
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 4770,
                        "src": "3640:18:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4748,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3640:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3639:20:30"
                  },
                  "returnParameters": {
                    "id": 4754,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4753,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4770,
                        "src": "3700:7:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4752,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3700:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3699:9:30"
                  },
                  "scope": 6851,
                  "src": "3621:206:30",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    13643
                  ],
                  "body": {
                    "id": 4872,
                    "nodeType": "Block",
                    "src": "3931:925:30",
                    "statements": [
                      {
                        "assignments": [
                          4780
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4780,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 4872,
                            "src": "3941:13:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4779,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3941:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4784,
                        "initialValue": {
                          "baseExpression": {
                            "id": 4781,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2383,
                            "src": "3957:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 4783,
                          "indexExpression": {
                            "id": 4782,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4775,
                            "src": "3965:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3957:16:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3941:32:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4788,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4786,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4780,
                                "src": "3991:5:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 4787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4000:1:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3991:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6578697374696e67204e4654",
                              "id": 4789,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4003:29:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d5290294c0b7ad6913fae1832076fb2552b80ffccbd7db3c426d932ecf724f10",
                                "typeString": "literal_string \"Inventory: non-existing NFT\""
                              },
                              "value": "Inventory: non-existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d5290294c0b7ad6913fae1832076fb2552b80ffccbd7db3c426d932ecf724f10",
                                "typeString": "literal_string \"Inventory: non-existing NFT\""
                              }
                            ],
                            "id": 4785,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3983:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3983:50:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4791,
                        "nodeType": "ExpressionStatement",
                        "src": "3983:50:30"
                      },
                      {
                        "assignments": [
                          4793
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4793,
                            "mutability": "mutable",
                            "name": "ownerAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 4872,
                            "src": "4043:20:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4792,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4043:7:30",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4801,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 4798,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4780,
                                  "src": "4082:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 4797,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4074:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 4796,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4074:7:30",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4799,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4074:14:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 4795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4066:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4794,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4066:7:30",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4066:23:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4043:46:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4805,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4803,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4773,
                                "src": "4107:2:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 4804,
                                "name": "ownerAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4793,
                                "src": "4113:12:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4107:18:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2073656c662d617070726f76616c",
                              "id": 4806,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4127:26:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7c4ceb33c8a3e4251a079e5bc00a1d088f7b07efcf485dc31e509282980ff352",
                                "typeString": "literal_string \"Inventory: self-approval\""
                              },
                              "value": "Inventory: self-approval"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7c4ceb33c8a3e4251a079e5bc00a1d088f7b07efcf485dc31e509282980ff352",
                                "typeString": "literal_string \"Inventory: self-approval\""
                              }
                            ],
                            "id": 4802,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4099:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4099:55:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4808,
                        "nodeType": "ExpressionStatement",
                        "src": "4099:55:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 4811,
                                  "name": "ownerAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4793,
                                  "src": "4186:12:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 4812,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 312,
                                    "src": "4200:10:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                      "typeString": "function () view returns (address payable)"
                                    }
                                  },
                                  "id": 4813,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4200:12:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "id": 4810,
                                "name": "_isOperatable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2815,
                                "src": "4172:13:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address,address) view returns (bool)"
                                }
                              },
                              "id": 4814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4172:41:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                              "id": 4815,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4215:32:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              },
                              "value": "Inventory: non-approved sender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              }
                            ],
                            "id": 4809,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4164:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4164:84:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4817,
                        "nodeType": "ExpressionStatement",
                        "src": "4164:84:30"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 4823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4818,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4773,
                            "src": "4262:2:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 4821,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4276:1:30",
                                "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": 4820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4268:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4819,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4268:7:30",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4822,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4268:10:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4262:16:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4864,
                          "nodeType": "Block",
                          "src": "4488:312:30",
                          "statements": [
                            {
                              "assignments": [
                                4842
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4842,
                                  "mutability": "mutable",
                                  "name": "ownerWithApprovalBit",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4864,
                                  "src": "4502:28:30",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4841,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4502:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4846,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4845,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4843,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4780,
                                  "src": "4533:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "|",
                                "rightExpression": {
                                  "id": 4844,
                                  "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4616,
                                  "src": "4541:26:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4533:34:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4502:65:30"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4849,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4847,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4780,
                                  "src": "4585:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 4848,
                                  "name": "ownerWithApprovalBit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4842,
                                  "src": "4594:20:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4585:29:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4857,
                              "nodeType": "IfStatement",
                              "src": "4581:168:30",
                              "trueBody": {
                                "id": 4856,
                                "nodeType": "Block",
                                "src": "4616:133:30",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 4854,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 4850,
                                          "name": "_owners",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2383,
                                          "src": "4695:7:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 4852,
                                        "indexExpression": {
                                          "id": 4851,
                                          "name": "tokenId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4775,
                                          "src": "4703:7:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4695:16:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 4853,
                                        "name": "ownerWithApprovalBit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4842,
                                        "src": "4714:20:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4695:39:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4855,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4695:39:30"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 4862,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 4858,
                                    "name": "_nftApprovals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4628,
                                    "src": "4762:13:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    }
                                  },
                                  "id": 4860,
                                  "indexExpression": {
                                    "id": 4859,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4775,
                                    "src": "4776:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4762:22:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 4861,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4773,
                                  "src": "4787:2:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4762:27:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 4863,
                              "nodeType": "ExpressionStatement",
                              "src": "4762:27:30"
                            }
                          ]
                        },
                        "id": 4865,
                        "nodeType": "IfStatement",
                        "src": "4258:542:30",
                        "trueBody": {
                          "id": 4840,
                          "nodeType": "Block",
                          "src": "4280:202:30",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4826,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4824,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4780,
                                    "src": "4298:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "id": 4825,
                                    "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4616,
                                    "src": "4306:26:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4298:34:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 4827,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4336:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4298:39:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4839,
                              "nodeType": "IfStatement",
                              "src": "4294:178:30",
                              "trueBody": {
                                "id": 4838,
                                "nodeType": "Block",
                                "src": "4339:133:30",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 4836,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 4829,
                                          "name": "_owners",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2383,
                                          "src": "4417:7:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 4831,
                                        "indexExpression": {
                                          "id": 4830,
                                          "name": "tokenId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4775,
                                          "src": "4425:7:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4417:16:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 4834,
                                            "name": "ownerAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4793,
                                            "src": "4444:12:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 4833,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "4436:7:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 4832,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "4436:7:30",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 4835,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4436:21:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4417:40:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4837,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4417:40:30"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 4867,
                              "name": "ownerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4793,
                              "src": "4823:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4868,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4773,
                              "src": "4837:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4869,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4775,
                              "src": "4841:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4866,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7527,
                            "src": "4814:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 4870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4814:35:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4871,
                        "nodeType": "EmitStatement",
                        "src": "4809:40:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4771,
                    "nodeType": "StructuredDocumentation",
                    "src": "3833:23:30",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "095ea7b3",
                  "id": 4873,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4777,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3922:8:30"
                  },
                  "parameters": {
                    "id": 4776,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4773,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4873,
                        "src": "3878:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4772,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3878:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4775,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4873,
                        "src": "3890:15:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4774,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3890:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3877:29:30"
                  },
                  "returnParameters": {
                    "id": 4778,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3931:0:30"
                  },
                  "scope": 6851,
                  "src": "3861:995:30",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13651
                  ],
                  "body": {
                    "id": 4921,
                    "nodeType": "Block",
                    "src": "4975:292:30",
                    "statements": [
                      {
                        "assignments": [
                          4883
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4883,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 4921,
                            "src": "4985:13:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4882,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4985:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4887,
                        "initialValue": {
                          "baseExpression": {
                            "id": 4884,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2383,
                            "src": "5001:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 4886,
                          "indexExpression": {
                            "id": 4885,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4876,
                            "src": "5009:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5001:16:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4985:32:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 4900,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4893,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4883,
                                        "src": "5051:5:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 4892,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5043:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 4891,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5043:7:30",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4894,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5043:14:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 4890,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5035:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4889,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5035:7:30",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4895,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5035:23:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 4898,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5070:1:30",
                                    "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": 4897,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5062:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4896,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5062:7:30",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4899,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5062:10:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5035:37:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6578697374696e67204e4654",
                              "id": 4901,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5074:29:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d5290294c0b7ad6913fae1832076fb2552b80ffccbd7db3c426d932ecf724f10",
                                "typeString": "literal_string \"Inventory: non-existing NFT\""
                              },
                              "value": "Inventory: non-existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d5290294c0b7ad6913fae1832076fb2552b80ffccbd7db3c426d932ecf724f10",
                                "typeString": "literal_string \"Inventory: non-existing NFT\""
                              }
                            ],
                            "id": 4888,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5027:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5027:77:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4903,
                        "nodeType": "ExpressionStatement",
                        "src": "5027:77:30"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4906,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4904,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4883,
                              "src": "5118:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 4905,
                              "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4616,
                              "src": "5126:26:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5118:34:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4907,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5156:1:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5118:39:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4919,
                          "nodeType": "Block",
                          "src": "5219:42:30",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 4916,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5248:1:30",
                                    "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": 4915,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5240:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4914,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5240:7:30",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4917,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5240:10:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "functionReturnParameters": 4881,
                              "id": 4918,
                              "nodeType": "Return",
                              "src": "5233:17:30"
                            }
                          ]
                        },
                        "id": 4920,
                        "nodeType": "IfStatement",
                        "src": "5114:147:30",
                        "trueBody": {
                          "id": 4913,
                          "nodeType": "Block",
                          "src": "5159:54:30",
                          "statements": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 4909,
                                  "name": "_nftApprovals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4628,
                                  "src": "5180:13:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 4911,
                                "indexExpression": {
                                  "id": 4910,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4876,
                                  "src": "5194:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5180:22:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "functionReturnParameters": 4881,
                              "id": 4912,
                              "nodeType": "Return",
                              "src": "5173:29:30"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4874,
                    "nodeType": "StructuredDocumentation",
                    "src": "4862:23:30",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "081812fc",
                  "id": 4922,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getApproved",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4878,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4948:8:30"
                  },
                  "parameters": {
                    "id": 4877,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4876,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4922,
                        "src": "4911:15:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4875,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4911:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4910:17:30"
                  },
                  "returnParameters": {
                    "id": 4881,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4880,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4922,
                        "src": "4966:7:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4879,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4966:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4965:9:30"
                  },
                  "scope": 6851,
                  "src": "4890:377:30",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7538
                  ],
                  "body": {
                    "id": 4941,
                    "nodeType": "Block",
                    "src": "5431:151:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4934,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4925,
                              "src": "5468:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4935,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4927,
                              "src": "5486:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4936,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4929,
                              "src": "5502:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 4937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5521:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 4938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5560:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4933,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5440,
                            "src": "5441:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 4939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5441:134:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4940,
                        "nodeType": "ExpressionStatement",
                        "src": "5441:134:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4923,
                    "nodeType": "StructuredDocumentation",
                    "src": "5273:36:30",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "23b872dd",
                  "id": 4942,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4931,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5422:8:30"
                  },
                  "parameters": {
                    "id": 4930,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4925,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4942,
                        "src": "5345:12:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4924,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5345:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4927,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4942,
                        "src": "5367:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4926,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5367:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4929,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4942,
                        "src": "5387:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4928,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5387:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5335:71:30"
                  },
                  "returnParameters": {
                    "id": 4932,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5431:0:30"
                  },
                  "scope": 6851,
                  "src": "5314:268:30",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7549
                  ],
                  "body": {
                    "id": 4961,
                    "nodeType": "Block",
                    "src": "5750:150:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4954,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4945,
                              "src": "5787:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4955,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4947,
                              "src": "5805:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4956,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4949,
                              "src": "5821:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 4957,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5840:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "74727565",
                              "id": 4958,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5879:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4953,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5440,
                            "src": "5760:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 4959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5760:133:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4960,
                        "nodeType": "ExpressionStatement",
                        "src": "5760:133:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4943,
                    "nodeType": "StructuredDocumentation",
                    "src": "5588:36:30",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "42842e0e",
                  "id": 4962,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4951,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5741:8:30"
                  },
                  "parameters": {
                    "id": 4950,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4945,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4962,
                        "src": "5664:12:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4944,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5664:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4947,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4962,
                        "src": "5686:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4946,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5686:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4949,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4962,
                        "src": "5706:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4948,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5706:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5654:71:30"
                  },
                  "returnParameters": {
                    "id": 4952,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5750:0:30"
                  },
                  "scope": 6851,
                  "src": "5629:271:30",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7562
                  ],
                  "body": {
                    "id": 4983,
                    "nodeType": "Block",
                    "src": "6095:152:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4976,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4965,
                              "src": "6132:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4977,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4967,
                              "src": "6150:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4978,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4969,
                              "src": "6166:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4979,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4971,
                              "src": "6185:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 4980,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6226:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "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"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4975,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5440,
                            "src": "6105:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 4981,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6105:135:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4982,
                        "nodeType": "ExpressionStatement",
                        "src": "6105:135:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4963,
                    "nodeType": "StructuredDocumentation",
                    "src": "5906:36:30",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "b88d4fde",
                  "id": 4984,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4973,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6086:8:30"
                  },
                  "parameters": {
                    "id": 4972,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4965,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4984,
                        "src": "5982:12:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4964,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5982:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4967,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4984,
                        "src": "6004:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4966,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6004:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4969,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4984,
                        "src": "6024:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4968,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6024:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4971,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4984,
                        "src": "6047:17:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4970,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6047:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5972:98:30"
                  },
                  "returnParameters": {
                    "id": 4974,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6095:0:30"
                  },
                  "scope": 6851,
                  "src": "5947:300:30",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7574
                  ],
                  "body": {
                    "id": 5167,
                    "nodeType": "Block",
                    "src": "6426:1557:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5002,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4997,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4989,
                                "src": "6444:2:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 5000,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6458:1:30",
                                    "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": 4999,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6450:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4998,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6450:7:30",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5001,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6450:10:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6444:16:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e7366657220746f207a65726f",
                              "id": 5003,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6462:29:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              },
                              "value": "Inventory: transfer to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              }
                            ],
                            "id": 4996,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6436:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6436:56:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5005,
                        "nodeType": "ExpressionStatement",
                        "src": "6436:56:30"
                      },
                      {
                        "assignments": [
                          5007
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5007,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 5167,
                            "src": "6502:14:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5006,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6502:7:30",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5010,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5008,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "6519:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 5009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6519:12:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6502:29:30"
                      },
                      {
                        "assignments": [
                          5012
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5012,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 5167,
                            "src": "6541:15:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 5011,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "6541:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5017,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5014,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4987,
                              "src": "6573:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5015,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5007,
                              "src": "6579:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5013,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2815,
                            "src": "6559:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 5016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6559:27:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6541:45:30"
                      },
                      {
                        "assignments": [
                          5019
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5019,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 5167,
                            "src": "6597:14:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5018,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6597:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5022,
                        "initialValue": {
                          "expression": {
                            "id": 5020,
                            "name": "nftIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4992,
                            "src": "6614:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 5021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "6614:13:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6597:30:30"
                      },
                      {
                        "assignments": [
                          5027
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5027,
                            "mutability": "mutable",
                            "name": "values",
                            "nodeType": "VariableDeclaration",
                            "scope": 5167,
                            "src": "6637:23:30",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 5025,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6637:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5026,
                              "nodeType": "ArrayTypeName",
                              "src": "6637:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5033,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5031,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5019,
                              "src": "6677:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5030,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "6663:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 5028,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6667:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5029,
                              "nodeType": "ArrayTypeName",
                              "src": "6667:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 5032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6663:21:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6637:47:30"
                      },
                      {
                        "assignments": [
                          5035
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5035,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 5167,
                            "src": "6695:22:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5034,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6695:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5036,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6695:22:30"
                      },
                      {
                        "assignments": [
                          5038
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5038,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 5167,
                            "src": "6727:25:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5037,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6727:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5039,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6727:25:30"
                      },
                      {
                        "body": {
                          "id": 5121,
                          "nodeType": "Block",
                          "src": "6796:778:30",
                          "statements": [
                            {
                              "assignments": [
                                5050
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5050,
                                  "mutability": "mutable",
                                  "name": "nftId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5121,
                                  "src": "6810:13:30",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5049,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6810:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5054,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 5051,
                                  "name": "nftIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4992,
                                  "src": "6826:6:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 5053,
                                "indexExpression": {
                                  "id": 5052,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5041,
                                  "src": "6833:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6826:9:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6810:25:30"
                            },
                            {
                              "expression": {
                                "id": 5059,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 5055,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5027,
                                    "src": "6849:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 5057,
                                  "indexExpression": {
                                    "id": 5056,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5041,
                                    "src": "6856:1:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6849:9:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 5058,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6861:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "6849:13:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5060,
                              "nodeType": "ExpressionStatement",
                              "src": "6849:13:30"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5062,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4987,
                                    "src": "6889:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5063,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4989,
                                    "src": "6895:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5064,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5050,
                                    "src": "6899:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 5065,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6906:1:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  {
                                    "id": 5066,
                                    "name": "operatable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5012,
                                    "src": "6909:10:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "74727565",
                                    "id": 5067,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6921:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "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"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 5061,
                                  "name": "_transferNFT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6717,
                                  "src": "6876:12:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,bool,bool)"
                                  }
                                },
                                "id": 5068,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6876:50:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5069,
                              "nodeType": "ExpressionStatement",
                              "src": "6876:50:30"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 5071,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4987,
                                    "src": "6954:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5072,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4989,
                                    "src": "6960:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5073,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5050,
                                    "src": "6964:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5070,
                                  "name": "Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7519,
                                  "src": "6945:8:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 5074,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6945:25:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5075,
                              "nodeType": "EmitStatement",
                              "src": "6940:30:30"
                            },
                            {
                              "assignments": [
                                5077
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5077,
                                  "mutability": "mutable",
                                  "name": "nextCollectionId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5121,
                                  "src": "6984:24:30",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5076,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6984:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5082,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 5080,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2354,
                                    "src": "7042:21:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5078,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5050,
                                    "src": "7011:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5079,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getNonFungibleCollection",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3351,
                                  "src": "7011:30:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 5081,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7011:53:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6984:80:30"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5085,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 5083,
                                  "name": "nfCollectionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5035,
                                  "src": "7082:14:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 5084,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7100:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7082:19:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 5119,
                                "nodeType": "Block",
                                "src": "7214:350:30",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 5097,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 5095,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5077,
                                        "src": "7236:16:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "id": 5096,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5035,
                                        "src": "7256:14:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7236:34:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 5117,
                                      "nodeType": "Block",
                                      "src": "7490:60:30",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 5115,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": true,
                                            "src": "7512:19:30",
                                            "subExpression": {
                                              "id": 5114,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5038,
                                              "src": "7514:17:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 5116,
                                          "nodeType": "ExpressionStatement",
                                          "src": "7512:19:30"
                                        }
                                      ]
                                    },
                                    "id": 5118,
                                    "nodeType": "IfStatement",
                                    "src": "7232:318:30",
                                    "trueBody": {
                                      "id": 5113,
                                      "nodeType": "Block",
                                      "src": "7272:212:30",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 5099,
                                                "name": "from",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4987,
                                                "src": "7323:4:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 5100,
                                                "name": "to",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4989,
                                                "src": "7329:2:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 5101,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5035,
                                                "src": "7333:14:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 5102,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5038,
                                                "src": "7349:17:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 5098,
                                              "name": "_transferNFTUpdateCollection",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6777,
                                              "src": "7294:28:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256,uint256)"
                                              }
                                            },
                                            "id": 5103,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7294:73:30",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 5104,
                                          "nodeType": "ExpressionStatement",
                                          "src": "7294:73:30"
                                        },
                                        {
                                          "expression": {
                                            "id": 5107,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 5105,
                                              "name": "nfCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5035,
                                              "src": "7389:14:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 5106,
                                              "name": "nextCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5077,
                                              "src": "7406:16:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "7389:33:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 5108,
                                          "nodeType": "ExpressionStatement",
                                          "src": "7389:33:30"
                                        },
                                        {
                                          "expression": {
                                            "id": 5111,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 5109,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5038,
                                              "src": "7444:17:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "31",
                                              "id": 5110,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "7464:1:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "7444:21:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 5112,
                                          "nodeType": "ExpressionStatement",
                                          "src": "7444:21:30"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 5120,
                              "nodeType": "IfStatement",
                              "src": "7078:486:30",
                              "trueBody": {
                                "id": 5094,
                                "nodeType": "Block",
                                "src": "7103:105:30",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 5088,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 5086,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5035,
                                        "src": "7121:14:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 5087,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5077,
                                        "src": "7138:16:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7121:33:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 5089,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7121:33:30"
                                  },
                                  {
                                    "expression": {
                                      "id": 5092,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 5090,
                                        "name": "nfCollectionCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5038,
                                        "src": "7172:17:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "hexValue": "31",
                                        "id": 5091,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7192:1:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "7172:21:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 5093,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7172:21:30"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5043,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5041,
                            "src": "6778:1:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5044,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5019,
                            "src": "6783:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6778:11:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5122,
                        "initializationExpression": {
                          "assignments": [
                            5041
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5041,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 5122,
                              "src": "6767:9:30",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5040,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6767:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 5042,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6767:9:30"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 5047,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "6791:3:30",
                            "subExpression": {
                              "id": 5046,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5041,
                              "src": "6793:1:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5048,
                          "nodeType": "ExpressionStatement",
                          "src": "6791:3:30"
                        },
                        "nodeType": "ForStatement",
                        "src": "6762:812:30"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5123,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5035,
                            "src": "7588:14:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 5124,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7606:1:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7588:19:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5140,
                        "nodeType": "IfStatement",
                        "src": "7584:181:30",
                        "trueBody": {
                          "id": 5139,
                          "nodeType": "Block",
                          "src": "7609:156:30",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5127,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4987,
                                    "src": "7652:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5128,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4989,
                                    "src": "7658:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5129,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5035,
                                    "src": "7662:14:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 5130,
                                    "name": "nfCollectionCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5038,
                                    "src": "7678:17:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5126,
                                  "name": "_transferNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6777,
                                  "src": "7623:28:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256)"
                                  }
                                },
                                "id": 5131,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7623:73:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5132,
                              "nodeType": "ExpressionStatement",
                              "src": "7623:73:30"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5134,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4987,
                                    "src": "7737:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5135,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4989,
                                    "src": "7743:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5136,
                                    "name": "length",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5019,
                                    "src": "7747:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5133,
                                  "name": "_transferNFTUpdateBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6744,
                                  "src": "7710:26:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 5137,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7710:44:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5138,
                              "nodeType": "ExpressionStatement",
                              "src": "7710:44:30"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5142,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "7794:10:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7794:12:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5144,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4987,
                              "src": "7808:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5145,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4989,
                              "src": "7814:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5146,
                              "name": "nftIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4992,
                              "src": "7818:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 5147,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5027,
                              "src": "7826:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 5141,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3444,
                            "src": "7780:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 5148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7780:53:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5149,
                        "nodeType": "EmitStatement",
                        "src": "7775:58:30"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 5150,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4989,
                                "src": "7847:2:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 5151,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isContract",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1284,
                              "src": "7847:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 5152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7847:15:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 5154,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4989,
                                "src": "7890:2:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 5153,
                              "name": "_isERC1155TokenReceiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6818,
                              "src": "7866:23:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 5155,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7866:27:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7847:46:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5166,
                        "nodeType": "IfStatement",
                        "src": "7843:134:30",
                        "trueBody": {
                          "id": 5165,
                          "nodeType": "Block",
                          "src": "7895:82:30",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5158,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4987,
                                    "src": "7937:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5159,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4989,
                                    "src": "7943:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5160,
                                    "name": "nftIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4992,
                                    "src": "7947:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 5161,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5027,
                                    "src": "7955:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "hexValue": "",
                                    "id": 5162,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7963:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    }
                                  ],
                                  "id": 5157,
                                  "name": "_callOnERC1155BatchReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2881,
                                  "src": "7909:27:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                                  }
                                },
                                "id": 5163,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7909:57:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5164,
                              "nodeType": "ExpressionStatement",
                              "src": "7909:57:30"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4985,
                    "nodeType": "StructuredDocumentation",
                    "src": "6253:36:30",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "f3993d11",
                  "id": 5168,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4994,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6417:8:30"
                  },
                  "parameters": {
                    "id": 4993,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4987,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5168,
                        "src": "6330:12:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4986,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6330:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4989,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5168,
                        "src": "6352:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4988,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6352:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4992,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 5168,
                        "src": "6372:23:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4990,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6372:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4991,
                          "nodeType": "ArrayTypeName",
                          "src": "6372:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6320:81:30"
                  },
                  "returnParameters": {
                    "id": 4995,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6426:0:30"
                  },
                  "scope": 6851,
                  "src": "6294:1689:30",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3615,
                    7589
                  ],
                  "body": {
                    "id": 5267,
                    "nodeType": "Block",
                    "src": "8368:681:30",
                    "statements": [
                      {
                        "assignments": [
                          5186
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5186,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 5267,
                            "src": "8378:14:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5185,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8378:7:30",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5189,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5187,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "8395:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 5188,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8395:12:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8378:29:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5196,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5191,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5173,
                                "src": "8425:2:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 5194,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8439:1:30",
                                    "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": 5193,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8431:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5192,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8431:7:30",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8431:10:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "8425:16:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e7366657220746f207a65726f",
                              "id": 5197,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8443:29:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              },
                              "value": "Inventory: transfer to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              }
                            ],
                            "id": 5190,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8417:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5198,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8417:56:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5199,
                        "nodeType": "ExpressionStatement",
                        "src": "8417:56:30"
                      },
                      {
                        "assignments": [
                          5201
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5201,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 5267,
                            "src": "8483:15:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 5200,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "8483:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5206,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5203,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5171,
                              "src": "8515:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5204,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5186,
                              "src": "8521:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5202,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2815,
                            "src": "8501:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 5205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8501:27:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8483:45:30"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5207,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5175,
                              "src": "8543:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5208,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3310,
                            "src": "8543:18:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (bool)"
                            }
                          },
                          "id": 5209,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8543:20:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "arguments": [
                              {
                                "id": 5221,
                                "name": "_collectionMaskLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2354,
                                "src": "8672:21:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 5219,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5175,
                                "src": "8650:2:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5220,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isNonFungibleToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3334,
                              "src": "8650:21:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (bool)"
                              }
                            },
                            "id": 5222,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8650:44:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 5243,
                            "nodeType": "Block",
                            "src": "8820:60:30",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                      "id": 5240,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8841:27:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      },
                                      "value": "Inventory: not a token id"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      }
                                    ],
                                    "id": 5239,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "8834:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 5241,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8834:35:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 5242,
                                "nodeType": "ExpressionStatement",
                                "src": "8834:35:30"
                              }
                            ]
                          },
                          "id": 5244,
                          "nodeType": "IfStatement",
                          "src": "8646:234:30",
                          "trueBody": {
                            "id": 5238,
                            "nodeType": "Block",
                            "src": "8696:118:30",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 5224,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5171,
                                      "src": "8723:4:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 5225,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5173,
                                      "src": "8729:2:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 5226,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5175,
                                      "src": "8733:2:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 5227,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5177,
                                      "src": "8737:5:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 5228,
                                      "name": "operatable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5201,
                                      "src": "8744:10:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 5229,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8756:5:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 5223,
                                    "name": "_transferNFT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6717,
                                    "src": "8710:12:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                                      "typeString": "function (address,address,uint256,uint256,bool,bool)"
                                    }
                                  },
                                  "id": 5230,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8710:52:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 5231,
                                "nodeType": "ExpressionStatement",
                                "src": "8710:52:30"
                              },
                              {
                                "eventCall": {
                                  "arguments": [
                                    {
                                      "id": 5233,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5171,
                                      "src": "8790:4:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 5234,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5173,
                                      "src": "8796:2:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 5235,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5175,
                                      "src": "8800:2:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 5232,
                                    "name": "Transfer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7519,
                                    "src": "8781:8:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                      "typeString": "function (address,address,uint256)"
                                    }
                                  },
                                  "id": 5236,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8781:22:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 5237,
                                "nodeType": "EmitStatement",
                                "src": "8776:27:30"
                              }
                            ]
                          }
                        },
                        "id": 5245,
                        "nodeType": "IfStatement",
                        "src": "8539:341:30",
                        "trueBody": {
                          "id": 5218,
                          "nodeType": "Block",
                          "src": "8565:75:30",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5211,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5171,
                                    "src": "8597:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5212,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5173,
                                    "src": "8603:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5213,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5175,
                                    "src": "8607:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 5214,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5177,
                                    "src": "8611:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 5215,
                                    "name": "operatable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5201,
                                    "src": "8618:10:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 5210,
                                  "name": "_transferFungible",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6622,
                                  "src": "8579:17:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,bool)"
                                  }
                                },
                                "id": 5216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8579:50:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5217,
                              "nodeType": "ExpressionStatement",
                              "src": "8579:50:30"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 5247,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5186,
                              "src": "8910:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5248,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5171,
                              "src": "8918:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5249,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5173,
                              "src": "8924:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5250,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5175,
                              "src": "8928:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5251,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5177,
                              "src": "8932:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5246,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3430,
                            "src": "8895:14:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 5252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8895:43:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5253,
                        "nodeType": "EmitStatement",
                        "src": "8890:48:30"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5254,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5173,
                              "src": "8952:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 5255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1284,
                            "src": "8952:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 5256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8952:15:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5266,
                        "nodeType": "IfStatement",
                        "src": "8948:95:30",
                        "trueBody": {
                          "id": 5265,
                          "nodeType": "Block",
                          "src": "8969:74:30",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5258,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5171,
                                    "src": "9006:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5259,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5173,
                                    "src": "9012:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5260,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5175,
                                    "src": "9016:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 5261,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5177,
                                    "src": "9020:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 5262,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5179,
                                    "src": "9027:4:30",
                                    "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_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 5257,
                                  "name": "_callOnERC1155Received",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2847,
                                  "src": "8983:22:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,bytes memory)"
                                  }
                                },
                                "id": 5263,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8983:49:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5264,
                              "nodeType": "ExpressionStatement",
                              "src": "8983:49:30"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5169,
                    "nodeType": "StructuredDocumentation",
                    "src": "8118:36:30",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "f242432a",
                  "id": 5268,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5183,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 5181,
                        "name": "IERC1155Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3633,
                        "src": "8327:17:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155Inventory_$3633",
                          "typeString": "contract IERC1155Inventory"
                        }
                      },
                      {
                        "id": 5182,
                        "name": "IERC1155721Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7642,
                        "src": "8346:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155721Inventory_$7642",
                          "typeString": "contract IERC1155721Inventory"
                        }
                      }
                    ],
                    "src": "8318:49:30"
                  },
                  "parameters": {
                    "id": 5180,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5171,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5268,
                        "src": "8194:12:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5170,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8194:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5173,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5268,
                        "src": "8216:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5172,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8216:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5175,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 5268,
                        "src": "8236:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5174,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8236:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5177,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 5268,
                        "src": "8256:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5176,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8256:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5179,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5268,
                        "src": "8279:17:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5178,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8279:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8184:118:30"
                  },
                  "returnParameters": {
                    "id": 5184,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8368:0:30"
                  },
                  "scope": 6851,
                  "src": "8159:890:30",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3632,
                    7606
                  ],
                  "body": {
                    "id": 5295,
                    "nodeType": "Block",
                    "src": "9330:68:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5288,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5271,
                              "src": "9363:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5289,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5273,
                              "src": "9369:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5290,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5276,
                              "src": "9373:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 5291,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5279,
                              "src": "9378:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 5292,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5281,
                              "src": "9386:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5287,
                            "name": "_safeBatchTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5654,
                            "src": "9340:22:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 5293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9340:51:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5294,
                        "nodeType": "ExpressionStatement",
                        "src": "9340:51:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5269,
                    "nodeType": "StructuredDocumentation",
                    "src": "9055:36:30",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 5296,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5285,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 5283,
                        "name": "IERC1155Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3633,
                        "src": "9289:17:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155Inventory_$3633",
                          "typeString": "contract IERC1155Inventory"
                        }
                      },
                      {
                        "id": 5284,
                        "name": "IERC1155721Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7642,
                        "src": "9308:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155721Inventory_$7642",
                          "typeString": "contract IERC1155721Inventory"
                        }
                      }
                    ],
                    "src": "9280:49:30"
                  },
                  "parameters": {
                    "id": 5282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5271,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5296,
                        "src": "9136:12:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5270,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9136:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5273,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5296,
                        "src": "9158:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5272,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9158:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5276,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 5296,
                        "src": "9178:20:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5274,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9178:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5275,
                          "nodeType": "ArrayTypeName",
                          "src": "9178:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5279,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 5296,
                        "src": "9208:23:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5277,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9208:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5278,
                          "nodeType": "ArrayTypeName",
                          "src": "9208:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5281,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5296,
                        "src": "9241:17:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5280,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9241:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9126:138:30"
                  },
                  "returnParameters": {
                    "id": 5286,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9330:0:30"
                  },
                  "scope": 6851,
                  "src": "9096:302:30",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2602,
                    7617
                  ],
                  "body": {
                    "id": 5314,
                    "nodeType": "Block",
                    "src": "9702:60:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5310,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5299,
                              "src": "9736:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5311,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5301,
                              "src": "9746:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "id": 5307,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "9712:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721Inventory_$6851",
                                "typeString": "contract super ERC1155721Inventory"
                              }
                            },
                            "id": 5309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setApprovalForAll",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2602,
                            "src": "9712:23:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,bool)"
                            }
                          },
                          "id": 5312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9712:43:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5313,
                        "nodeType": "ExpressionStatement",
                        "src": "9712:43:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5297,
                    "nodeType": "StructuredDocumentation",
                    "src": "9533:36:30",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "a22cb465",
                  "id": 5315,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5305,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 5303,
                        "name": "IERC1155721Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7642,
                        "src": "9658:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155721Inventory_$7642",
                          "typeString": "contract IERC1155721Inventory"
                        }
                      },
                      {
                        "id": 5304,
                        "name": "ERC1155InventoryBase",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2882,
                        "src": "9680:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155InventoryBase_$2882",
                          "typeString": "contract ERC1155InventoryBase"
                        }
                      }
                    ],
                    "src": "9649:52:30"
                  },
                  "parameters": {
                    "id": 5302,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5299,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5315,
                        "src": "9601:16:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5298,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9601:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5301,
                        "mutability": "mutable",
                        "name": "approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 5315,
                        "src": "9619:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5300,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9619:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9600:33:30"
                  },
                  "returnParameters": {
                    "id": 5306,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9702:0:30"
                  },
                  "scope": 6851,
                  "src": "9574:188:30",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2620,
                    7630
                  ],
                  "body": {
                    "id": 5334,
                    "nodeType": "Block",
                    "src": "10005:68:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5330,
                              "name": "tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5318,
                              "src": "10045:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5331,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5320,
                              "src": "10057:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 5328,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "10022:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721Inventory_$6851",
                                "typeString": "contract super ERC1155721Inventory"
                              }
                            },
                            "id": 5329,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isApprovedForAll",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2620,
                            "src": "10022:22:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 5332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10022:44:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 5327,
                        "id": 5333,
                        "nodeType": "Return",
                        "src": "10015:51:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5316,
                    "nodeType": "StructuredDocumentation",
                    "src": "9768:36:30",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 5335,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5324,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 5322,
                        "name": "IERC1155721Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7642,
                        "src": "9934:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155721Inventory_$7642",
                          "typeString": "contract IERC1155721Inventory"
                        }
                      },
                      {
                        "id": 5323,
                        "name": "ERC1155InventoryBase",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2882,
                        "src": "9956:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155InventoryBase_$2882",
                          "typeString": "contract ERC1155InventoryBase"
                        }
                      }
                    ],
                    "src": "9925:52:30"
                  },
                  "parameters": {
                    "id": 5321,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5318,
                        "mutability": "mutable",
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 5335,
                        "src": "9835:18:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5317,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9835:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5320,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5335,
                        "src": "9855:16:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5319,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9855:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9834:38:30"
                  },
                  "returnParameters": {
                    "id": 5327,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5326,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5335,
                        "src": "9995:4:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5325,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9995:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9994:6:30"
                  },
                  "scope": 6851,
                  "src": "9809:264:30",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2691,
                    7641
                  ],
                  "body": {
                    "id": 5351,
                    "nodeType": "Block",
                    "src": "10374:44:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5348,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5338,
                              "src": "10405:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 5346,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "10391:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721Inventory_$6851",
                                "typeString": "contract super ERC1155721Inventory"
                              }
                            },
                            "id": 5347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2691,
                            "src": "10391:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 5349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10391:20:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 5345,
                        "id": 5350,
                        "nodeType": "Return",
                        "src": "10384:27:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5336,
                    "nodeType": "StructuredDocumentation",
                    "src": "10210:36:30",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "6352211e",
                  "id": 5352,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5342,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 5340,
                        "name": "IERC1155721Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7642,
                        "src": "10312:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155721Inventory_$7642",
                          "typeString": "contract IERC1155721Inventory"
                        }
                      },
                      {
                        "id": 5341,
                        "name": "ERC1155InventoryBase",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2882,
                        "src": "10334:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155InventoryBase_$2882",
                          "typeString": "contract ERC1155InventoryBase"
                        }
                      }
                    ],
                    "src": "10303:52:30"
                  },
                  "parameters": {
                    "id": 5339,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5338,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5352,
                        "src": "10268:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5337,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10268:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10267:15:30"
                  },
                  "returnParameters": {
                    "id": 5345,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5344,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5352,
                        "src": "10365:7:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5343,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10365:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10364:9:30"
                  },
                  "scope": 6851,
                  "src": "10251:167:30",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5439,
                    "nodeType": "Block",
                    "src": "10996:588:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5367,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5357,
                                "src": "11014:2:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 5370,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11028:1:30",
                                    "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": 5369,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11020:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5368,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11020:7:30",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5371,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11020:10:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "11014:16:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e7366657220746f207a65726f",
                              "id": 5373,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11032:29:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              },
                              "value": "Inventory: transfer to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              }
                            ],
                            "id": 5366,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11006:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11006:56:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5375,
                        "nodeType": "ExpressionStatement",
                        "src": "11006:56:30"
                      },
                      {
                        "assignments": [
                          5377
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5377,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 5439,
                            "src": "11072:14:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5376,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "11072:7:30",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5380,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5378,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "11089:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 5379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11089:12:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11072:29:30"
                      },
                      {
                        "assignments": [
                          5382
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5382,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 5439,
                            "src": "11111:15:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 5381,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "11111:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5387,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5384,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5355,
                              "src": "11143:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5385,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5377,
                              "src": "11149:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5383,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2815,
                            "src": "11129:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 5386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11129:27:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11111:45:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5389,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5355,
                              "src": "11180:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5390,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5357,
                              "src": "11186:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5391,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5359,
                              "src": "11190:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 5392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11197:1:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            {
                              "id": 5393,
                              "name": "operatable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5382,
                              "src": "11200:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 5394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11212:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "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"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 5388,
                            "name": "_transferNFT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6717,
                            "src": "11167:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,bool,bool)"
                            }
                          },
                          "id": 5395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11167:51:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5396,
                        "nodeType": "ExpressionStatement",
                        "src": "11167:51:30"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 5398,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5355,
                              "src": "11243:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5399,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5357,
                              "src": "11249:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5400,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5359,
                              "src": "11253:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5397,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7519,
                            "src": "11234:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 5401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11234:25:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5402,
                        "nodeType": "EmitStatement",
                        "src": "11229:30:30"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 5404,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5377,
                              "src": "11289:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5405,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5355,
                              "src": "11297:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5406,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5357,
                              "src": "11303:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5407,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5359,
                              "src": "11307:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 5408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11314:1:30",
                              "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_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 5403,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3430,
                            "src": "11274:14:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 5409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11274:42:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5410,
                        "nodeType": "EmitStatement",
                        "src": "11269:47:30"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5411,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5357,
                              "src": "11330:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 5412,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1284,
                            "src": "11330:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 5413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11330:15:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5438,
                        "nodeType": "IfStatement",
                        "src": "11326:252:30",
                        "trueBody": {
                          "id": 5437,
                          "nodeType": "Block",
                          "src": "11347:231:30",
                          "statements": [
                            {
                              "condition": {
                                "arguments": [
                                  {
                                    "id": 5415,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5357,
                                    "src": "11389:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5414,
                                  "name": "_isERC1155TokenReceiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6818,
                                  "src": "11365:23:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address) view returns (bool)"
                                  }
                                },
                                "id": 5416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11365:27:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "id": 5426,
                                  "name": "safe",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5363,
                                  "src": "11485:4:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 5435,
                                "nodeType": "IfStatement",
                                "src": "11481:87:30",
                                "trueBody": {
                                  "id": 5434,
                                  "nodeType": "Block",
                                  "src": "11491:77:30",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 5428,
                                            "name": "from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5355,
                                            "src": "11531:4:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 5429,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5357,
                                            "src": "11537:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 5430,
                                            "name": "nftId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5359,
                                            "src": "11541:5:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 5431,
                                            "name": "data",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5361,
                                            "src": "11548:4:30",
                                            "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": 5427,
                                          "name": "_callOnERC721Received",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6850,
                                          "src": "11509:21:30",
                                          "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": 5432,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11509:44:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 5433,
                                      "nodeType": "ExpressionStatement",
                                      "src": "11509:44:30"
                                    }
                                  ]
                                }
                              },
                              "id": 5436,
                              "nodeType": "IfStatement",
                              "src": "11361:207:30",
                              "trueBody": {
                                "id": 5425,
                                "nodeType": "Block",
                                "src": "11394:81:30",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 5418,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5355,
                                          "src": "11435:4:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 5419,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5357,
                                          "src": "11441:2:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 5420,
                                          "name": "nftId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5359,
                                          "src": "11445:5:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "31",
                                          "id": 5421,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "11452:1:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        {
                                          "id": 5422,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5361,
                                          "src": "11455:4:30",
                                          "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_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 5417,
                                        "name": "_callOnERC1155Received",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2847,
                                        "src": "11412:22:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                          "typeString": "function (address,address,uint256,uint256,bytes memory)"
                                        }
                                      },
                                      "id": 5423,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11412:48:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 5424,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11412:48:30"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5353,
                    "nodeType": "StructuredDocumentation",
                    "src": "10553:289:30",
                    "text": " Safely or unsafely transfers some token (ERC721-compatible).\n @dev For `safe` transfer, see {IERC1155721Inventory-transferFrom(address,address,uint256)}.\n @dev For un`safe` transfer, see {IERC1155721Inventory-safeTransferFrom(address,address,uint256,bytes)}."
                  },
                  "id": 5440,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5364,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5355,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5440,
                        "src": "10879:12:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5354,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10879:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5357,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5440,
                        "src": "10901:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5356,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10901:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5359,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5440,
                        "src": "10921:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5358,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10921:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5361,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5440,
                        "src": "10944:17:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5360,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10944:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5363,
                        "mutability": "mutable",
                        "name": "safe",
                        "nodeType": "VariableDeclaration",
                        "scope": 5440,
                        "src": "10971:9:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5362,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10971:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10869:117:30"
                  },
                  "returnParameters": {
                    "id": 5365,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10996:0:30"
                  },
                  "scope": 6851,
                  "src": "10847:737:30",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5653,
                    "nodeType": "Block",
                    "src": "11954:1964:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5462,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5457,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5445,
                                "src": "11972:2:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 5460,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11986:1:30",
                                    "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": 5459,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11978:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5458,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11978:7:30",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11978:10:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "11972:16:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e7366657220746f207a65726f",
                              "id": 5463,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11990:29:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              },
                              "value": "Inventory: transfer to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              }
                            ],
                            "id": 5456,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11964:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11964:56:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5465,
                        "nodeType": "ExpressionStatement",
                        "src": "11964:56:30"
                      },
                      {
                        "assignments": [
                          5467
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5467,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 5653,
                            "src": "12030:14:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5466,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12030:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5470,
                        "initialValue": {
                          "expression": {
                            "id": 5468,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5448,
                            "src": "12047:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 5469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "12047:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12030:27:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5472,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5467,
                                "src": "12075:6:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 5473,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5451,
                                  "src": "12085:6:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 5474,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "12085:13:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12075:23:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 5476,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12100:32:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              },
                              "value": "Inventory: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              }
                            ],
                            "id": 5471,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12067:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12067:66:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5478,
                        "nodeType": "ExpressionStatement",
                        "src": "12067:66:30"
                      },
                      {
                        "assignments": [
                          5480
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5480,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 5653,
                            "src": "12143:14:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5479,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12143:7:30",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5483,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5481,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "12160:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 5482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12160:12:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12143:29:30"
                      },
                      {
                        "assignments": [
                          5485
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5485,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 5653,
                            "src": "12182:15:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 5484,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "12182:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5490,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5487,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5443,
                              "src": "12214:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5488,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5480,
                              "src": "12220:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5486,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2815,
                            "src": "12200:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 5489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12200:27:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12182:45:30"
                      },
                      {
                        "assignments": [
                          5492
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5492,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 5653,
                            "src": "12238:22:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5491,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12238:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5493,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12238:22:30"
                      },
                      {
                        "assignments": [
                          5495
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5495,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 5653,
                            "src": "12270:25:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5494,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12270:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5496,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12270:25:30"
                      },
                      {
                        "assignments": [
                          5498
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5498,
                            "mutability": "mutable",
                            "name": "nftsCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 5653,
                            "src": "12305:17:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5497,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12305:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5499,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12305:17:30"
                      },
                      {
                        "body": {
                          "id": 5607,
                          "nodeType": "Block",
                          "src": "12366:1131:30",
                          "statements": [
                            {
                              "assignments": [
                                5510
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5510,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5607,
                                  "src": "12380:10:30",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5509,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12380:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5514,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 5511,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5448,
                                  "src": "12393:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 5513,
                                "indexExpression": {
                                  "id": 5512,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5501,
                                  "src": "12397:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12393:6:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12380:19:30"
                            },
                            {
                              "condition": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 5515,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5510,
                                    "src": "12417:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5516,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3310,
                                  "src": "12417:18:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (bool)"
                                  }
                                },
                                "id": 5517,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12417:20:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "arguments": [
                                    {
                                      "id": 5531,
                                      "name": "_collectionMaskLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2354,
                                      "src": "12558:21:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5529,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5510,
                                      "src": "12536:2:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 5530,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "isNonFungibleToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3334,
                                    "src": "12536:21:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (bool)"
                                    }
                                  },
                                  "id": 5532,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12536:44:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 5604,
                                  "nodeType": "Block",
                                  "src": "13419:68:30",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                            "id": 5601,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13444:27:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            },
                                            "value": "Inventory: not a token id"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            }
                                          ],
                                          "id": 5600,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "13437:6:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 5602,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13437:35:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 5603,
                                      "nodeType": "ExpressionStatement",
                                      "src": "13437:35:30"
                                    }
                                  ]
                                },
                                "id": 5605,
                                "nodeType": "IfStatement",
                                "src": "12532:955:30",
                                "trueBody": {
                                  "id": 5599,
                                  "nodeType": "Block",
                                  "src": "12582:831:30",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 5534,
                                            "name": "from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5443,
                                            "src": "12613:4:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 5535,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5445,
                                            "src": "12619:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 5536,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5510,
                                            "src": "12623:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "baseExpression": {
                                              "id": 5537,
                                              "name": "values",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5451,
                                              "src": "12627:6:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                              }
                                            },
                                            "id": 5539,
                                            "indexExpression": {
                                              "id": 5538,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5501,
                                              "src": "12634:1:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "12627:9:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 5540,
                                            "name": "operatable",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5485,
                                            "src": "12638:10:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          {
                                            "hexValue": "74727565",
                                            "id": 5541,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "12650:4:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "true"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          ],
                                          "id": 5533,
                                          "name": "_transferNFT",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6717,
                                          "src": "12600:12:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                                            "typeString": "function (address,address,uint256,uint256,bool,bool)"
                                          }
                                        },
                                        "id": 5542,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12600:55:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 5543,
                                      "nodeType": "ExpressionStatement",
                                      "src": "12600:55:30"
                                    },
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "id": 5545,
                                            "name": "from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5443,
                                            "src": "12687:4:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 5546,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5445,
                                            "src": "12693:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 5547,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5510,
                                            "src": "12697:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 5544,
                                          "name": "Transfer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7519,
                                          "src": "12678:8:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,address,uint256)"
                                          }
                                        },
                                        "id": 5548,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12678:22:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 5549,
                                      "nodeType": "EmitStatement",
                                      "src": "12673:27:30"
                                    },
                                    {
                                      "assignments": [
                                        5551
                                      ],
                                      "declarations": [
                                        {
                                          "constant": false,
                                          "id": 5551,
                                          "mutability": "mutable",
                                          "name": "nextCollectionId",
                                          "nodeType": "VariableDeclaration",
                                          "scope": 5599,
                                          "src": "12718:24:30",
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "typeName": {
                                            "id": 5550,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "12718:7:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "visibility": "internal"
                                        }
                                      ],
                                      "id": 5556,
                                      "initialValue": {
                                        "arguments": [
                                          {
                                            "id": 5554,
                                            "name": "_collectionMaskLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2354,
                                            "src": "12773:21:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 5552,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5510,
                                            "src": "12745:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 5553,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getNonFungibleCollection",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3351,
                                          "src": "12745:27:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 5555,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12745:50:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "VariableDeclarationStatement",
                                      "src": "12718:77:30"
                                    },
                                    {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 5559,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 5557,
                                          "name": "nfCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5492,
                                          "src": "12817:14:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 5558,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "12835:1:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "12817:19:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 5597,
                                        "nodeType": "Block",
                                        "src": "12961:438:30",
                                        "statements": [
                                          {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 5571,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 5569,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5551,
                                                "src": "12987:16:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "!=",
                                              "rightExpression": {
                                                "id": 5570,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5492,
                                                "src": "13007:14:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "12987:34:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 5595,
                                              "nodeType": "Block",
                                              "src": "13313:68:30",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 5593,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "++",
                                                    "prefix": true,
                                                    "src": "13339:19:30",
                                                    "subExpression": {
                                                      "id": 5592,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 5495,
                                                      "src": "13341:17:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 5594,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "13339:19:30"
                                                }
                                              ]
                                            },
                                            "id": 5596,
                                            "nodeType": "IfStatement",
                                            "src": "12983:398:30",
                                            "trueBody": {
                                              "id": 5591,
                                              "nodeType": "Block",
                                              "src": "13023:284:30",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "arguments": [
                                                      {
                                                        "id": 5573,
                                                        "name": "from",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5443,
                                                        "src": "13078:4:30",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "id": 5574,
                                                        "name": "to",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5445,
                                                        "src": "13084:2:30",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "id": 5575,
                                                        "name": "nfCollectionId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5492,
                                                        "src": "13088:14:30",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      {
                                                        "id": 5576,
                                                        "name": "nfCollectionCount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5495,
                                                        "src": "13104:17:30",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      ],
                                                      "id": 5572,
                                                      "name": "_transferNFTUpdateCollection",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 6777,
                                                      "src": "13049:28:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                        "typeString": "function (address,address,uint256,uint256)"
                                                      }
                                                    },
                                                    "id": 5577,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13049:73:30",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_tuple$__$",
                                                      "typeString": "tuple()"
                                                    }
                                                  },
                                                  "id": 5578,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "13049:73:30"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 5581,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 5579,
                                                      "name": "nfCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 5492,
                                                      "src": "13148:14:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "id": 5580,
                                                      "name": "nextCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 5551,
                                                      "src": "13165:16:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "13148:33:30",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 5582,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "13148:33:30"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 5585,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 5583,
                                                      "name": "nftsCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 5498,
                                                      "src": "13207:9:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                      "id": 5584,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 5495,
                                                      "src": "13220:17:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "13207:30:30",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 5586,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "13207:30:30"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 5589,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 5587,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 5495,
                                                      "src": "13263:17:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "hexValue": "31",
                                                      "id": 5588,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "13283:1:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "13263:21:30",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 5590,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "13263:21:30"
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      },
                                      "id": 5598,
                                      "nodeType": "IfStatement",
                                      "src": "12813:586:30",
                                      "trueBody": {
                                        "id": 5568,
                                        "nodeType": "Block",
                                        "src": "12838:117:30",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 5562,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 5560,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5492,
                                                "src": "12860:14:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "id": 5561,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5551,
                                                "src": "12877:16:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "12860:33:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 5563,
                                            "nodeType": "ExpressionStatement",
                                            "src": "12860:33:30"
                                          },
                                          {
                                            "expression": {
                                              "id": 5566,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 5564,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5495,
                                                "src": "12915:17:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "hexValue": "31",
                                                "id": 5565,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "12935:1:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "12915:21:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 5567,
                                            "nodeType": "ExpressionStatement",
                                            "src": "12915:21:30"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 5606,
                              "nodeType": "IfStatement",
                              "src": "12413:1074:30",
                              "trueBody": {
                                "id": 5528,
                                "nodeType": "Block",
                                "src": "12439:87:30",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 5519,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5443,
                                          "src": "12475:4:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 5520,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5445,
                                          "src": "12481:2:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 5521,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5510,
                                          "src": "12485:2:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "baseExpression": {
                                            "id": 5522,
                                            "name": "values",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5451,
                                            "src": "12489:6:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                              "typeString": "uint256[] memory"
                                            }
                                          },
                                          "id": 5524,
                                          "indexExpression": {
                                            "id": 5523,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5501,
                                            "src": "12496:1:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "12489:9:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 5525,
                                          "name": "operatable",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5485,
                                          "src": "12500:10:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "id": 5518,
                                        "name": "_transferFungible",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6622,
                                        "src": "12457:17:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                          "typeString": "function (address,address,uint256,uint256,bool)"
                                        }
                                      },
                                      "id": 5526,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12457:54:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 5527,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12457:54:30"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5503,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5501,
                            "src": "12348:1:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5504,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5467,
                            "src": "12353:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12348:11:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5608,
                        "initializationExpression": {
                          "assignments": [
                            5501
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5501,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 5608,
                              "src": "12337:9:30",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5500,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "12337:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 5502,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "12337:9:30"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 5507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "12361:3:30",
                            "subExpression": {
                              "id": 5506,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5501,
                              "src": "12363:1:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5508,
                          "nodeType": "ExpressionStatement",
                          "src": "12361:3:30"
                        },
                        "nodeType": "ForStatement",
                        "src": "12332:1165:30"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5609,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5492,
                            "src": "13511:14:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 5610,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13529:1:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13511:19:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5630,
                        "nodeType": "IfStatement",
                        "src": "13507:228:30",
                        "trueBody": {
                          "id": 5629,
                          "nodeType": "Block",
                          "src": "13532:203:30",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5613,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5443,
                                    "src": "13575:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5614,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5445,
                                    "src": "13581:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5615,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5492,
                                    "src": "13585:14:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 5616,
                                    "name": "nfCollectionCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5495,
                                    "src": "13601:17:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5612,
                                  "name": "_transferNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6777,
                                  "src": "13546:28:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256)"
                                  }
                                },
                                "id": 5617,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13546:73:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5618,
                              "nodeType": "ExpressionStatement",
                              "src": "13546:73:30"
                            },
                            {
                              "expression": {
                                "id": 5621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 5619,
                                  "name": "nftsCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5498,
                                  "src": "13633:9:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 5620,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5495,
                                  "src": "13646:17:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13633:30:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5622,
                              "nodeType": "ExpressionStatement",
                              "src": "13633:30:30"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5624,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5443,
                                    "src": "13704:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5625,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5445,
                                    "src": "13710:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5626,
                                    "name": "nftsCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5498,
                                    "src": "13714:9:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5623,
                                  "name": "_transferNFTUpdateBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6744,
                                  "src": "13677:26:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 5627,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13677:47:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5628,
                              "nodeType": "ExpressionStatement",
                              "src": "13677:47:30"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5632,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "13764:10:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5633,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13764:12:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5634,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5443,
                              "src": "13778:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5635,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5445,
                              "src": "13784:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5636,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5448,
                              "src": "13788:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 5637,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5451,
                              "src": "13793:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 5631,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3444,
                            "src": "13750:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 5638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13750:50:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5639,
                        "nodeType": "EmitStatement",
                        "src": "13745:55:30"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5640,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5445,
                              "src": "13814:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 5641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1284,
                            "src": "13814:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 5642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13814:15:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5652,
                        "nodeType": "IfStatement",
                        "src": "13810:102:30",
                        "trueBody": {
                          "id": 5651,
                          "nodeType": "Block",
                          "src": "13831:81:30",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5644,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5443,
                                    "src": "13873:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5645,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5445,
                                    "src": "13879:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5646,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5448,
                                    "src": "13883:3:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 5647,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5451,
                                    "src": "13888:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 5648,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5453,
                                    "src": "13896:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 5643,
                                  "name": "_callOnERC1155BatchReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2881,
                                  "src": "13845:27:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                                  }
                                },
                                "id": 5649,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13845:56:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5650,
                              "nodeType": "ExpressionStatement",
                              "src": "13845:56:30"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5441,
                    "nodeType": "StructuredDocumentation",
                    "src": "11590:180:30",
                    "text": " Safely transfers a batch of tokens (ERC1155-compatible).\n @dev See {IERC1155721Inventory-safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)}."
                  },
                  "id": 5654,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5454,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5443,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5654,
                        "src": "11816:12:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5442,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11816:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5445,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5654,
                        "src": "11838:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5444,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11838:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5448,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 5654,
                        "src": "11858:20:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5446,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "11858:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5447,
                          "nodeType": "ArrayTypeName",
                          "src": "11858:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5451,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 5654,
                        "src": "11888:23:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5449,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "11888:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5450,
                          "nodeType": "ArrayTypeName",
                          "src": "11888:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5453,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5654,
                        "src": "11921:17:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5452,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11921:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11806:138:30"
                  },
                  "returnParameters": {
                    "id": 5455,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11954:0:30"
                  },
                  "scope": 6851,
                  "src": "11775:2143:30",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5746,
                    "nodeType": "Block",
                    "src": "14309:589:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5672,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5667,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5657,
                                "src": "14327:2:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 5670,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14341:1:30",
                                    "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": 5669,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14333:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5668,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14333:7:30",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5671,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14333:10:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "14327:16:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206d696e7420746f207a65726f",
                              "id": 5673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14345:25:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              },
                              "value": "Inventory: mint to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              }
                            ],
                            "id": 5666,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14319:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14319:52:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5675,
                        "nodeType": "ExpressionStatement",
                        "src": "14319:52:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5679,
                                  "name": "_collectionMaskLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2354,
                                  "src": "14414:21:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 5677,
                                  "name": "nftId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5659,
                                  "src": "14389:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 5678,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isNonFungibleToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3334,
                                "src": "14389:24:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (bool)"
                                }
                              },
                              "id": 5680,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14389:47:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f7420616e204e4654",
                              "id": 5681,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14438:23:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6f6b3072d8f66101f2906a615e7ccee3daa7b495817e174efdc83fec1dfaad68",
                                "typeString": "literal_string \"Inventory: not an NFT\""
                              },
                              "value": "Inventory: not an NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6f6b3072d8f66101f2906a615e7ccee3daa7b495817e174efdc83fec1dfaad68",
                                "typeString": "literal_string \"Inventory: not an NFT\""
                              }
                            ],
                            "id": 5676,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14381:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5682,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14381:81:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5683,
                        "nodeType": "ExpressionStatement",
                        "src": "14381:81:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5685,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5657,
                              "src": "14482:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5686,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5659,
                              "src": "14486:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 5687,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14493:1:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 5688,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14496:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 5684,
                            "name": "_mintNFT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6558,
                            "src": "14473:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bool)"
                            }
                          },
                          "id": 5689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14473:29:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5690,
                        "nodeType": "ExpressionStatement",
                        "src": "14473:29:30"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 5694,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14535:1:30",
                                  "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": 5693,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "14527:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5692,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14527:7:30",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5695,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14527:10:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5696,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5657,
                              "src": "14539:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5697,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5659,
                              "src": "14543:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5691,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7519,
                            "src": "14518:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 5698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14518:31:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5699,
                        "nodeType": "EmitStatement",
                        "src": "14513:36:30"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5701,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "14579:10:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14579:12:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 5705,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14601:1:30",
                                  "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": 5704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "14593:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5703,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14593:7:30",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5706,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14593:10:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5707,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5657,
                              "src": "14605:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5708,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5659,
                              "src": "14609:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 5709,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14616:1:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 5700,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3430,
                            "src": "14564:14:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 5710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14564:54:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5711,
                        "nodeType": "EmitStatement",
                        "src": "14559:59:30"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5712,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5657,
                              "src": "14632:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 5713,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1284,
                            "src": "14632:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 5714,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14632:15:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5745,
                        "nodeType": "IfStatement",
                        "src": "14628:264:30",
                        "trueBody": {
                          "id": 5744,
                          "nodeType": "Block",
                          "src": "14649:243:30",
                          "statements": [
                            {
                              "condition": {
                                "arguments": [
                                  {
                                    "id": 5716,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5657,
                                    "src": "14691:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5715,
                                  "name": "_isERC1155TokenReceiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6818,
                                  "src": "14667:23:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address) view returns (bool)"
                                  }
                                },
                                "id": 5717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14667:27:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "id": 5730,
                                  "name": "safe",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5663,
                                  "src": "14793:4:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 5742,
                                "nodeType": "IfStatement",
                                "src": "14789:93:30",
                                "trueBody": {
                                  "id": 5741,
                                  "nodeType": "Block",
                                  "src": "14799:83:30",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 5734,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "14847:1:30",
                                                "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": 5733,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "14839:7:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 5732,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "14839:7:30",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 5735,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "14839:10:30",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          {
                                            "id": 5736,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5657,
                                            "src": "14851:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 5737,
                                            "name": "nftId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5659,
                                            "src": "14855:5:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 5738,
                                            "name": "data",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5661,
                                            "src": "14862:4:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 5731,
                                          "name": "_callOnERC721Received",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6850,
                                          "src": "14817:21:30",
                                          "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": 5739,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "14817:50:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 5740,
                                      "nodeType": "ExpressionStatement",
                                      "src": "14817:50:30"
                                    }
                                  ]
                                }
                              },
                              "id": 5743,
                              "nodeType": "IfStatement",
                              "src": "14663:219:30",
                              "trueBody": {
                                "id": 5729,
                                "nodeType": "Block",
                                "src": "14696:87:30",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "hexValue": "30",
                                              "id": 5721,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "14745:1:30",
                                              "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": 5720,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "14737:7:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 5719,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "14737:7:30",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 5722,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "14737:10:30",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        {
                                          "id": 5723,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5657,
                                          "src": "14749:2:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 5724,
                                          "name": "nftId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5659,
                                          "src": "14753:5:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "31",
                                          "id": 5725,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "14760:1:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        {
                                          "id": 5726,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5661,
                                          "src": "14763:4:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 5718,
                                        "name": "_callOnERC1155Received",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2847,
                                        "src": "14714:22:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                          "typeString": "function (address,address,uint256,uint256,bytes memory)"
                                        }
                                      },
                                      "id": 5727,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14714:54:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 5728,
                                    "nodeType": "ExpressionStatement",
                                    "src": "14714:54:30"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5655,
                    "nodeType": "StructuredDocumentation",
                    "src": "13924:261:30",
                    "text": " Safely or unsafely mints some token (ERC721-compatible).\n @dev For `safe` mint, see {IERC1155721InventoryMintable-mint(address,uint256)}.\n @dev For un`safe` mint, see {IERC1155721InventoryMintable-safeMint(address,uint256,bytes)}."
                  },
                  "id": 5747,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5664,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5657,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5747,
                        "src": "14214:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5656,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14214:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5659,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5747,
                        "src": "14234:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5658,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14234:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5661,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5747,
                        "src": "14257:17:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5660,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "14257:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5663,
                        "mutability": "mutable",
                        "name": "safe",
                        "nodeType": "VariableDeclaration",
                        "scope": 5747,
                        "src": "14284:9:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5662,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14284:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14204:95:30"
                  },
                  "returnParameters": {
                    "id": 5665,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14309:0:30"
                  },
                  "scope": 6851,
                  "src": "14190:708:30",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5939,
                    "nodeType": "Block",
                    "src": "15137:1557:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5762,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5757,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5750,
                                "src": "15155:2:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 5760,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15169:1:30",
                                    "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": 5759,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15161:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5758,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15161:7:30",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5761,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15161:10:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "15155:16:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206d696e7420746f207a65726f",
                              "id": 5763,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15173:25:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              },
                              "value": "Inventory: mint to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              }
                            ],
                            "id": 5756,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15147:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15147:52:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5765,
                        "nodeType": "ExpressionStatement",
                        "src": "15147:52:30"
                      },
                      {
                        "assignments": [
                          5767
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5767,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 5939,
                            "src": "15210:14:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5766,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15210:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5770,
                        "initialValue": {
                          "expression": {
                            "id": 5768,
                            "name": "nftIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5753,
                            "src": "15227:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 5769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "15227:13:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15210:30:30"
                      },
                      {
                        "assignments": [
                          5775
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5775,
                            "mutability": "mutable",
                            "name": "values",
                            "nodeType": "VariableDeclaration",
                            "scope": 5939,
                            "src": "15250:23:30",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 5773,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15250:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5774,
                              "nodeType": "ArrayTypeName",
                              "src": "15250:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5781,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5779,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5767,
                              "src": "15290:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5778,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "15276:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 5776,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15280:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5777,
                              "nodeType": "ArrayTypeName",
                              "src": "15280:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 5780,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15276:21:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15250:47:30"
                      },
                      {
                        "assignments": [
                          5783
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5783,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 5939,
                            "src": "15308:22:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5782,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15308:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5784,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15308:22:30"
                      },
                      {
                        "assignments": [
                          5786
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5786,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 5939,
                            "src": "15340:25:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5785,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15340:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5787,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15340:25:30"
                      },
                      {
                        "body": {
                          "id": 5885,
                          "nodeType": "Block",
                          "src": "15409:902:30",
                          "statements": [
                            {
                              "assignments": [
                                5798
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5798,
                                  "mutability": "mutable",
                                  "name": "nftId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5885,
                                  "src": "15423:13:30",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5797,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15423:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5802,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 5799,
                                  "name": "nftIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5753,
                                  "src": "15439:6:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 5801,
                                "indexExpression": {
                                  "id": 5800,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5789,
                                  "src": "15446:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15439:9:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15423:25:30"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 5806,
                                        "name": "_collectionMaskLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2354,
                                        "src": "15495:21:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 5804,
                                        "name": "nftId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5798,
                                        "src": "15470:5:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 5805,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "isNonFungibleToken",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3334,
                                      "src": "15470:24:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (bool)"
                                      }
                                    },
                                    "id": 5807,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15470:47:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76656e746f72793a206e6f7420616e204e4654",
                                    "id": 5808,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15519:23:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6f6b3072d8f66101f2906a615e7ccee3daa7b495817e174efdc83fec1dfaad68",
                                      "typeString": "literal_string \"Inventory: not an NFT\""
                                    },
                                    "value": "Inventory: not an NFT"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_6f6b3072d8f66101f2906a615e7ccee3daa7b495817e174efdc83fec1dfaad68",
                                      "typeString": "literal_string \"Inventory: not an NFT\""
                                    }
                                  ],
                                  "id": 5803,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "15462:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 5809,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15462:81:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5810,
                              "nodeType": "ExpressionStatement",
                              "src": "15462:81:30"
                            },
                            {
                              "expression": {
                                "id": 5815,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 5811,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5775,
                                    "src": "15557:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 5813,
                                  "indexExpression": {
                                    "id": 5812,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5789,
                                    "src": "15564:1:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "15557:9:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 5814,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15569:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "15557:13:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5816,
                              "nodeType": "ExpressionStatement",
                              "src": "15557:13:30"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5818,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5750,
                                    "src": "15593:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5819,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5798,
                                    "src": "15597:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 5820,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15604:1:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  {
                                    "hexValue": "74727565",
                                    "id": 5821,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15607:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 5817,
                                  "name": "_mintNFT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6558,
                                  "src": "15584:8:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,bool)"
                                  }
                                },
                                "id": 5822,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15584:28:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5823,
                              "nodeType": "ExpressionStatement",
                              "src": "15584:28:30"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 5827,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15648:1:30",
                                        "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": 5826,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "15640:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 5825,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "15640:7:30",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5828,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15640:10:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 5829,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5750,
                                    "src": "15652:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5830,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5798,
                                    "src": "15656:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5824,
                                  "name": "Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7519,
                                  "src": "15631:8:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 5831,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15631:31:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5832,
                              "nodeType": "EmitStatement",
                              "src": "15626:36:30"
                            },
                            {
                              "assignments": [
                                5834
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5834,
                                  "mutability": "mutable",
                                  "name": "nextCollectionId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5885,
                                  "src": "15676:24:30",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5833,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15676:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5839,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 5837,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2354,
                                    "src": "15734:21:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5835,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5798,
                                    "src": "15703:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5836,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getNonFungibleCollection",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3351,
                                  "src": "15703:30:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 5838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15703:53:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15676:80:30"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5842,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 5840,
                                  "name": "nfCollectionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5783,
                                  "src": "15774:14:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 5841,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15792:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "15774:19:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 5883,
                                "nodeType": "Block",
                                "src": "15906:395:30",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 5854,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 5852,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5834,
                                        "src": "15928:16:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "id": 5853,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5783,
                                        "src": "15948:14:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "15928:34:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 5881,
                                      "nodeType": "Block",
                                      "src": "16227:60:30",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 5879,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": true,
                                            "src": "16249:19:30",
                                            "subExpression": {
                                              "id": 5878,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5786,
                                              "src": "16251:17:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 5880,
                                          "nodeType": "ExpressionStatement",
                                          "src": "16249:19:30"
                                        }
                                      ]
                                    },
                                    "id": 5882,
                                    "nodeType": "IfStatement",
                                    "src": "15924:363:30",
                                    "trueBody": {
                                      "id": 5877,
                                      "nodeType": "Block",
                                      "src": "15964:257:30",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 5861,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "baseExpression": {
                                                "baseExpression": {
                                                  "id": 5855,
                                                  "name": "_balances",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2375,
                                                  "src": "15986:9:30",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                    "typeString": "mapping(uint256 => mapping(address => uint256))"
                                                  }
                                                },
                                                "id": 5858,
                                                "indexExpression": {
                                                  "id": 5856,
                                                  "name": "nfCollectionId",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5783,
                                                  "src": "15996:14:30",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "15986:25:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                  "typeString": "mapping(address => uint256)"
                                                }
                                              },
                                              "id": 5859,
                                              "indexExpression": {
                                                "id": 5857,
                                                "name": "to",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5750,
                                                "src": "16012:2:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "15986:29:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "+=",
                                            "rightHandSide": {
                                              "id": 5860,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5786,
                                              "src": "16019:17:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "15986:50:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 5862,
                                          "nodeType": "ExpressionStatement",
                                          "src": "15986:50:30"
                                        },
                                        {
                                          "expression": {
                                            "id": 5867,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "baseExpression": {
                                                "id": 5863,
                                                "name": "_supplies",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2379,
                                                "src": "16058:9:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                  "typeString": "mapping(uint256 => uint256)"
                                                }
                                              },
                                              "id": 5865,
                                              "indexExpression": {
                                                "id": 5864,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5783,
                                                "src": "16068:14:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "16058:25:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "+=",
                                            "rightHandSide": {
                                              "id": 5866,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5786,
                                              "src": "16087:17:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "16058:46:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 5868,
                                          "nodeType": "ExpressionStatement",
                                          "src": "16058:46:30"
                                        },
                                        {
                                          "expression": {
                                            "id": 5871,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 5869,
                                              "name": "nfCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5783,
                                              "src": "16126:14:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 5870,
                                              "name": "nextCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5834,
                                              "src": "16143:16:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "16126:33:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 5872,
                                          "nodeType": "ExpressionStatement",
                                          "src": "16126:33:30"
                                        },
                                        {
                                          "expression": {
                                            "id": 5875,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 5873,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5786,
                                              "src": "16181:17:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "31",
                                              "id": 5874,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "16201:1:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "16181:21:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 5876,
                                          "nodeType": "ExpressionStatement",
                                          "src": "16181:21:30"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 5884,
                              "nodeType": "IfStatement",
                              "src": "15770:531:30",
                              "trueBody": {
                                "id": 5851,
                                "nodeType": "Block",
                                "src": "15795:105:30",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 5845,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 5843,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5783,
                                        "src": "15813:14:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 5844,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5834,
                                        "src": "15830:16:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "15813:33:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 5846,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15813:33:30"
                                  },
                                  {
                                    "expression": {
                                      "id": 5849,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 5847,
                                        "name": "nfCollectionCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5786,
                                        "src": "15864:17:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "hexValue": "31",
                                        "id": 5848,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15884:1:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "15864:21:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 5850,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15864:21:30"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5793,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5791,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5789,
                            "src": "15391:1:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5792,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5767,
                            "src": "15396:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15391:11:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5886,
                        "initializationExpression": {
                          "assignments": [
                            5789
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5789,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 5886,
                              "src": "15380:9:30",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5788,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15380:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 5790,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "15380:9:30"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 5795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "15404:3:30",
                            "subExpression": {
                              "id": 5794,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5789,
                              "src": "15406:1:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5796,
                          "nodeType": "ExpressionStatement",
                          "src": "15404:3:30"
                        },
                        "nodeType": "ForStatement",
                        "src": "15375:936:30"
                      },
                      {
                        "expression": {
                          "id": 5893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 5887,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2375,
                                "src": "16321:9:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 5890,
                              "indexExpression": {
                                "id": 5888,
                                "name": "nfCollectionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5783,
                                "src": "16331:14:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16321:25:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 5891,
                            "indexExpression": {
                              "id": 5889,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5750,
                              "src": "16347:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "16321:29:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 5892,
                            "name": "nfCollectionCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5786,
                            "src": "16354:17:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16321:50:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5894,
                        "nodeType": "ExpressionStatement",
                        "src": "16321:50:30"
                      },
                      {
                        "expression": {
                          "id": 5899,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 5895,
                              "name": "_supplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2379,
                              "src": "16381:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 5897,
                            "indexExpression": {
                              "id": 5896,
                              "name": "nfCollectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5783,
                              "src": "16391:14:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "16381:25:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 5898,
                            "name": "nfCollectionCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5786,
                            "src": "16410:17:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16381:46:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5900,
                        "nodeType": "ExpressionStatement",
                        "src": "16381:46:30"
                      },
                      {
                        "expression": {
                          "id": 5905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 5901,
                              "name": "_nftBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4624,
                              "src": "16437:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 5903,
                            "indexExpression": {
                              "id": 5902,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5750,
                              "src": "16450:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "16437:16:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 5904,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5767,
                            "src": "16457:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16437:26:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5906,
                        "nodeType": "ExpressionStatement",
                        "src": "16437:26:30"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5908,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "16493:10:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5909,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16493:12:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 5912,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16515:1:30",
                                  "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": 5911,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16507:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5910,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16507:7:30",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5913,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16507:10:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5914,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5750,
                              "src": "16519:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5915,
                              "name": "nftIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5753,
                              "src": "16523:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 5916,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5775,
                              "src": "16531:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 5907,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3444,
                            "src": "16479:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 5917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16479:59:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5918,
                        "nodeType": "EmitStatement",
                        "src": "16474:64:30"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5925,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 5919,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5750,
                                "src": "16552:2:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 5920,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isContract",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1284,
                              "src": "16552:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 5921,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16552:15:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 5923,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5750,
                                "src": "16595:2:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 5922,
                              "name": "_isERC1155TokenReceiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6818,
                              "src": "16571:23:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 5924,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16571:27:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "16552:46:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5938,
                        "nodeType": "IfStatement",
                        "src": "16548:140:30",
                        "trueBody": {
                          "id": 5937,
                          "nodeType": "Block",
                          "src": "16600:88:30",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 5929,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "16650:1:30",
                                        "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": 5928,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "16642:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 5927,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16642:7:30",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5930,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16642:10:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 5931,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5750,
                                    "src": "16654:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5932,
                                    "name": "nftIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5753,
                                    "src": "16658:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 5933,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5775,
                                    "src": "16666:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "hexValue": "",
                                    "id": 5934,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16674:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    }
                                  ],
                                  "id": 5926,
                                  "name": "_callOnERC1155BatchReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2881,
                                  "src": "16614:27:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                                  }
                                },
                                "id": 5935,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16614:63:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5936,
                              "nodeType": "ExpressionStatement",
                              "src": "16614:63:30"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5748,
                    "nodeType": "StructuredDocumentation",
                    "src": "14904:162:30",
                    "text": " Unsafely mints a batch of Non-Fungible Tokens (ERC721-compatible).\n @dev See {IERC1155721InventoryMintable-batchMint(address,uint256[])}."
                  },
                  "id": 5940,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_batchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5754,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5750,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5940,
                        "src": "15091:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5749,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15091:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5753,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 5940,
                        "src": "15103:23:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5751,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "15103:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5752,
                          "nodeType": "ArrayTypeName",
                          "src": "15103:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15090:37:30"
                  },
                  "returnParameters": {
                    "id": 5755,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15137:0:30"
                  },
                  "scope": 6851,
                  "src": "15071:1623:30",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6032,
                    "nodeType": "Block",
                    "src": "16989:595:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5958,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5953,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5943,
                                "src": "17007:2:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 5956,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17021:1:30",
                                    "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": 5955,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "17013:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5954,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17013:7:30",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5957,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17013:10:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "17007:16:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206d696e7420746f207a65726f",
                              "id": 5959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17025:25:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              },
                              "value": "Inventory: mint to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              }
                            ],
                            "id": 5952,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "16999:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16999:52:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5961,
                        "nodeType": "ExpressionStatement",
                        "src": "16999:52:30"
                      },
                      {
                        "assignments": [
                          5963
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5963,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 6032,
                            "src": "17061:14:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5962,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "17061:7:30",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5966,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5964,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "17078:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 5965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17078:12:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17061:29:30"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5967,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5945,
                              "src": "17104:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5968,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3310,
                            "src": "17104:18:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (bool)"
                            }
                          },
                          "id": 5969,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17104:20:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "arguments": [
                              {
                                "id": 5979,
                                "name": "_collectionMaskLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2354,
                                "src": "17211:21:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 5977,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5945,
                                "src": "17189:2:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5978,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isNonFungibleToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3334,
                              "src": "17189:21:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (bool)"
                              }
                            },
                            "id": 5980,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17189:44:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 6002,
                            "nodeType": "Block",
                            "src": "17343:60:30",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                      "id": 5999,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17364:27:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      },
                                      "value": "Inventory: not a token id"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      }
                                    ],
                                    "id": 5998,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "17357:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 6000,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17357:35:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 6001,
                                "nodeType": "ExpressionStatement",
                                "src": "17357:35:30"
                              }
                            ]
                          },
                          "id": 6003,
                          "nodeType": "IfStatement",
                          "src": "17185:218:30",
                          "trueBody": {
                            "id": 5997,
                            "nodeType": "Block",
                            "src": "17235:102:30",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 5982,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5943,
                                      "src": "17258:2:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 5983,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5945,
                                      "src": "17262:2:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 5984,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5947,
                                      "src": "17266:5:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 5985,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17273:5:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 5981,
                                    "name": "_mintNFT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6558,
                                    "src": "17249:8:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                      "typeString": "function (address,uint256,uint256,bool)"
                                    }
                                  },
                                  "id": 5986,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17249:30:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 5987,
                                "nodeType": "ExpressionStatement",
                                "src": "17249:30:30"
                              },
                              {
                                "eventCall": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 5991,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17315:1:30",
                                          "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": 5990,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "17307:7:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 5989,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "17307:7:30",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 5992,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17307:10:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    {
                                      "id": 5993,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5943,
                                      "src": "17319:2:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 5994,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5945,
                                      "src": "17323:2:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 5988,
                                    "name": "Transfer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7519,
                                    "src": "17298:8:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                      "typeString": "function (address,address,uint256)"
                                    }
                                  },
                                  "id": 5995,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17298:28:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 5996,
                                "nodeType": "EmitStatement",
                                "src": "17293:33:30"
                              }
                            ]
                          }
                        },
                        "id": 6004,
                        "nodeType": "IfStatement",
                        "src": "17100:303:30",
                        "trueBody": {
                          "id": 5976,
                          "nodeType": "Block",
                          "src": "17126:53:30",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5971,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5943,
                                    "src": "17154:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5972,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5945,
                                    "src": "17158:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 5973,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5947,
                                    "src": "17162:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5970,
                                  "name": "_mintFungible",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6490,
                                  "src": "17140:13:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 5974,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17140:28:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5975,
                              "nodeType": "ExpressionStatement",
                              "src": "17140:28:30"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 6006,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5963,
                              "src": "17433:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 6009,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17449:1:30",
                                  "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": 6008,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "17441:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6007,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "17441:7:30",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6010,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17441:10:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 6011,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5943,
                              "src": "17453:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6012,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5945,
                              "src": "17457:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6013,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5947,
                              "src": "17461:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6005,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3430,
                            "src": "17418:14:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 6014,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17418:49:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6015,
                        "nodeType": "EmitStatement",
                        "src": "17413:54:30"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 6016,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5943,
                              "src": "17481:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 6017,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1284,
                            "src": "17481:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 6018,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17481:15:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6031,
                        "nodeType": "IfStatement",
                        "src": "17477:101:30",
                        "trueBody": {
                          "id": 6030,
                          "nodeType": "Block",
                          "src": "17498:80:30",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 6022,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17543:1:30",
                                        "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": 6021,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "17535:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 6020,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17535:7:30",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 6023,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17535:10:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 6024,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5943,
                                    "src": "17547:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 6025,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5945,
                                    "src": "17551:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 6026,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5947,
                                    "src": "17555:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 6027,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5949,
                                    "src": "17562:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 6019,
                                  "name": "_callOnERC1155Received",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2847,
                                  "src": "17512:22:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,bytes memory)"
                                  }
                                },
                                "id": 6028,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17512:55:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6029,
                              "nodeType": "ExpressionStatement",
                              "src": "17512:55:30"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5941,
                    "nodeType": "StructuredDocumentation",
                    "src": "16700:152:30",
                    "text": " Safely mints some token (ERC1155-compatible).\n @dev See {IERC1155721InventoryMintable-safeMint(address,uint256,uint256,bytes)}."
                  },
                  "id": 6033,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5950,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5943,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 6033,
                        "src": "16885:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5942,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16885:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5945,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 6033,
                        "src": "16905:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5944,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16905:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5947,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 6033,
                        "src": "16925:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5946,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16925:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5949,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 6033,
                        "src": "16948:17:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5948,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "16948:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16875:96:30"
                  },
                  "returnParameters": {
                    "id": 5951,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16989:0:30"
                  },
                  "scope": 6851,
                  "src": "16857:727:30",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6253,
                    "nodeType": "Block",
                    "src": "17920:1939:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6053,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6048,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6036,
                                "src": "17938:2:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 6051,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17952:1:30",
                                    "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": 6050,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "17944:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6049,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17944:7:30",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6052,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17944:10:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "17938:16:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206d696e7420746f207a65726f",
                              "id": 6054,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17956:25:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              },
                              "value": "Inventory: mint to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              }
                            ],
                            "id": 6047,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "17930:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17930:52:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6056,
                        "nodeType": "ExpressionStatement",
                        "src": "17930:52:30"
                      },
                      {
                        "assignments": [
                          6058
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6058,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 6253,
                            "src": "17992:14:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6057,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17992:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6061,
                        "initialValue": {
                          "expression": {
                            "id": 6059,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6039,
                            "src": "18009:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 6060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "18009:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17992:27:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6066,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6063,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6058,
                                "src": "18037:6:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 6064,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6042,
                                  "src": "18047:6:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 6065,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "18047:13:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "18037:23:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 6067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18062:32:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              },
                              "value": "Inventory: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              }
                            ],
                            "id": 6062,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "18029:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18029:66:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6069,
                        "nodeType": "ExpressionStatement",
                        "src": "18029:66:30"
                      },
                      {
                        "assignments": [
                          6071
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6071,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 6253,
                            "src": "18106:22:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6070,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18106:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6072,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18106:22:30"
                      },
                      {
                        "assignments": [
                          6074
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6074,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 6253,
                            "src": "18138:25:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6073,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18138:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6075,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18138:25:30"
                      },
                      {
                        "assignments": [
                          6077
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6077,
                            "mutability": "mutable",
                            "name": "nftsCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 6253,
                            "src": "18173:17:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6076,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18173:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6078,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18173:17:30"
                      },
                      {
                        "body": {
                          "id": 6194,
                          "nodeType": "Block",
                          "src": "18234:1173:30",
                          "statements": [
                            {
                              "assignments": [
                                6089
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6089,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6194,
                                  "src": "18248:10:30",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6088,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "18248:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6093,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 6090,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6039,
                                  "src": "18261:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 6092,
                                "indexExpression": {
                                  "id": 6091,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6080,
                                  "src": "18265:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "18261:6:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "18248:19:30"
                            },
                            {
                              "assignments": [
                                6095
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6095,
                                  "mutability": "mutable",
                                  "name": "value",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6194,
                                  "src": "18281:13:30",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6094,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "18281:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6099,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 6096,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6042,
                                  "src": "18297:6:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 6098,
                                "indexExpression": {
                                  "id": 6097,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6080,
                                  "src": "18304:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "18297:9:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "18281:25:30"
                            },
                            {
                              "condition": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 6100,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6089,
                                    "src": "18324:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6101,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3310,
                                  "src": "18324:18:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (bool)"
                                  }
                                },
                                "id": 6102,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18324:20:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "arguments": [
                                    {
                                      "id": 6112,
                                      "name": "_collectionMaskLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2354,
                                      "src": "18439:21:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 6110,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6089,
                                      "src": "18417:2:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6111,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "isNonFungibleToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3334,
                                    "src": "18417:21:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (bool)"
                                    }
                                  },
                                  "id": 6113,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18417:44:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 6191,
                                  "nodeType": "Block",
                                  "src": "19329:68:30",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                            "id": 6188,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "19354:27:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            },
                                            "value": "Inventory: not a token id"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            }
                                          ],
                                          "id": 6187,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "19347:6:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 6189,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "19347:35:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 6190,
                                      "nodeType": "ExpressionStatement",
                                      "src": "19347:35:30"
                                    }
                                  ]
                                },
                                "id": 6192,
                                "nodeType": "IfStatement",
                                "src": "18413:984:30",
                                "trueBody": {
                                  "id": 6186,
                                  "nodeType": "Block",
                                  "src": "18463:860:30",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 6115,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6036,
                                            "src": "18490:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 6116,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6089,
                                            "src": "18494:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 6117,
                                            "name": "value",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6095,
                                            "src": "18498:5:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "hexValue": "74727565",
                                            "id": 6118,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "18505:4:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "true"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          ],
                                          "id": 6114,
                                          "name": "_mintNFT",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6558,
                                          "src": "18481:8:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                            "typeString": "function (address,uint256,uint256,bool)"
                                          }
                                        },
                                        "id": 6119,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "18481:29:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 6120,
                                      "nodeType": "ExpressionStatement",
                                      "src": "18481:29:30"
                                    },
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 6124,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "18550:1:30",
                                                "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": 6123,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "18542:7:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 6122,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "18542:7:30",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 6125,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "18542:10:30",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          {
                                            "id": 6126,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6036,
                                            "src": "18554:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 6127,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6089,
                                            "src": "18558:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 6121,
                                          "name": "Transfer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7519,
                                          "src": "18533:8:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,address,uint256)"
                                          }
                                        },
                                        "id": 6128,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "18533:28:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 6129,
                                      "nodeType": "EmitStatement",
                                      "src": "18528:33:30"
                                    },
                                    {
                                      "assignments": [
                                        6131
                                      ],
                                      "declarations": [
                                        {
                                          "constant": false,
                                          "id": 6131,
                                          "mutability": "mutable",
                                          "name": "nextCollectionId",
                                          "nodeType": "VariableDeclaration",
                                          "scope": 6186,
                                          "src": "18579:24:30",
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "typeName": {
                                            "id": 6130,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "18579:7:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "visibility": "internal"
                                        }
                                      ],
                                      "id": 6136,
                                      "initialValue": {
                                        "arguments": [
                                          {
                                            "id": 6134,
                                            "name": "_collectionMaskLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2354,
                                            "src": "18634:21:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 6132,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6089,
                                            "src": "18606:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 6133,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getNonFungibleCollection",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3351,
                                          "src": "18606:27:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 6135,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "18606:50:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "VariableDeclarationStatement",
                                      "src": "18579:77:30"
                                    },
                                    {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6139,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 6137,
                                          "name": "nfCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6071,
                                          "src": "18678:14:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 6138,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "18696:1:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "18678:19:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 6184,
                                        "nodeType": "Block",
                                        "src": "18822:487:30",
                                        "statements": [
                                          {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6151,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6149,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6131,
                                                "src": "18848:16:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "!=",
                                              "rightExpression": {
                                                "id": 6150,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6071,
                                                "src": "18868:14:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "18848:34:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 6182,
                                              "nodeType": "Block",
                                              "src": "19223:68:30",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 6180,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "++",
                                                    "prefix": true,
                                                    "src": "19249:19:30",
                                                    "subExpression": {
                                                      "id": 6179,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 6074,
                                                      "src": "19251:17:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 6181,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "19249:19:30"
                                                }
                                              ]
                                            },
                                            "id": 6183,
                                            "nodeType": "IfStatement",
                                            "src": "18844:447:30",
                                            "trueBody": {
                                              "id": 6178,
                                              "nodeType": "Block",
                                              "src": "18884:333:30",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 6158,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "baseExpression": {
                                                        "baseExpression": {
                                                          "id": 6152,
                                                          "name": "_balances",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 2375,
                                                          "src": "18910:9:30",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                                                          }
                                                        },
                                                        "id": 6155,
                                                        "indexExpression": {
                                                          "id": 6153,
                                                          "name": "nfCollectionId",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 6071,
                                                          "src": "18920:14:30",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "18910:25:30",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                          "typeString": "mapping(address => uint256)"
                                                        }
                                                      },
                                                      "id": 6156,
                                                      "indexExpression": {
                                                        "id": 6154,
                                                        "name": "to",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6036,
                                                        "src": "18936:2:30",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": true,
                                                      "nodeType": "IndexAccess",
                                                      "src": "18910:29:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                      "id": 6157,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 6074,
                                                      "src": "18943:17:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "18910:50:30",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 6159,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "18910:50:30"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 6164,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "baseExpression": {
                                                        "id": 6160,
                                                        "name": "_supplies",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2379,
                                                        "src": "18986:9:30",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                          "typeString": "mapping(uint256 => uint256)"
                                                        }
                                                      },
                                                      "id": 6162,
                                                      "indexExpression": {
                                                        "id": 6161,
                                                        "name": "nfCollectionId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6071,
                                                        "src": "18996:14:30",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": true,
                                                      "nodeType": "IndexAccess",
                                                      "src": "18986:25:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                      "id": 6163,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 6074,
                                                      "src": "19015:17:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "18986:46:30",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 6165,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "18986:46:30"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 6168,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 6166,
                                                      "name": "nfCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 6071,
                                                      "src": "19058:14:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "id": 6167,
                                                      "name": "nextCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 6131,
                                                      "src": "19075:16:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "19058:33:30",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 6169,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "19058:33:30"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 6172,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 6170,
                                                      "name": "nftsCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 6077,
                                                      "src": "19117:9:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                      "id": 6171,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 6074,
                                                      "src": "19130:17:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "19117:30:30",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 6173,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "19117:30:30"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 6176,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 6174,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 6074,
                                                      "src": "19173:17:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "hexValue": "31",
                                                      "id": 6175,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "19193:1:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "19173:21:30",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 6177,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "19173:21:30"
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      },
                                      "id": 6185,
                                      "nodeType": "IfStatement",
                                      "src": "18674:635:30",
                                      "trueBody": {
                                        "id": 6148,
                                        "nodeType": "Block",
                                        "src": "18699:117:30",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 6142,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 6140,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6071,
                                                "src": "18721:14:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "id": 6141,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6131,
                                                "src": "18738:16:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "18721:33:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 6143,
                                            "nodeType": "ExpressionStatement",
                                            "src": "18721:33:30"
                                          },
                                          {
                                            "expression": {
                                              "id": 6146,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 6144,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6074,
                                                "src": "18776:17:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "hexValue": "31",
                                                "id": 6145,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "18796:1:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "18776:21:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 6147,
                                            "nodeType": "ExpressionStatement",
                                            "src": "18776:21:30"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 6193,
                              "nodeType": "IfStatement",
                              "src": "18320:1077:30",
                              "trueBody": {
                                "id": 6109,
                                "nodeType": "Block",
                                "src": "18346:61:30",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 6104,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6036,
                                          "src": "18378:2:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 6105,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6089,
                                          "src": "18382:2:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 6106,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6095,
                                          "src": "18386:5:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 6103,
                                        "name": "_mintFungible",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6490,
                                        "src": "18364:13:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256,uint256)"
                                        }
                                      },
                                      "id": 6107,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "18364:28:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 6108,
                                    "nodeType": "ExpressionStatement",
                                    "src": "18364:28:30"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6082,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6080,
                            "src": "18216:1:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6083,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6058,
                            "src": "18221:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18216:11:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6195,
                        "initializationExpression": {
                          "assignments": [
                            6080
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 6080,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 6195,
                              "src": "18205:9:30",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 6079,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "18205:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 6081,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "18205:9:30"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 6086,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "18229:3:30",
                            "subExpression": {
                              "id": 6085,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6080,
                              "src": "18231:1:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6087,
                          "nodeType": "ExpressionStatement",
                          "src": "18229:3:30"
                        },
                        "nodeType": "ForStatement",
                        "src": "18200:1207:30"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6198,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6196,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6071,
                            "src": "19421:14:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 6197,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19439:1:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19421:19:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6224,
                        "nodeType": "IfStatement",
                        "src": "19417:247:30",
                        "trueBody": {
                          "id": 6223,
                          "nodeType": "Block",
                          "src": "19442:222:30",
                          "statements": [
                            {
                              "expression": {
                                "id": 6205,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 6199,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2375,
                                      "src": "19456:9:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 6202,
                                    "indexExpression": {
                                      "id": 6200,
                                      "name": "nfCollectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6071,
                                      "src": "19466:14:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "19456:25:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 6203,
                                  "indexExpression": {
                                    "id": 6201,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6036,
                                    "src": "19482:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "19456:29:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 6204,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6074,
                                  "src": "19489:17:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19456:50:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6206,
                              "nodeType": "ExpressionStatement",
                              "src": "19456:50:30"
                            },
                            {
                              "expression": {
                                "id": 6211,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 6207,
                                    "name": "_supplies",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2379,
                                    "src": "19520:9:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 6209,
                                  "indexExpression": {
                                    "id": 6208,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6071,
                                    "src": "19530:14:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "19520:25:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 6210,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6074,
                                  "src": "19549:17:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19520:46:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6212,
                              "nodeType": "ExpressionStatement",
                              "src": "19520:46:30"
                            },
                            {
                              "expression": {
                                "id": 6215,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 6213,
                                  "name": "nftsCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6077,
                                  "src": "19580:9:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 6214,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6074,
                                  "src": "19593:17:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19580:30:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6216,
                              "nodeType": "ExpressionStatement",
                              "src": "19580:30:30"
                            },
                            {
                              "expression": {
                                "id": 6221,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 6217,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4624,
                                    "src": "19624:12:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 6219,
                                  "indexExpression": {
                                    "id": 6218,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6036,
                                    "src": "19637:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "19624:16:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 6220,
                                  "name": "nftsCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6077,
                                  "src": "19644:9:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19624:29:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6222,
                              "nodeType": "ExpressionStatement",
                              "src": "19624:29:30"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 6226,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "19693:10:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 6227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19693:12:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 6230,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19715:1:30",
                                  "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": 6229,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "19707:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6228,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "19707:7:30",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6231,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19707:10:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 6232,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6036,
                              "src": "19719:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6233,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6039,
                              "src": "19723:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 6234,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6042,
                              "src": "19728:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 6225,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3444,
                            "src": "19679:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 6235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19679:56:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6236,
                        "nodeType": "EmitStatement",
                        "src": "19674:61:30"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 6237,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6036,
                              "src": "19749:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 6238,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1284,
                            "src": "19749:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 6239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19749:15:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6252,
                        "nodeType": "IfStatement",
                        "src": "19745:108:30",
                        "trueBody": {
                          "id": 6251,
                          "nodeType": "Block",
                          "src": "19766:87:30",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 6243,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "19816:1:30",
                                        "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": 6242,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "19808:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 6241,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "19808:7:30",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 6244,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19808:10:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 6245,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6036,
                                    "src": "19820:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 6246,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6039,
                                    "src": "19824:3:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 6247,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6042,
                                    "src": "19829:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 6248,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6044,
                                    "src": "19837:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 6240,
                                  "name": "_callOnERC1155BatchReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2881,
                                  "src": "19780:27:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                                  }
                                },
                                "id": 6249,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19780:62:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6250,
                              "nodeType": "ExpressionStatement",
                              "src": "19780:62:30"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6034,
                    "nodeType": "StructuredDocumentation",
                    "src": "17590:168:30",
                    "text": " Safely mints a batch of tokens (ERC1155-compatible).\n @dev See {IERC1155721InventoryMintable-safeBatchMint(address,uint256[],uint256[],bytes)}."
                  },
                  "id": 6254,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeBatchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6045,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6036,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 6254,
                        "src": "17796:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6035,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17796:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6039,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 6254,
                        "src": "17816:20:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6037,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "17816:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6038,
                          "nodeType": "ArrayTypeName",
                          "src": "17816:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6042,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 6254,
                        "src": "17846:23:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6040,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "17846:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6041,
                          "nodeType": "ArrayTypeName",
                          "src": "17846:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6044,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 6254,
                        "src": "17879:17:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6043,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "17879:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17786:116:30"
                  },
                  "returnParameters": {
                    "id": 6046,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17920:0:30"
                  },
                  "scope": 6851,
                  "src": "17763:2096:30",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6439,
                    "nodeType": "Block",
                    "src": "20201:1354:30",
                    "statements": [
                      {
                        "assignments": [
                          6270
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6270,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 6439,
                            "src": "20211:14:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6269,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20211:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6273,
                        "initialValue": {
                          "expression": {
                            "id": 6271,
                            "name": "recipients",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6258,
                            "src": "20228:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 6272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "20228:17:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20211:34:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 6283,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6275,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6270,
                                  "src": "20263:6:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 6276,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6261,
                                    "src": "20273:3:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 6277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "20273:10:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20263:20:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6282,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6279,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6270,
                                  "src": "20287:6:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 6280,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6264,
                                    "src": "20297:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 6281,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "20297:13:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20287:23:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "20263:47:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 6284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20312:32:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              },
                              "value": "Inventory: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              }
                            ],
                            "id": 6274,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "20255:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20255:90:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6286,
                        "nodeType": "ExpressionStatement",
                        "src": "20255:90:30"
                      },
                      {
                        "assignments": [
                          6288
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6288,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 6439,
                            "src": "20356:14:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 6287,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "20356:7:30",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6291,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6289,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "20373:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 6290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20373:12:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20356:29:30"
                      },
                      {
                        "body": {
                          "id": 6437,
                          "nodeType": "Block",
                          "src": "20429:1120:30",
                          "statements": [
                            {
                              "assignments": [
                                6302
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6302,
                                  "mutability": "mutable",
                                  "name": "to",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6437,
                                  "src": "20443:10:30",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 6301,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20443:7:30",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6306,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 6303,
                                  "name": "recipients",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6258,
                                  "src": "20456:10:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 6305,
                                "indexExpression": {
                                  "id": 6304,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6293,
                                  "src": "20467:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "20456:13:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "20443:26:30"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 6313,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 6308,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6302,
                                      "src": "20491:2:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 6311,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "20505:1:30",
                                          "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": 6310,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "20497:7:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 6309,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "20497:7:30",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 6312,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20497:10:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "20491:16:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76656e746f72793a206d696e7420746f207a65726f",
                                    "id": 6314,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20509:25:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                      "typeString": "literal_string \"Inventory: mint to zero\""
                                    },
                                    "value": "Inventory: mint to zero"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                      "typeString": "literal_string \"Inventory: mint to zero\""
                                    }
                                  ],
                                  "id": 6307,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "20483:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 6315,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20483:52:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6316,
                              "nodeType": "ExpressionStatement",
                              "src": "20483:52:30"
                            },
                            {
                              "assignments": [
                                6318
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6318,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6437,
                                  "src": "20549:10:30",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6317,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20549:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6322,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 6319,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6261,
                                  "src": "20562:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 6321,
                                "indexExpression": {
                                  "id": 6320,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6293,
                                  "src": "20566:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "20562:6:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "20549:19:30"
                            },
                            {
                              "assignments": [
                                6324
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6324,
                                  "mutability": "mutable",
                                  "name": "value",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6437,
                                  "src": "20582:13:30",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6323,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20582:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6328,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 6325,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6264,
                                  "src": "20598:6:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 6327,
                                "indexExpression": {
                                  "id": 6326,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6293,
                                  "src": "20605:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "20598:9:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "20582:25:30"
                            },
                            {
                              "condition": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 6329,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6318,
                                    "src": "20625:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6330,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3310,
                                  "src": "20625:18:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (bool)"
                                  }
                                },
                                "id": 6331,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20625:20:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "arguments": [
                                    {
                                      "id": 6368,
                                      "name": "_collectionMaskLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2354,
                                      "src": "20946:21:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 6366,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6318,
                                      "src": "20924:2:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6367,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "isNonFungibleToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3334,
                                    "src": "20924:21:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (bool)"
                                    }
                                  },
                                  "id": 6369,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "20924:44:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 6434,
                                  "nodeType": "Block",
                                  "src": "21471:68:30",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                            "id": 6431,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "21496:27:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            },
                                            "value": "Inventory: not a token id"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            }
                                          ],
                                          "id": 6430,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "21489:6:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 6432,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "21489:35:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 6433,
                                      "nodeType": "ExpressionStatement",
                                      "src": "21489:35:30"
                                    }
                                  ]
                                },
                                "id": 6435,
                                "nodeType": "IfStatement",
                                "src": "20920:619:30",
                                "trueBody": {
                                  "id": 6429,
                                  "nodeType": "Block",
                                  "src": "20970:495:30",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 6371,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6302,
                                            "src": "20997:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 6372,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6318,
                                            "src": "21001:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 6373,
                                            "name": "value",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6324,
                                            "src": "21005:5:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "hexValue": "66616c7365",
                                            "id": 6374,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "21012:5:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "false"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          ],
                                          "id": 6370,
                                          "name": "_mintNFT",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6558,
                                          "src": "20988:8:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                            "typeString": "function (address,uint256,uint256,bool)"
                                          }
                                        },
                                        "id": 6375,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "20988:30:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 6376,
                                      "nodeType": "ExpressionStatement",
                                      "src": "20988:30:30"
                                    },
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 6380,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "21058:1:30",
                                                "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": 6379,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "21050:7:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 6378,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "21050:7:30",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 6381,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "21050:10:30",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          {
                                            "id": 6382,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6302,
                                            "src": "21062:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 6383,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6318,
                                            "src": "21066:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 6377,
                                          "name": "Transfer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7519,
                                          "src": "21041:8:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,address,uint256)"
                                          }
                                        },
                                        "id": 6384,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "21041:28:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 6385,
                                      "nodeType": "EmitStatement",
                                      "src": "21036:33:30"
                                    },
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "id": 6387,
                                            "name": "sender",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6288,
                                            "src": "21107:6:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 6390,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "21123:1:30",
                                                "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": 6389,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "21115:7:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 6388,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "21115:7:30",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 6391,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "21115:10:30",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          {
                                            "id": 6392,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6302,
                                            "src": "21127:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 6393,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6318,
                                            "src": "21131:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "hexValue": "31",
                                            "id": 6394,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "21135:1:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            }
                                          ],
                                          "id": 6386,
                                          "name": "TransferSingle",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3430,
                                          "src": "21092:14:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,address,address,uint256,uint256)"
                                          }
                                        },
                                        "id": 6395,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "21092:45:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 6396,
                                      "nodeType": "EmitStatement",
                                      "src": "21087:50:30"
                                    },
                                    {
                                      "condition": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "id": 6397,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6302,
                                            "src": "21159:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "id": 6398,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "isContract",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1284,
                                          "src": "21159:13:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                            "typeString": "function (address) view returns (bool)"
                                          }
                                        },
                                        "id": 6399,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "21159:15:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "id": 6428,
                                      "nodeType": "IfStatement",
                                      "src": "21155:296:30",
                                      "trueBody": {
                                        "id": 6427,
                                        "nodeType": "Block",
                                        "src": "21176:275:30",
                                        "statements": [
                                          {
                                            "condition": {
                                              "arguments": [
                                                {
                                                  "id": 6401,
                                                  "name": "to",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6302,
                                                  "src": "21226:2:30",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 6400,
                                                "name": "_isERC1155TokenReceiver",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6818,
                                                "src": "21202:23:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                  "typeString": "function (address) view returns (bool)"
                                                }
                                              },
                                              "id": 6402,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "21202:27:30",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 6425,
                                              "nodeType": "Block",
                                              "src": "21337:96:30",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "hexValue": "30",
                                                            "id": 6418,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "21393:1:30",
                                                            "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": 6417,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "nodeType": "ElementaryTypeNameExpression",
                                                          "src": "21385:7:30",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                          },
                                                          "typeName": {
                                                            "id": 6416,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "21385:7:30",
                                                            "typeDescriptions": {}
                                                          }
                                                        },
                                                        "id": 6419,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "21385:10:30",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address_payable",
                                                          "typeString": "address payable"
                                                        }
                                                      },
                                                      {
                                                        "id": 6420,
                                                        "name": "to",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6302,
                                                        "src": "21397:2:30",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "id": 6421,
                                                        "name": "id",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6318,
                                                        "src": "21401:2:30",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      {
                                                        "id": 6422,
                                                        "name": "data",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6266,
                                                        "src": "21405:4:30",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                                          "typeString": "bytes calldata"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address_payable",
                                                          "typeString": "address payable"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                                          "typeString": "bytes calldata"
                                                        }
                                                      ],
                                                      "id": 6415,
                                                      "name": "_callOnERC721Received",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 6850,
                                                      "src": "21363:21:30",
                                                      "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": 6423,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "21363:47:30",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_tuple$__$",
                                                      "typeString": "tuple()"
                                                    }
                                                  },
                                                  "id": 6424,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "21363:47:30"
                                                }
                                              ]
                                            },
                                            "id": 6426,
                                            "nodeType": "IfStatement",
                                            "src": "21198:235:30",
                                            "trueBody": {
                                              "id": 6414,
                                              "nodeType": "Block",
                                              "src": "21231:100:30",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "hexValue": "30",
                                                            "id": 6406,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "21288:1:30",
                                                            "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": 6405,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "nodeType": "ElementaryTypeNameExpression",
                                                          "src": "21280:7:30",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                          },
                                                          "typeName": {
                                                            "id": 6404,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "21280:7:30",
                                                            "typeDescriptions": {}
                                                          }
                                                        },
                                                        "id": 6407,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "21280:10:30",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address_payable",
                                                          "typeString": "address payable"
                                                        }
                                                      },
                                                      {
                                                        "id": 6408,
                                                        "name": "to",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6302,
                                                        "src": "21292:2:30",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "id": 6409,
                                                        "name": "id",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6318,
                                                        "src": "21296:2:30",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      {
                                                        "hexValue": "31",
                                                        "id": 6410,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "21300:1:30",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_1_by_1",
                                                          "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                      },
                                                      {
                                                        "id": 6411,
                                                        "name": "data",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6266,
                                                        "src": "21303:4:30",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                                          "typeString": "bytes calldata"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address_payable",
                                                          "typeString": "address payable"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_rational_1_by_1",
                                                          "typeString": "int_const 1"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                                          "typeString": "bytes calldata"
                                                        }
                                                      ],
                                                      "id": 6403,
                                                      "name": "_callOnERC1155Received",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2847,
                                                      "src": "21257:22:30",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                                        "typeString": "function (address,address,uint256,uint256,bytes memory)"
                                                      }
                                                    },
                                                    "id": 6412,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "21257:51:30",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_tuple$__$",
                                                      "typeString": "tuple()"
                                                    }
                                                  },
                                                  "id": 6413,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "21257:51:30"
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 6436,
                              "nodeType": "IfStatement",
                              "src": "20621:918:30",
                              "trueBody": {
                                "id": 6365,
                                "nodeType": "Block",
                                "src": "20647:267:30",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 6333,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6302,
                                          "src": "20679:2:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 6334,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6318,
                                          "src": "20683:2:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 6335,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6324,
                                          "src": "20687:5:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 6332,
                                        "name": "_mintFungible",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6490,
                                        "src": "20665:13:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256,uint256)"
                                        }
                                      },
                                      "id": 6336,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20665:28:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 6337,
                                    "nodeType": "ExpressionStatement",
                                    "src": "20665:28:30"
                                  },
                                  {
                                    "eventCall": {
                                      "arguments": [
                                        {
                                          "id": 6339,
                                          "name": "sender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6288,
                                          "src": "20731:6:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "hexValue": "30",
                                              "id": 6342,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "20747:1:30",
                                              "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": 6341,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "20739:7:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 6340,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "20739:7:30",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 6343,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "20739:10:30",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        {
                                          "id": 6344,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6302,
                                          "src": "20751:2:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 6345,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6318,
                                          "src": "20755:2:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 6346,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6324,
                                          "src": "20759:5:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 6338,
                                        "name": "TransferSingle",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3430,
                                        "src": "20716:14:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,address,uint256,uint256)"
                                        }
                                      },
                                      "id": 6347,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20716:49:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 6348,
                                    "nodeType": "EmitStatement",
                                    "src": "20711:54:30"
                                  },
                                  {
                                    "condition": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "id": 6349,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6302,
                                          "src": "20787:2:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "id": 6350,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "isContract",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1284,
                                        "src": "20787:13:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                          "typeString": "function (address) view returns (bool)"
                                        }
                                      },
                                      "id": 6351,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20787:15:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 6364,
                                    "nodeType": "IfStatement",
                                    "src": "20783:117:30",
                                    "trueBody": {
                                      "id": 6363,
                                      "nodeType": "Block",
                                      "src": "20804:96:30",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "hexValue": "30",
                                                    "id": 6355,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "20857:1:30",
                                                    "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": 6354,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "20849:7:30",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                  },
                                                  "typeName": {
                                                    "id": 6353,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "20849:7:30",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 6356,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "20849:10:30",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address_payable",
                                                  "typeString": "address payable"
                                                }
                                              },
                                              {
                                                "id": 6357,
                                                "name": "to",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6302,
                                                "src": "20861:2:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 6358,
                                                "name": "id",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6318,
                                                "src": "20865:2:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 6359,
                                                "name": "value",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6324,
                                                "src": "20869:5:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 6360,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6266,
                                                "src": "20876:4:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                                  "typeString": "bytes calldata"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address_payable",
                                                  "typeString": "address payable"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                                  "typeString": "bytes calldata"
                                                }
                                              ],
                                              "id": 6352,
                                              "name": "_callOnERC1155Received",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2847,
                                              "src": "20826:22:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                                "typeString": "function (address,address,uint256,uint256,bytes memory)"
                                              }
                                            },
                                            "id": 6361,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "20826:55:30",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 6362,
                                          "nodeType": "ExpressionStatement",
                                          "src": "20826:55:30"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6295,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6293,
                            "src": "20411:1:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6296,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6270,
                            "src": "20416:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20411:11:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6438,
                        "initializationExpression": {
                          "assignments": [
                            6293
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 6293,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 6438,
                              "src": "20400:9:30",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 6292,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "20400:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 6294,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "20400:9:30"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 6299,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "20424:3:30",
                            "subExpression": {
                              "id": 6298,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6293,
                              "src": "20426:1:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6300,
                          "nodeType": "ExpressionStatement",
                          "src": "20424:3:30"
                        },
                        "nodeType": "ForStatement",
                        "src": "20395:1154:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6255,
                    "nodeType": "StructuredDocumentation",
                    "src": "19865:159:30",
                    "text": " Safely mints some tokens to a list of recipients.\n @dev See {IERC1155721Deliverable-safeDeliver(address[],uint256[],uint256[],bytes)}."
                  },
                  "id": 6440,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeDeliver",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6267,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6258,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 6440,
                        "src": "20060:29:30",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6256,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "20060:7:30",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 6257,
                          "nodeType": "ArrayTypeName",
                          "src": "20060:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6261,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 6440,
                        "src": "20099:22:30",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6259,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "20099:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6260,
                          "nodeType": "ArrayTypeName",
                          "src": "20099:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6264,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 6440,
                        "src": "20131:25:30",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6262,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "20131:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6263,
                          "nodeType": "ArrayTypeName",
                          "src": "20131:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6266,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 6440,
                        "src": "20166:19:30",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6265,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "20166:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20050:141:30"
                  },
                  "returnParameters": {
                    "id": 6268,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20201:0:30"
                  },
                  "scope": 6851,
                  "src": "20029:1526:30",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6489,
                    "nodeType": "Block",
                    "src": "21791:336:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6452,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6450,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6446,
                                "src": "21809:5:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 6451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "21818:1:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "21809:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2076616c7565",
                              "id": 6453,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21821:23:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              },
                              "value": "Inventory: zero value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              }
                            ],
                            "id": 6449,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "21801:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21801:44:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6455,
                        "nodeType": "ExpressionStatement",
                        "src": "21801:44:30"
                      },
                      {
                        "assignments": [
                          6457
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6457,
                            "mutability": "mutable",
                            "name": "supply",
                            "nodeType": "VariableDeclaration",
                            "scope": 6489,
                            "src": "21855:14:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6456,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21855:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6461,
                        "initialValue": {
                          "baseExpression": {
                            "id": 6458,
                            "name": "_supplies",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2379,
                            "src": "21872:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 6460,
                          "indexExpression": {
                            "id": 6459,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6444,
                            "src": "21882:2:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "21872:13:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21855:30:30"
                      },
                      {
                        "assignments": [
                          6463
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6463,
                            "mutability": "mutable",
                            "name": "newSupply",
                            "nodeType": "VariableDeclaration",
                            "scope": 6489,
                            "src": "21895:17:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6462,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21895:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6467,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6464,
                            "name": "supply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6457,
                            "src": "21915:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 6465,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6446,
                            "src": "21924:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21915:14:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21895:34:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6469,
                                "name": "newSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6463,
                                "src": "21947:9:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "id": 6470,
                                "name": "supply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6457,
                                "src": "21959:6:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "21947:18:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20737570706c79206f766572666c6f77",
                              "id": 6472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21967:28:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c0eccaf1875915e4c46180a27a2af4eaa97d0b12ace18db3c53e487a78e65185",
                                "typeString": "literal_string \"Inventory: supply overflow\""
                              },
                              "value": "Inventory: supply overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c0eccaf1875915e4c46180a27a2af4eaa97d0b12ace18db3c53e487a78e65185",
                                "typeString": "literal_string \"Inventory: supply overflow\""
                              }
                            ],
                            "id": 6468,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "21939:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6473,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21939:57:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6474,
                        "nodeType": "ExpressionStatement",
                        "src": "21939:57:30"
                      },
                      {
                        "expression": {
                          "id": 6479,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 6475,
                              "name": "_supplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2379,
                              "src": "22006:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 6477,
                            "indexExpression": {
                              "id": 6476,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6444,
                              "src": "22016:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "22006:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 6478,
                            "name": "newSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6463,
                            "src": "22022:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22006:25:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6480,
                        "nodeType": "ExpressionStatement",
                        "src": "22006:25:30"
                      },
                      {
                        "expression": {
                          "id": 6487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 6481,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2375,
                                "src": "22094:9:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 6484,
                              "indexExpression": {
                                "id": 6482,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6444,
                                "src": "22104:2:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "22094:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 6485,
                            "indexExpression": {
                              "id": 6483,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6442,
                              "src": "22108:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "22094:17:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 6486,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6446,
                            "src": "22115:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22094:26:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6488,
                        "nodeType": "ExpressionStatement",
                        "src": "22094:26:30"
                      }
                    ]
                  },
                  "id": 6490,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mintFungible",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6447,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6442,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 6490,
                        "src": "21722:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6441,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21722:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6444,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 6490,
                        "src": "21742:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6443,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21742:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6446,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 6490,
                        "src": "21762:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6445,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21762:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21712:69:30"
                  },
                  "returnParameters": {
                    "id": 6448,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21791:0:30"
                  },
                  "scope": 6851,
                  "src": "21690:437:30",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6557,
                    "nodeType": "Block",
                    "src": "22251:565:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6502,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6496,
                                "src": "22269:5:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 6503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22278:1:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "22269:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2077726f6e67204e46542076616c7565",
                              "id": 6505,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22281:28:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              },
                              "value": "Inventory: wrong NFT value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              }
                            ],
                            "id": 6501,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "22261:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22261:49:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6507,
                        "nodeType": "ExpressionStatement",
                        "src": "22261:49:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6513,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 6509,
                                  "name": "_owners",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2383,
                                  "src": "22328:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 6511,
                                "indexExpression": {
                                  "id": 6510,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6494,
                                  "src": "22336:2:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "22328:11:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 6512,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22343:1:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "22328:16:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206578697374696e672f6275726e74204e4654",
                              "id": 6514,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22346:31:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dc6b072f9dcb9a5cd9efd4703d0dd3eb9f2653b441c9fc483eba48e59797e83d",
                                "typeString": "literal_string \"Inventory: existing/burnt NFT\""
                              },
                              "value": "Inventory: existing/burnt NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dc6b072f9dcb9a5cd9efd4703d0dd3eb9f2653b441c9fc483eba48e59797e83d",
                                "typeString": "literal_string \"Inventory: existing/burnt NFT\""
                              }
                            ],
                            "id": 6508,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "22320:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22320:58:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6516,
                        "nodeType": "ExpressionStatement",
                        "src": "22320:58:30"
                      },
                      {
                        "expression": {
                          "id": 6527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 6517,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2383,
                              "src": "22389:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 6519,
                            "indexExpression": {
                              "id": 6518,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6494,
                              "src": "22397:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "22389:11:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 6524,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6492,
                                    "src": "22419:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 6523,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "22411:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 6522,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "22411:7:30",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6525,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22411:11:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 6521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "22403:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 6520,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "22403:7:30",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22403:20:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22389:34:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6528,
                        "nodeType": "ExpressionStatement",
                        "src": "22389:34:30"
                      },
                      {
                        "condition": {
                          "id": 6530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "22438:8:30",
                          "subExpression": {
                            "id": 6529,
                            "name": "isBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6498,
                            "src": "22439:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6556,
                        "nodeType": "IfStatement",
                        "src": "22434:376:30",
                        "trueBody": {
                          "id": 6555,
                          "nodeType": "Block",
                          "src": "22448:362:30",
                          "statements": [
                            {
                              "assignments": [
                                6532
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6532,
                                  "mutability": "mutable",
                                  "name": "collectionId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6555,
                                  "src": "22462:20:30",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6531,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "22462:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6537,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 6535,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2354,
                                    "src": "22513:21:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 6533,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6494,
                                    "src": "22485:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6534,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getNonFungibleCollection",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3351,
                                  "src": "22485:27:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 6536,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22485:50:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "22462:73:30"
                            },
                            {
                              "expression": {
                                "id": 6541,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "22699:25:30",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 6538,
                                    "name": "_supplies",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2379,
                                    "src": "22701:9:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 6540,
                                  "indexExpression": {
                                    "id": 6539,
                                    "name": "collectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6532,
                                    "src": "22711:12:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "22701:23:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6542,
                              "nodeType": "ExpressionStatement",
                              "src": "22699:25:30"
                            },
                            {
                              "expression": {
                                "id": 6548,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "22738:29:30",
                                "subExpression": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 6543,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2375,
                                      "src": "22740:9:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 6545,
                                    "indexExpression": {
                                      "id": 6544,
                                      "name": "collectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6532,
                                      "src": "22750:12:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22740:23:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 6547,
                                  "indexExpression": {
                                    "id": 6546,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6492,
                                    "src": "22764:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "22740:27:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6549,
                              "nodeType": "ExpressionStatement",
                              "src": "22738:29:30"
                            },
                            {
                              "expression": {
                                "id": 6553,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "22781:18:30",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 6550,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4624,
                                    "src": "22783:12:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 6552,
                                  "indexExpression": {
                                    "id": 6551,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6492,
                                    "src": "22796:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "22783:16:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6554,
                              "nodeType": "ExpressionStatement",
                              "src": "22781:18:30"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 6558,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mintNFT",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6499,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6492,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 6558,
                        "src": "22160:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6491,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22160:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6494,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 6558,
                        "src": "22180:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6493,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22180:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6496,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 6558,
                        "src": "22200:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6495,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22200:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6498,
                        "mutability": "mutable",
                        "name": "isBatch",
                        "nodeType": "VariableDeclaration",
                        "scope": 6558,
                        "src": "22223:12:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6497,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "22223:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22150:91:30"
                  },
                  "returnParameters": {
                    "id": 6500,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22251:0:30"
                  },
                  "scope": 6851,
                  "src": "22133:683:30",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6621,
                    "nodeType": "Block",
                    "src": "22974:423:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6572,
                              "name": "operatable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6568,
                              "src": "22992:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                              "id": 6573,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23004:32:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              },
                              "value": "Inventory: non-approved sender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              }
                            ],
                            "id": 6571,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "22984:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22984:53:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6575,
                        "nodeType": "ExpressionStatement",
                        "src": "22984:53:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6579,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6577,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6566,
                                "src": "23055:5:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 6578,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "23064:1:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "23055:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2076616c7565",
                              "id": 6580,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23067:23:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              },
                              "value": "Inventory: zero value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              }
                            ],
                            "id": 6576,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "23047:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23047:44:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6582,
                        "nodeType": "ExpressionStatement",
                        "src": "23047:44:30"
                      },
                      {
                        "assignments": [
                          6584
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6584,
                            "mutability": "mutable",
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 6621,
                            "src": "23101:15:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6583,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23101:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6590,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 6585,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2375,
                              "src": "23119:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 6587,
                            "indexExpression": {
                              "id": 6586,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6564,
                              "src": "23129:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "23119:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 6589,
                          "indexExpression": {
                            "id": 6588,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6560,
                            "src": "23133:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "23119:19:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23101:37:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6592,
                                "name": "balance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6584,
                                "src": "23156:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 6593,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6566,
                                "src": "23167:5:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "23156:16:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365",
                              "id": 6595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23174:31:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_82c893371492309285d50bc6a7cf0711f02e83a8e143785e5e0b985266953be1",
                                "typeString": "literal_string \"Inventory: not enough balance\""
                              },
                              "value": "Inventory: not enough balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_82c893371492309285d50bc6a7cf0711f02e83a8e143785e5e0b985266953be1",
                                "typeString": "literal_string \"Inventory: not enough balance\""
                              }
                            ],
                            "id": 6591,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "23148:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23148:58:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6597,
                        "nodeType": "ExpressionStatement",
                        "src": "23148:58:30"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 6600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6598,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6560,
                            "src": "23220:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6599,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6562,
                            "src": "23228:2:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "23220:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6620,
                        "nodeType": "IfStatement",
                        "src": "23216:175:30",
                        "trueBody": {
                          "id": 6619,
                          "nodeType": "Block",
                          "src": "23232:159:30",
                          "statements": [
                            {
                              "expression": {
                                "id": 6609,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 6601,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2375,
                                      "src": "23246:9:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 6604,
                                    "indexExpression": {
                                      "id": 6602,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6564,
                                      "src": "23256:2:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "23246:13:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 6605,
                                  "indexExpression": {
                                    "id": 6603,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6560,
                                    "src": "23260:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "23246:19:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6608,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6606,
                                    "name": "balance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6584,
                                    "src": "23268:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 6607,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6566,
                                    "src": "23278:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "23268:15:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "23246:37:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6610,
                              "nodeType": "ExpressionStatement",
                              "src": "23246:37:30"
                            },
                            {
                              "expression": {
                                "id": 6617,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 6611,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2375,
                                      "src": "23354:9:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 6614,
                                    "indexExpression": {
                                      "id": 6612,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6564,
                                      "src": "23364:2:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "23354:13:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 6615,
                                  "indexExpression": {
                                    "id": 6613,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6562,
                                    "src": "23368:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "23354:17:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 6616,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6566,
                                  "src": "23375:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "23354:26:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6618,
                              "nodeType": "ExpressionStatement",
                              "src": "23354:26:30"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 6622,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferFungible",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6569,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6560,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 6622,
                        "src": "22858:12:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6559,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22858:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6562,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 6622,
                        "src": "22880:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6561,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22880:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6564,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 6622,
                        "src": "22900:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6563,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22900:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6566,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 6622,
                        "src": "22920:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6565,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22920:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6568,
                        "mutability": "mutable",
                        "name": "operatable",
                        "nodeType": "VariableDeclaration",
                        "scope": 6622,
                        "src": "22943:15:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6567,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "22943:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22848:116:30"
                  },
                  "returnParameters": {
                    "id": 6570,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22974:0:30"
                  },
                  "scope": 6851,
                  "src": "22822:575:30",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6716,
                    "nodeType": "Block",
                    "src": "23580:591:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6640,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6638,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6630,
                                "src": "23598:5:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 6639,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "23607:1:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "23598:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2077726f6e67204e46542076616c7565",
                              "id": 6641,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23610:28:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              },
                              "value": "Inventory: wrong NFT value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              }
                            ],
                            "id": 6637,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "23590:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23590:49:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6643,
                        "nodeType": "ExpressionStatement",
                        "src": "23590:49:30"
                      },
                      {
                        "assignments": [
                          6645
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6645,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 6716,
                            "src": "23649:13:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6644,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23649:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6649,
                        "initialValue": {
                          "baseExpression": {
                            "id": 6646,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2383,
                            "src": "23665:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 6648,
                          "indexExpression": {
                            "id": 6647,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6628,
                            "src": "23673:2:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "23665:11:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23649:27:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6651,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6624,
                                "src": "23694:4:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 6656,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6645,
                                        "src": "23718:5:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 6655,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "23710:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 6654,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "23710:7:30",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 6657,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "23710:14:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 6653,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "23702:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6652,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "23702:7:30",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6658,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23702:23:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "23694:31:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6f776e6564204e4654",
                              "id": 6660,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23727:26:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cb299a32a7af2eac6d18f568f522d952ea6c98cc6d0ce67299c271d8f74679c8",
                                "typeString": "literal_string \"Inventory: non-owned NFT\""
                              },
                              "value": "Inventory: non-owned NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cb299a32a7af2eac6d18f568f522d952ea6c98cc6d0ce67299c271d8f74679c8",
                                "typeString": "literal_string \"Inventory: non-owned NFT\""
                              }
                            ],
                            "id": 6650,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "23686:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23686:68:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6662,
                        "nodeType": "ExpressionStatement",
                        "src": "23686:68:30"
                      },
                      {
                        "condition": {
                          "id": 6664,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "23768:11:30",
                          "subExpression": {
                            "id": 6663,
                            "name": "operatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6632,
                            "src": "23769:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6683,
                        "nodeType": "IfStatement",
                        "src": "23764:163:30",
                        "trueBody": {
                          "id": 6682,
                          "nodeType": "Block",
                          "src": "23781:146:30",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 6678,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6670,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 6668,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 6666,
                                              "name": "owner",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6645,
                                              "src": "23804:5:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "id": 6667,
                                              "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4616,
                                              "src": "23812:26:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "23804:34:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 6669,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "23842:1:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "23804:39:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 6671,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "23803:41:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 6677,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 6672,
                                          "name": "_msgSender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 312,
                                          "src": "23848:10:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                            "typeString": "function () view returns (address payable)"
                                          }
                                        },
                                        "id": 6673,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "23848:12:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "baseExpression": {
                                          "id": 6674,
                                          "name": "_nftApprovals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4628,
                                          "src": "23864:13:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                            "typeString": "mapping(uint256 => address)"
                                          }
                                        },
                                        "id": 6676,
                                        "indexExpression": {
                                          "id": 6675,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6628,
                                          "src": "23878:2:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "23864:17:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "23848:33:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "23803:78:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                                    "id": 6679,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23883:32:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                      "typeString": "literal_string \"Inventory: non-approved sender\""
                                    },
                                    "value": "Inventory: non-approved sender"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                      "typeString": "literal_string \"Inventory: non-approved sender\""
                                    }
                                  ],
                                  "id": 6665,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "23795:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 6680,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23795:121:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6681,
                              "nodeType": "ExpressionStatement",
                              "src": "23795:121:30"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 6694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 6684,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2383,
                              "src": "23936:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 6686,
                            "indexExpression": {
                              "id": 6685,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6628,
                              "src": "23944:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "23936:11:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 6691,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6626,
                                    "src": "23966:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 6690,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "23958:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 6689,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "23958:7:30",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6692,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23958:11:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 6688,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "23950:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 6687,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "23950:7:30",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6693,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23950:20:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23936:34:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6695,
                        "nodeType": "ExpressionStatement",
                        "src": "23936:34:30"
                      },
                      {
                        "condition": {
                          "id": 6697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "23984:8:30",
                          "subExpression": {
                            "id": 6696,
                            "name": "isBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6634,
                            "src": "23985:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6715,
                        "nodeType": "IfStatement",
                        "src": "23980:185:30",
                        "trueBody": {
                          "id": 6714,
                          "nodeType": "Block",
                          "src": "23994:171:30",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6699,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6624,
                                    "src": "24035:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 6700,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6626,
                                    "src": "24041:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 6701,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24045:1:30",
                                    "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_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "id": 6698,
                                  "name": "_transferNFTUpdateBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6744,
                                  "src": "24008:26:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 6702,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24008:39:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6703,
                              "nodeType": "ExpressionStatement",
                              "src": "24008:39:30"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6705,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6624,
                                    "src": "24090:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 6706,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6626,
                                    "src": "24096:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 6709,
                                        "name": "_collectionMaskLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2354,
                                        "src": "24128:21:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 6707,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6628,
                                        "src": "24100:2:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 6708,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getNonFungibleCollection",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3351,
                                      "src": "24100:27:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 6710,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "24100:50:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 6711,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24152:1:30",
                                    "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": 6704,
                                  "name": "_transferNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6777,
                                  "src": "24061:28:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256)"
                                  }
                                },
                                "id": 6712,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24061:93:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6713,
                              "nodeType": "ExpressionStatement",
                              "src": "24061:93:30"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 6717,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferNFT",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6635,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6624,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 6717,
                        "src": "23434:12:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6623,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23434:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6626,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 6717,
                        "src": "23456:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6625,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23456:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6628,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 6717,
                        "src": "23476:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6627,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23476:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6630,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 6717,
                        "src": "23496:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6629,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23496:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6632,
                        "mutability": "mutable",
                        "name": "operatable",
                        "nodeType": "VariableDeclaration",
                        "scope": 6717,
                        "src": "23519:15:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6631,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23519:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6634,
                        "mutability": "mutable",
                        "name": "isBatch",
                        "nodeType": "VariableDeclaration",
                        "scope": 6717,
                        "src": "23544:12:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6633,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23544:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23424:138:30"
                  },
                  "returnParameters": {
                    "id": 6636,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23580:0:30"
                  },
                  "scope": 6851,
                  "src": "23403:768:30",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6743,
                    "nodeType": "Block",
                    "src": "24302:256:30",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 6728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6726,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6719,
                            "src": "24316:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6727,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6721,
                            "src": "24324:2:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "24316:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6742,
                        "nodeType": "IfStatement",
                        "src": "24312:240:30",
                        "trueBody": {
                          "id": 6741,
                          "nodeType": "Block",
                          "src": "24328:224:30",
                          "statements": [
                            {
                              "expression": {
                                "id": 6733,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 6729,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4624,
                                    "src": "24415:12:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 6731,
                                  "indexExpression": {
                                    "id": 6730,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6719,
                                    "src": "24428:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "24415:18:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 6732,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6723,
                                  "src": "24437:6:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24415:28:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6734,
                              "nodeType": "ExpressionStatement",
                              "src": "24415:28:30"
                            },
                            {
                              "expression": {
                                "id": 6739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 6735,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4624,
                                    "src": "24515:12:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 6737,
                                  "indexExpression": {
                                    "id": 6736,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6721,
                                    "src": "24528:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "24515:16:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 6738,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6723,
                                  "src": "24535:6:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24515:26:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6740,
                              "nodeType": "ExpressionStatement",
                              "src": "24515:26:30"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 6744,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferNFTUpdateBalances",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6724,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6719,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 6744,
                        "src": "24222:12:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6718,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24222:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6721,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 6744,
                        "src": "24244:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6720,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24244:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6723,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6744,
                        "src": "24264:14:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6722,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24264:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24212:72:30"
                  },
                  "returnParameters": {
                    "id": 6725,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24302:0:30"
                  },
                  "scope": 6851,
                  "src": "24177:381:30",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6776,
                    "nodeType": "Block",
                    "src": "24721:277:30",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 6757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6755,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6746,
                            "src": "24735:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6756,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6748,
                            "src": "24743:2:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "24735:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6775,
                        "nodeType": "IfStatement",
                        "src": "24731:261:30",
                        "trueBody": {
                          "id": 6774,
                          "nodeType": "Block",
                          "src": "24747:245:30",
                          "statements": [
                            {
                              "expression": {
                                "id": 6764,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 6758,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2375,
                                      "src": "24834:9:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 6761,
                                    "indexExpression": {
                                      "id": 6759,
                                      "name": "collectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6750,
                                      "src": "24844:12:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "24834:23:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 6762,
                                  "indexExpression": {
                                    "id": 6760,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6746,
                                    "src": "24858:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "24834:29:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 6763,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6752,
                                  "src": "24867:6:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24834:39:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6765,
                              "nodeType": "ExpressionStatement",
                              "src": "24834:39:30"
                            },
                            {
                              "expression": {
                                "id": 6772,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 6766,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2375,
                                      "src": "24944:9:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 6769,
                                    "indexExpression": {
                                      "id": 6767,
                                      "name": "collectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6750,
                                      "src": "24954:12:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "24944:23:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 6770,
                                  "indexExpression": {
                                    "id": 6768,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6748,
                                    "src": "24968:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "24944:27:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 6771,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6752,
                                  "src": "24975:6:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24944:37:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6773,
                              "nodeType": "ExpressionStatement",
                              "src": "24944:37:30"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 6777,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferNFTUpdateCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6753,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6746,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 6777,
                        "src": "24611:12:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6745,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24611:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6748,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 6777,
                        "src": "24633:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6747,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24633:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6750,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 6777,
                        "src": "24653:20:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6749,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24653:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6752,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6777,
                        "src": "24683:14:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6751,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24683:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24601:102:30"
                  },
                  "returnParameters": {
                    "id": 6754,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24721:0:30"
                  },
                  "scope": 6851,
                  "src": "24564:434:30",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6817,
                    "nodeType": "Block",
                    "src": "25291:790:30",
                    "statements": [
                      {
                        "assignments": [
                          6786
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6786,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 6817,
                            "src": "25301:12:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 6785,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "25301:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6787,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25301:12:30"
                      },
                      {
                        "assignments": [
                          6789
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6789,
                            "mutability": "mutable",
                            "name": "result",
                            "nodeType": "VariableDeclaration",
                            "scope": 6817,
                            "src": "25323:11:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 6788,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "25323:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6790,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25323:11:30"
                      },
                      {
                        "assignments": [
                          6792
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6792,
                            "mutability": "mutable",
                            "name": "staticCallData",
                            "nodeType": "VariableDeclaration",
                            "scope": 6817,
                            "src": "25344:27:30",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 6791,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "25344:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6804,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6796,
                                    "name": "IERC165",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 218,
                                    "src": "25402:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  ],
                                  "id": 6795,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "25397:4:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 6797,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25397:13:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$218",
                                  "typeString": "type(contract IERC165)"
                                }
                              },
                              "id": 6798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "25397:25:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6800,
                                    "name": "IERC1155TokenReceiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3788,
                                    "src": "25429:21:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$3788_$",
                                      "typeString": "type(contract IERC1155TokenReceiver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$3788_$",
                                      "typeString": "type(contract IERC1155TokenReceiver)"
                                    }
                                  ],
                                  "id": 6799,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "25424:4:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 6801,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25424:27:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155TokenReceiver_$3788",
                                  "typeString": "type(contract IERC1155TokenReceiver)"
                                }
                              },
                              "id": 6802,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "25424:39:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "id": 6793,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "25374:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 6794,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSelector",
                            "nodeType": "MemberAccess",
                            "src": "25374:22:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes4) pure returns (bytes memory)"
                            }
                          },
                          "id": 6803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25374:90:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25344:120:30"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "25483:380:30",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25497:41:30",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25517:4:30",
                                    "type": "",
                                    "value": "0x20"
                                  },
                                  {
                                    "name": "staticCallData",
                                    "nodeType": "YulIdentifier",
                                    "src": "25523:14:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25513:3:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25513:25:30"
                              },
                              "variables": [
                                {
                                  "name": "call_ptr",
                                  "nodeType": "YulTypedName",
                                  "src": "25501:8:30",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25551:38:30",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "staticCallData",
                                    "nodeType": "YulIdentifier",
                                    "src": "25574:14:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25568:5:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25568:21:30"
                              },
                              "variables": [
                                {
                                  "name": "call_size",
                                  "nodeType": "YulTypedName",
                                  "src": "25555:9:30",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25602:25:30",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25622:4:30",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25616:5:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25616:11:30"
                              },
                              "variables": [
                                {
                                  "name": "output",
                                  "nodeType": "YulTypedName",
                                  "src": "25606:6:30",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "output",
                                    "nodeType": "YulIdentifier",
                                    "src": "25706:6:30"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25714:3:30",
                                    "type": "",
                                    "value": "0x0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25699:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25699:19:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25699:19:30"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25731:74:30",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25753:5:30",
                                    "type": "",
                                    "value": "10000"
                                  },
                                  {
                                    "name": "_contract",
                                    "nodeType": "YulIdentifier",
                                    "src": "25760:9:30"
                                  },
                                  {
                                    "name": "call_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "25771:8:30"
                                  },
                                  {
                                    "name": "call_size",
                                    "nodeType": "YulIdentifier",
                                    "src": "25781:9:30"
                                  },
                                  {
                                    "name": "output",
                                    "nodeType": "YulIdentifier",
                                    "src": "25792:6:30"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25800:4:30",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "staticcall",
                                  "nodeType": "YulIdentifier",
                                  "src": "25742:10:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25742:63:30"
                              },
                              "variableNames": [
                                {
                                  "name": "success",
                                  "nodeType": "YulIdentifier",
                                  "src": "25731:7:30"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25830:23:30",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "output",
                                    "nodeType": "YulIdentifier",
                                    "src": "25846:6:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25840:5:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25840:13:30"
                              },
                              "variableNames": [
                                {
                                  "name": "result",
                                  "nodeType": "YulIdentifier",
                                  "src": "25830:6:30"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 6780,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25760:9:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6789,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25830:6:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6792,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25523:14:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6792,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25574:14:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6786,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25731:7:30",
                            "valueSize": 1
                          }
                        ],
                        "id": 6805,
                        "nodeType": "InlineAssembly",
                        "src": "25474:389:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6810,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 6807,
                                  "name": "gasleft",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -7,
                                  "src": "26024:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 6808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26024:9:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "313538",
                                "id": 6809,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "26036:3:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_158_by_1",
                                  "typeString": "int_const 158"
                                },
                                "value": "158"
                              },
                              "src": "26024:15:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 6806,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "26017:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 6811,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26017:23:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6812,
                        "nodeType": "ExpressionStatement",
                        "src": "26017:23:30"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 6815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6813,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6786,
                            "src": "26057:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "id": 6814,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6789,
                            "src": "26068:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "26057:17:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 6784,
                        "id": 6816,
                        "nodeType": "Return",
                        "src": "26050:24:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6778,
                    "nodeType": "StructuredDocumentation",
                    "src": "25004:201:30",
                    "text": " Queries whether a contract implements ERC1155TokenReceiver.\n @param _contract address of the contract.\n @return wheter the given contract implements ERC1155TokenReceiver."
                  },
                  "id": 6818,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_isERC1155TokenReceiver",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6781,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6780,
                        "mutability": "mutable",
                        "name": "_contract",
                        "nodeType": "VariableDeclaration",
                        "scope": 6818,
                        "src": "25243:17:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6779,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "25243:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25242:19:30"
                  },
                  "returnParameters": {
                    "id": 6784,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6783,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 6818,
                        "src": "25285:4:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6782,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "25285:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25284:6:30"
                  },
                  "scope": 6851,
                  "src": "25210:871:30",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6849,
                    "nodeType": "Block",
                    "src": "26637:197:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 6845,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 6835,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 312,
                                      "src": "26705:10:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                        "typeString": "function () view returns (address payable)"
                                      }
                                    },
                                    "id": 6836,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "26705:12:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 6837,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6821,
                                    "src": "26719:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 6838,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6825,
                                    "src": "26725:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 6839,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6827,
                                    "src": "26732:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 6832,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6823,
                                        "src": "26684:2:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 6831,
                                      "name": "IERC721Receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13839,
                                      "src": "26668:15:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$13839_$",
                                        "typeString": "type(contract IERC721Receiver)"
                                      }
                                    },
                                    "id": 6833,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "26668:19:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC721Receiver_$13839",
                                      "typeString": "contract IERC721Receiver"
                                    }
                                  },
                                  "id": 6834,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onERC721Received",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13838,
                                  "src": "26668:36:30",
                                  "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": 6840,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26668:69:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 6842,
                                      "name": "IERC721Receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13839,
                                      "src": "26746:15:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$13839_$",
                                        "typeString": "type(contract IERC721Receiver)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$13839_$",
                                        "typeString": "type(contract IERC721Receiver)"
                                      }
                                    ],
                                    "id": 6841,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "26741:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 6843,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26741:21:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Receiver_$13839",
                                    "typeString": "type(contract IERC721Receiver)"
                                  }
                                },
                                "id": 6844,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "26741:33:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "26668:106:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e736665722072656675736564",
                              "id": 6846,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26788:29:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f586869b43ba3901b74c780121b14f86de66ae1e2d38e1ac43de058c29664070",
                                "typeString": "literal_string \"Inventory: transfer refused\""
                              },
                              "value": "Inventory: transfer refused"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f586869b43ba3901b74c780121b14f86de66ae1e2d38e1ac43de058c29664070",
                                "typeString": "literal_string \"Inventory: transfer refused\""
                              }
                            ],
                            "id": 6830,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "26647:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6847,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26647:180:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6848,
                        "nodeType": "ExpressionStatement",
                        "src": "26647:180:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6819,
                    "nodeType": "StructuredDocumentation",
                    "src": "26087:407:30",
                    "text": " Calls {IERC721Receiver-onERC721Received} on a target contract.\n @dev Reverts if `to` is not a contract.\n @dev Reverts if the call to the target fails or is refused.\n @param from Previous token owner.\n @param to New token owner.\n @param nftId Identifier of the token transferred.\n @param data Optional data to send along with the receiver contract call."
                  },
                  "id": 6850,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callOnERC721Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6828,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6821,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 6850,
                        "src": "26539:12:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6820,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26539:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6823,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 6850,
                        "src": "26561:10:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6822,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26561:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6825,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 6850,
                        "src": "26581:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6824,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26581:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6827,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 6850,
                        "src": "26604:17:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6826,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "26604:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26529:98:30"
                  },
                  "returnParameters": {
                    "id": 6829,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "26637:0:30"
                  },
                  "scope": 6851,
                  "src": "26499:335:30",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 6852,
              "src": "1301:25535:30"
            }
          ],
          "src": "33:26804:30"
        },
        "id": 30
      },
      "contracts/token/ERC1155721/ERC1155721InventoryBurnable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/ERC1155721InventoryBurnable.sol",
          "exportedSymbols": {
            "ERC1155721Inventory": [
              6851
            ],
            "ERC1155721InventoryBurnable": [
              7494
            ],
            "ERC1155InventoryIdentifiersLib": [
              3370
            ],
            "IERC1155721InventoryBurnable": [
              7677
            ],
            "IERC165": [
              218
            ]
          },
          "id": 7495,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6853,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:31"
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol",
              "file": "./../ERC1155/ERC1155InventoryIdentifiersLib.sol",
              "id": 6855,
              "nodeType": "ImportDirective",
              "scope": 7495,
              "sourceUnit": 3371,
              "src": "66:95:31",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6854,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:30:31",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 6857,
              "nodeType": "ImportDirective",
              "scope": 7495,
              "sourceUnit": 219,
              "src": "162:93:31",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6856,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "170:7:31",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryBurnable.sol",
              "file": "./interfaces/IERC1155721InventoryBurnable.sol",
              "id": 6859,
              "nodeType": "ImportDirective",
              "scope": 7495,
              "sourceUnit": 7678,
              "src": "256:91:31",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6858,
                    "name": "IERC1155721InventoryBurnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "264:28:31",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/ERC1155721Inventory.sol",
              "file": "./ERC1155721Inventory.sol",
              "id": 6861,
              "nodeType": "ImportDirective",
              "scope": 7495,
              "sourceUnit": 6852,
              "src": "348:62:31",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6860,
                    "name": "ERC1155721Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "356:19:31",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 6863,
                    "name": "IERC1155721InventoryBurnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7677,
                    "src": "706:28:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155721InventoryBurnable_$7677",
                      "typeString": "contract IERC1155721InventoryBurnable"
                    }
                  },
                  "id": 6864,
                  "nodeType": "InheritanceSpecifier",
                  "src": "706:28:31"
                },
                {
                  "baseName": {
                    "id": 6865,
                    "name": "ERC1155721Inventory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6851,
                    "src": "736:19:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155721Inventory_$6851",
                      "typeString": "contract ERC1155721Inventory"
                    }
                  },
                  "id": 6866,
                  "nodeType": "InheritanceSpecifier",
                  "src": "736:19:31"
                }
              ],
              "contractDependencies": [
                218,
                322,
                2882,
                3530,
                3633,
                3696,
                3738,
                3750,
                6851,
                7642,
                7677,
                13702,
                13717,
                13790
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 6862,
                "nodeType": "StructuredDocumentation",
                "src": "412:244:31",
                "text": " @title ERC1155721Inventory, an ERC1155Inventory with additional support for ERC721, burnable version.\n @dev The function `uri(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`."
              },
              "fullyImplemented": false,
              "id": 7494,
              "linearizedBaseContracts": [
                7494,
                6851,
                2882,
                3738,
                3750,
                13790,
                7642,
                13717,
                13702,
                3633,
                3696,
                3530,
                218,
                322,
                7677
              ],
              "name": "ERC1155721InventoryBurnable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 6869,
                  "libraryName": {
                    "id": 6867,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3370,
                    "src": "768:30:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155InventoryIdentifiersLib_$3370",
                      "typeString": "library ERC1155InventoryIdentifiersLib"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "762:49:31",
                  "typeName": {
                    "id": 6868,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "803:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "body": {
                    "id": 6883,
                    "nodeType": "Block",
                    "src": "991:2:31",
                    "statements": []
                  },
                  "id": 6884,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 6878,
                          "name": "name_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6871,
                          "src": "953:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "id": 6879,
                          "name": "symbol_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6873,
                          "src": "960:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "id": 6880,
                          "name": "collectionMaskLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6875,
                          "src": "969:20:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 6881,
                      "modifierName": {
                        "id": 6877,
                        "name": "ERC1155721Inventory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6851,
                        "src": "933:19:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155721Inventory_$6851_$",
                          "typeString": "type(contract ERC1155721Inventory)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "933:57:31"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6876,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6871,
                        "mutability": "mutable",
                        "name": "name_",
                        "nodeType": "VariableDeclaration",
                        "scope": 6884,
                        "src": "838:19:31",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6870,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "838:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6873,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nodeType": "VariableDeclaration",
                        "scope": 6884,
                        "src": "867:21:31",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6872,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "867:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6875,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 6884,
                        "src": "898:28:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6874,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "898:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "828:104:31"
                  },
                  "returnParameters": {
                    "id": 6882,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "991:0:31"
                  },
                  "scope": 7494,
                  "src": "817:176:31",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    4685
                  ],
                  "body": {
                    "id": 6905,
                    "nodeType": "Block",
                    "src": "1247:125:31",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 6903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 6898,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 6893,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6887,
                              "src": "1264:11:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6895,
                                    "name": "IERC1155721InventoryBurnable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7677,
                                    "src": "1284:28:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155721InventoryBurnable_$7677_$",
                                      "typeString": "type(contract IERC1155721InventoryBurnable)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155721InventoryBurnable_$7677_$",
                                      "typeString": "type(contract IERC1155721InventoryBurnable)"
                                    }
                                  ],
                                  "id": 6894,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1279:4:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 6896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1279:34:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155721InventoryBurnable_$7677",
                                  "typeString": "type(contract IERC1155721InventoryBurnable)"
                                }
                              },
                              "id": 6897,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1279:46:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "1264:61:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 6901,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6887,
                                "src": "1353:11:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 6899,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "1329:5:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_super$_ERC1155721InventoryBurnable_$7494",
                                  "typeString": "contract super ERC1155721InventoryBurnable"
                                }
                              },
                              "id": 6900,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4685,
                              "src": "1329:23:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 6902,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1329:36:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1264:101:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 6892,
                        "id": 6904,
                        "nodeType": "Return",
                        "src": "1257:108:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6885,
                    "nodeType": "StructuredDocumentation",
                    "src": "1128:23:31",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 6906,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6889,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1223:8:31"
                  },
                  "parameters": {
                    "id": 6888,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6887,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 6906,
                        "src": "1183:18:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 6886,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1183:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1182:20:31"
                  },
                  "returnParameters": {
                    "id": 6892,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6891,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 6906,
                        "src": "1241:4:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6890,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1241:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1240:6:31"
                  },
                  "scope": 7494,
                  "src": "1156:216:31",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7655
                  ],
                  "body": {
                    "id": 6980,
                    "nodeType": "Block",
                    "src": "1669:511:31",
                    "statements": [
                      {
                        "assignments": [
                          6918
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6918,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 6980,
                            "src": "1679:14:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 6917,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1679:7:31",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6921,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6919,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "1696:10:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 6920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1696:12:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1679:29:31"
                      },
                      {
                        "assignments": [
                          6923
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6923,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 6980,
                            "src": "1718:15:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 6922,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1718:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6928,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6925,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6909,
                              "src": "1750:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6926,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6918,
                              "src": "1756:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 6924,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2815,
                            "src": "1736:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 6927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1736:27:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1718:45:31"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 6929,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6911,
                              "src": "1778:2:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6930,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3310,
                            "src": "1778:18:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (bool)"
                            }
                          },
                          "id": 6931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1778:20:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "arguments": [
                              {
                                "id": 6942,
                                "name": "_collectionMaskLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2354,
                                "src": "1899:21:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6940,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6911,
                                "src": "1877:2:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6941,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isNonFungibleToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3334,
                              "src": "1877:21:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (bool)"
                              }
                            },
                            "id": 6943,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1877:44:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 6966,
                            "nodeType": "Block",
                            "src": "2047:60:31",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                      "id": 6963,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2068:27:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      },
                                      "value": "Inventory: not a token id"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      }
                                    ],
                                    "id": 6962,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "2061:6:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 6964,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2061:35:31",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 6965,
                                "nodeType": "ExpressionStatement",
                                "src": "2061:35:31"
                              }
                            ]
                          },
                          "id": 6967,
                          "nodeType": "IfStatement",
                          "src": "1873:234:31",
                          "trueBody": {
                            "id": 6961,
                            "nodeType": "Block",
                            "src": "1923:118:31",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 6945,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6909,
                                      "src": "1946:4:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 6946,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6911,
                                      "src": "1952:2:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 6947,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6913,
                                      "src": "1956:5:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 6948,
                                      "name": "operatable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6923,
                                      "src": "1963:10:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 6949,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1975:5:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 6944,
                                    "name": "_burnNFT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7469,
                                    "src": "1937:8:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                                      "typeString": "function (address,uint256,uint256,bool,bool)"
                                    }
                                  },
                                  "id": 6950,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1937:44:31",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 6951,
                                "nodeType": "ExpressionStatement",
                                "src": "1937:44:31"
                              },
                              {
                                "eventCall": {
                                  "arguments": [
                                    {
                                      "id": 6953,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6909,
                                      "src": "2009:4:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 6956,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2023:1:31",
                                          "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": 6955,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2015:7:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 6954,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2015:7:31",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 6957,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2015:10:31",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    {
                                      "id": 6958,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6911,
                                      "src": "2027:2:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 6952,
                                    "name": "Transfer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7519,
                                    "src": "2000:8:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                      "typeString": "function (address,address,uint256)"
                                    }
                                  },
                                  "id": 6959,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2000:30:31",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 6960,
                                "nodeType": "EmitStatement",
                                "src": "1995:35:31"
                              }
                            ]
                          }
                        },
                        "id": 6968,
                        "nodeType": "IfStatement",
                        "src": "1774:333:31",
                        "trueBody": {
                          "id": 6939,
                          "nodeType": "Block",
                          "src": "1800:67:31",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6933,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6909,
                                    "src": "1828:4:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 6934,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6911,
                                    "src": "1834:2:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 6935,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6913,
                                    "src": "1838:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 6936,
                                    "name": "operatable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6923,
                                    "src": "1845:10:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 6932,
                                  "name": "_burnFungible",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7384,
                                  "src": "1814:13:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,bool)"
                                  }
                                },
                                "id": 6937,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1814:42:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6938,
                              "nodeType": "ExpressionStatement",
                              "src": "1814:42:31"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 6970,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6918,
                              "src": "2137:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6971,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6909,
                              "src": "2145:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 6974,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2159:1:31",
                                  "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": 6973,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2151:7:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6972,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2151:7:31",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6975,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2151:10:31",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 6976,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6911,
                              "src": "2163:2:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6977,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6913,
                              "src": "2167:5:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6969,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3430,
                            "src": "2122:14:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 6978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2122:51:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6979,
                        "nodeType": "EmitStatement",
                        "src": "2117:56:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6907,
                    "nodeType": "StructuredDocumentation",
                    "src": "1507:44:31",
                    "text": "@inheritdoc IERC1155721InventoryBurnable"
                  },
                  "functionSelector": "124d91e5",
                  "id": 6981,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6915,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1660:8:31"
                  },
                  "parameters": {
                    "id": 6914,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6909,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 6981,
                        "src": "1583:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6908,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1583:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6911,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 6981,
                        "src": "1605:10:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6910,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1605:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6913,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 6981,
                        "src": "1625:13:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6912,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1625:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1573:71:31"
                  },
                  "returnParameters": {
                    "id": 6916,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1669:0:31"
                  },
                  "scope": 7494,
                  "src": "1556:624:31",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7667
                  ],
                  "body": {
                    "id": 7169,
                    "nodeType": "Block",
                    "src": "2373:1823:31",
                    "statements": [
                      {
                        "assignments": [
                          6995
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6995,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 7169,
                            "src": "2383:14:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6994,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2383:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6998,
                        "initialValue": {
                          "expression": {
                            "id": 6996,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6987,
                            "src": "2400:3:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 6997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "2400:10:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2383:27:31"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7003,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7000,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6995,
                                "src": "2428:6:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 7001,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6990,
                                  "src": "2438:6:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 7002,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2438:13:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2428:23:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 7004,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2453:32:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              },
                              "value": "Inventory: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              }
                            ],
                            "id": 6999,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2420:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2420:66:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7006,
                        "nodeType": "ExpressionStatement",
                        "src": "2420:66:31"
                      },
                      {
                        "assignments": [
                          7008
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7008,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 7169,
                            "src": "2497:14:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7007,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2497:7:31",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7011,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 7009,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "2514:10:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 7010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2514:12:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2497:29:31"
                      },
                      {
                        "assignments": [
                          7013
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7013,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 7169,
                            "src": "2536:15:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 7012,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2536:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7018,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 7015,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6984,
                              "src": "2568:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 7016,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7008,
                              "src": "2574:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7014,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2815,
                            "src": "2554:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 7017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2554:27:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2536:45:31"
                      },
                      {
                        "assignments": [
                          7020
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7020,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 7169,
                            "src": "2592:22:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7019,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2592:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7021,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2592:22:31"
                      },
                      {
                        "assignments": [
                          7023
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7023,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 7169,
                            "src": "2624:25:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7022,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2624:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7024,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2624:25:31"
                      },
                      {
                        "assignments": [
                          7026
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7026,
                            "mutability": "mutable",
                            "name": "nftsCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 7169,
                            "src": "2659:17:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7025,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2659:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7027,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2659:17:31"
                      },
                      {
                        "body": {
                          "id": 7135,
                          "nodeType": "Block",
                          "src": "2720:1115:31",
                          "statements": [
                            {
                              "assignments": [
                                7038
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 7038,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 7135,
                                  "src": "2734:10:31",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 7037,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2734:7:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 7042,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 7039,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6987,
                                  "src": "2747:3:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 7041,
                                "indexExpression": {
                                  "id": 7040,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7029,
                                  "src": "2751:1:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2747:6:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2734:19:31"
                            },
                            {
                              "condition": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 7043,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7038,
                                    "src": "2771:2:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7044,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3310,
                                  "src": "2771:18:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (bool)"
                                  }
                                },
                                "id": 7045,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2771:20:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "arguments": [
                                    {
                                      "id": 7058,
                                      "name": "_collectionMaskLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2354,
                                      "src": "2904:21:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 7056,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7038,
                                      "src": "2882:2:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7057,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "isNonFungibleToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3334,
                                    "src": "2882:21:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (bool)"
                                    }
                                  },
                                  "id": 7059,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2882:44:31",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 7132,
                                  "nodeType": "Block",
                                  "src": "3757:68:31",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                            "id": 7129,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3782:27:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            },
                                            "value": "Inventory: not a token id"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            }
                                          ],
                                          "id": 7128,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "3775:6:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 7130,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3775:35:31",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 7131,
                                      "nodeType": "ExpressionStatement",
                                      "src": "3775:35:31"
                                    }
                                  ]
                                },
                                "id": 7133,
                                "nodeType": "IfStatement",
                                "src": "2878:947:31",
                                "trueBody": {
                                  "id": 7127,
                                  "nodeType": "Block",
                                  "src": "2928:823:31",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 7061,
                                            "name": "from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6984,
                                            "src": "2955:4:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 7062,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7038,
                                            "src": "2961:2:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "baseExpression": {
                                              "id": 7063,
                                              "name": "values",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6990,
                                              "src": "2965:6:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                              }
                                            },
                                            "id": 7065,
                                            "indexExpression": {
                                              "id": 7064,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7029,
                                              "src": "2972:1:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "2965:9:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 7066,
                                            "name": "operatable",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7013,
                                            "src": "2976:10:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          {
                                            "hexValue": "74727565",
                                            "id": 7067,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2988:4:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "true"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          ],
                                          "id": 7060,
                                          "name": "_burnNFT",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7469,
                                          "src": "2946:8:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                                            "typeString": "function (address,uint256,uint256,bool,bool)"
                                          }
                                        },
                                        "id": 7068,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2946:47:31",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 7069,
                                      "nodeType": "ExpressionStatement",
                                      "src": "2946:47:31"
                                    },
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "id": 7071,
                                            "name": "from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6984,
                                            "src": "3025:4:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 7074,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3039:1:31",
                                                "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": 7073,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "3031:7:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 7072,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3031:7:31",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 7075,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3031:10:31",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          {
                                            "id": 7076,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7038,
                                            "src": "3043:2:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 7070,
                                          "name": "Transfer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7519,
                                          "src": "3016:8:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,address,uint256)"
                                          }
                                        },
                                        "id": 7077,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3016:30:31",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 7078,
                                      "nodeType": "EmitStatement",
                                      "src": "3011:35:31"
                                    },
                                    {
                                      "assignments": [
                                        7080
                                      ],
                                      "declarations": [
                                        {
                                          "constant": false,
                                          "id": 7080,
                                          "mutability": "mutable",
                                          "name": "nextCollectionId",
                                          "nodeType": "VariableDeclaration",
                                          "scope": 7127,
                                          "src": "3064:24:31",
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "typeName": {
                                            "id": 7079,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3064:7:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "visibility": "internal"
                                        }
                                      ],
                                      "id": 7085,
                                      "initialValue": {
                                        "arguments": [
                                          {
                                            "id": 7083,
                                            "name": "_collectionMaskLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2354,
                                            "src": "3119:21:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 7081,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7038,
                                            "src": "3091:2:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 7082,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getNonFungibleCollection",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3351,
                                          "src": "3091:27:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 7084,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3091:50:31",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "VariableDeclarationStatement",
                                      "src": "3064:77:31"
                                    },
                                    {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7088,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7086,
                                          "name": "nfCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7020,
                                          "src": "3163:14:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 7087,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3181:1:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "3163:19:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 7125,
                                        "nodeType": "Block",
                                        "src": "3307:430:31",
                                        "statements": [
                                          {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7100,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7098,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7080,
                                                "src": "3333:16:31",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "!=",
                                              "rightExpression": {
                                                "id": 7099,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7020,
                                                "src": "3353:14:31",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "3333:34:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 7123,
                                              "nodeType": "Block",
                                              "src": "3651:68:31",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 7121,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "++",
                                                    "prefix": true,
                                                    "src": "3677:19:31",
                                                    "subExpression": {
                                                      "id": 7120,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 7023,
                                                      "src": "3679:17:31",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 7122,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3677:19:31"
                                                }
                                              ]
                                            },
                                            "id": 7124,
                                            "nodeType": "IfStatement",
                                            "src": "3329:390:31",
                                            "trueBody": {
                                              "id": 7119,
                                              "nodeType": "Block",
                                              "src": "3369:276:31",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "arguments": [
                                                      {
                                                        "id": 7102,
                                                        "name": "from",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6984,
                                                        "src": "3420:4:31",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "id": 7103,
                                                        "name": "nfCollectionId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7020,
                                                        "src": "3426:14:31",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      {
                                                        "id": 7104,
                                                        "name": "nfCollectionCount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7023,
                                                        "src": "3442:17:31",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      ],
                                                      "id": 7101,
                                                      "name": "_burnNFTUpdateCollection",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 7493,
                                                      "src": "3395:24:31",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                        "typeString": "function (address,uint256,uint256)"
                                                      }
                                                    },
                                                    "id": 7105,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3395:65:31",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_tuple$__$",
                                                      "typeString": "tuple()"
                                                    }
                                                  },
                                                  "id": 7106,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3395:65:31"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 7109,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 7107,
                                                      "name": "nfCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 7020,
                                                      "src": "3486:14:31",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "id": 7108,
                                                      "name": "nextCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 7080,
                                                      "src": "3503:16:31",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "3486:33:31",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 7110,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3486:33:31"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 7113,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 7111,
                                                      "name": "nftsCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 7026,
                                                      "src": "3545:9:31",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                      "id": 7112,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 7023,
                                                      "src": "3558:17:31",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "3545:30:31",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 7114,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3545:30:31"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 7117,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 7115,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 7023,
                                                      "src": "3601:17:31",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "hexValue": "31",
                                                      "id": 7116,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "3621:1:31",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "3601:21:31",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 7118,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3601:21:31"
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      },
                                      "id": 7126,
                                      "nodeType": "IfStatement",
                                      "src": "3159:578:31",
                                      "trueBody": {
                                        "id": 7097,
                                        "nodeType": "Block",
                                        "src": "3184:117:31",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 7091,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 7089,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7020,
                                                "src": "3206:14:31",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "id": 7090,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7080,
                                                "src": "3223:16:31",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "3206:33:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 7092,
                                            "nodeType": "ExpressionStatement",
                                            "src": "3206:33:31"
                                          },
                                          {
                                            "expression": {
                                              "id": 7095,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 7093,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7023,
                                                "src": "3261:17:31",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "hexValue": "31",
                                                "id": 7094,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3281:1:31",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "3261:21:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 7096,
                                            "nodeType": "ExpressionStatement",
                                            "src": "3261:21:31"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 7134,
                              "nodeType": "IfStatement",
                              "src": "2767:1058:31",
                              "trueBody": {
                                "id": 7055,
                                "nodeType": "Block",
                                "src": "2793:79:31",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 7047,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6984,
                                          "src": "2825:4:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 7048,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7038,
                                          "src": "2831:2:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "baseExpression": {
                                            "id": 7049,
                                            "name": "values",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6990,
                                            "src": "2835:6:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                              "typeString": "uint256[] memory"
                                            }
                                          },
                                          "id": 7051,
                                          "indexExpression": {
                                            "id": 7050,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7029,
                                            "src": "2842:1:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "2835:9:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 7052,
                                          "name": "operatable",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7013,
                                          "src": "2846:10:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "id": 7046,
                                        "name": "_burnFungible",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7384,
                                        "src": "2811:13:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                          "typeString": "function (address,uint256,uint256,bool)"
                                        }
                                      },
                                      "id": 7053,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2811:46:31",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 7054,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2811:46:31"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7031,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7029,
                            "src": "2702:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 7032,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6995,
                            "src": "2707:6:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2702:11:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7136,
                        "initializationExpression": {
                          "assignments": [
                            7029
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 7029,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 7136,
                              "src": "2691:9:31",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 7028,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2691:7:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 7030,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2691:9:31"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 7035,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "2715:3:31",
                            "subExpression": {
                              "id": 7034,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7029,
                              "src": "2717:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7036,
                          "nodeType": "ExpressionStatement",
                          "src": "2715:3:31"
                        },
                        "nodeType": "ForStatement",
                        "src": "2686:1149:31"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7137,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7020,
                            "src": "3849:14:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 7138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3867:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3849:19:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7157,
                        "nodeType": "IfStatement",
                        "src": "3845:277:31",
                        "trueBody": {
                          "id": 7156,
                          "nodeType": "Block",
                          "src": "3870:252:31",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 7141,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6984,
                                    "src": "3909:4:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 7142,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7020,
                                    "src": "3915:14:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 7143,
                                    "name": "nfCollectionCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7023,
                                    "src": "3931:17:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 7140,
                                  "name": "_burnNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7493,
                                  "src": "3884:24:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 7144,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3884:65:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7145,
                              "nodeType": "ExpressionStatement",
                              "src": "3884:65:31"
                            },
                            {
                              "expression": {
                                "id": 7148,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7146,
                                  "name": "nftsCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7026,
                                  "src": "3963:9:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 7147,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7023,
                                  "src": "3976:17:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3963:30:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7149,
                              "nodeType": "ExpressionStatement",
                              "src": "3963:30:31"
                            },
                            {
                              "expression": {
                                "id": 7154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 7150,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4624,
                                    "src": "4080:12:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 7152,
                                  "indexExpression": {
                                    "id": 7151,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6984,
                                    "src": "4093:4:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4080:18:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 7153,
                                  "name": "nftsCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7026,
                                  "src": "4102:9:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4080:31:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7155,
                              "nodeType": "ExpressionStatement",
                              "src": "4080:31:31"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 7159,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7008,
                              "src": "4151:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 7160,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6984,
                              "src": "4159:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 7163,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4173:1:31",
                                  "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": 7162,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4165:7:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 7161,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4165:7:31",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 7164,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4165:10:31",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 7165,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6987,
                              "src": "4177:3:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 7166,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6990,
                              "src": "4182:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 7158,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3444,
                            "src": "4137:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 7167,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4137:52:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7168,
                        "nodeType": "EmitStatement",
                        "src": "4132:57:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6982,
                    "nodeType": "StructuredDocumentation",
                    "src": "2186:44:31",
                    "text": "@inheritdoc IERC1155721InventoryBurnable"
                  },
                  "functionSelector": "80534934",
                  "id": 7170,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6992,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2364:8:31"
                  },
                  "parameters": {
                    "id": 6991,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6984,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 7170,
                        "src": "2267:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6983,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2267:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6987,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 7170,
                        "src": "2289:20:31",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6985,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2289:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6986,
                          "nodeType": "ArrayTypeName",
                          "src": "2289:9:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6990,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 7170,
                        "src": "2319:23:31",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6988,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2319:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6989,
                          "nodeType": "ArrayTypeName",
                          "src": "2319:9:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2257:91:31"
                  },
                  "returnParameters": {
                    "id": 6993,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2373:0:31"
                  },
                  "scope": 7494,
                  "src": "2235:1961:31",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7676
                  ],
                  "body": {
                    "id": 7328,
                    "nodeType": "Block",
                    "src": "4337:1326:31",
                    "statements": [
                      {
                        "assignments": [
                          7181
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7181,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 7328,
                            "src": "4347:14:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7180,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4347:7:31",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7184,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 7182,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "4364:10:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 7183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4364:12:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4347:29:31"
                      },
                      {
                        "assignments": [
                          7186
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7186,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 7328,
                            "src": "4386:15:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 7185,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "4386:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7191,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 7188,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7173,
                              "src": "4418:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 7189,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7181,
                              "src": "4424:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7187,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2815,
                            "src": "4404:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 7190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4404:27:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4386:45:31"
                      },
                      {
                        "assignments": [
                          7193
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7193,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 7328,
                            "src": "4442:14:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7192,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4442:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7196,
                        "initialValue": {
                          "expression": {
                            "id": 7194,
                            "name": "nftIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7176,
                            "src": "4459:6:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 7195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "4459:13:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4442:30:31"
                      },
                      {
                        "assignments": [
                          7201
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7201,
                            "mutability": "mutable",
                            "name": "values",
                            "nodeType": "VariableDeclaration",
                            "scope": 7328,
                            "src": "4482:23:31",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 7199,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4482:7:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7200,
                              "nodeType": "ArrayTypeName",
                              "src": "4482:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7207,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 7205,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7193,
                              "src": "4522:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7204,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4508:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 7202,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4512:7:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7203,
                              "nodeType": "ArrayTypeName",
                              "src": "4512:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 7206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4508:21:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4482:47:31"
                      },
                      {
                        "assignments": [
                          7209
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7209,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 7328,
                            "src": "4540:22:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7208,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4540:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7210,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4540:22:31"
                      },
                      {
                        "assignments": [
                          7212
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7212,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 7328,
                            "src": "4572:25:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7211,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4572:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7213,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4572:25:31"
                      },
                      {
                        "body": {
                          "id": 7298,
                          "nodeType": "Block",
                          "src": "4641:778:31",
                          "statements": [
                            {
                              "assignments": [
                                7224
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 7224,
                                  "mutability": "mutable",
                                  "name": "nftId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 7298,
                                  "src": "4655:13:31",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 7223,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4655:7:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 7228,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 7225,
                                  "name": "nftIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7176,
                                  "src": "4671:6:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 7227,
                                "indexExpression": {
                                  "id": 7226,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7215,
                                  "src": "4678:1:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4671:9:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4655:25:31"
                            },
                            {
                              "expression": {
                                "id": 7233,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 7229,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7201,
                                    "src": "4694:6:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 7231,
                                  "indexExpression": {
                                    "id": 7230,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7215,
                                    "src": "4701:1:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4694:9:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 7232,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4706:1:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "4694:13:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7234,
                              "nodeType": "ExpressionStatement",
                              "src": "4694:13:31"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 7236,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7173,
                                    "src": "4730:4:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 7237,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7224,
                                    "src": "4736:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 7238,
                                      "name": "values",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7201,
                                      "src": "4743:6:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 7240,
                                    "indexExpression": {
                                      "id": 7239,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7215,
                                      "src": "4750:1:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4743:9:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 7241,
                                    "name": "operatable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7186,
                                    "src": "4754:10:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "74727565",
                                    "id": 7242,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4766:4:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 7235,
                                  "name": "_burnNFT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7469,
                                  "src": "4721:8:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,bool,bool)"
                                  }
                                },
                                "id": 7243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4721:50:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7244,
                              "nodeType": "ExpressionStatement",
                              "src": "4721:50:31"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 7246,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7173,
                                    "src": "4799:4:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 7249,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4813:1:31",
                                        "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": 7248,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4805:7:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 7247,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4805:7:31",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 7250,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4805:10:31",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 7251,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7224,
                                    "src": "4817:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 7245,
                                  "name": "Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7519,
                                  "src": "4790:8:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 7252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4790:33:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7253,
                              "nodeType": "EmitStatement",
                              "src": "4785:38:31"
                            },
                            {
                              "assignments": [
                                7255
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 7255,
                                  "mutability": "mutable",
                                  "name": "nextCollectionId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 7298,
                                  "src": "4837:24:31",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 7254,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4837:7:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 7260,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 7258,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2354,
                                    "src": "4895:21:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 7256,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7224,
                                    "src": "4864:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7257,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getNonFungibleCollection",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3351,
                                  "src": "4864:30:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 7259,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4864:53:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4837:80:31"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7263,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7261,
                                  "name": "nfCollectionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7209,
                                  "src": "4935:14:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7262,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4953:1:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4935:19:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 7296,
                                "nodeType": "Block",
                                "src": "5067:342:31",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7275,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7273,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7255,
                                        "src": "5089:16:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "id": 7274,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7209,
                                        "src": "5109:14:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5089:34:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 7294,
                                      "nodeType": "Block",
                                      "src": "5335:60:31",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 7292,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": true,
                                            "src": "5357:19:31",
                                            "subExpression": {
                                              "id": 7291,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7212,
                                              "src": "5359:17:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 7293,
                                          "nodeType": "ExpressionStatement",
                                          "src": "5357:19:31"
                                        }
                                      ]
                                    },
                                    "id": 7295,
                                    "nodeType": "IfStatement",
                                    "src": "5085:310:31",
                                    "trueBody": {
                                      "id": 7290,
                                      "nodeType": "Block",
                                      "src": "5125:204:31",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 7277,
                                                "name": "from",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7173,
                                                "src": "5172:4:31",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 7278,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7209,
                                                "src": "5178:14:31",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 7279,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7212,
                                                "src": "5194:17:31",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 7276,
                                              "name": "_burnNFTUpdateCollection",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7493,
                                              "src": "5147:24:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256,uint256)"
                                              }
                                            },
                                            "id": 7280,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "5147:65:31",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 7281,
                                          "nodeType": "ExpressionStatement",
                                          "src": "5147:65:31"
                                        },
                                        {
                                          "expression": {
                                            "id": 7284,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 7282,
                                              "name": "nfCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7209,
                                              "src": "5234:14:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 7283,
                                              "name": "nextCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7255,
                                              "src": "5251:16:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "5234:33:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 7285,
                                          "nodeType": "ExpressionStatement",
                                          "src": "5234:33:31"
                                        },
                                        {
                                          "expression": {
                                            "id": 7288,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 7286,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7212,
                                              "src": "5289:17:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "31",
                                              "id": 7287,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "5309:1:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "5289:21:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 7289,
                                          "nodeType": "ExpressionStatement",
                                          "src": "5289:21:31"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 7297,
                              "nodeType": "IfStatement",
                              "src": "4931:478:31",
                              "trueBody": {
                                "id": 7272,
                                "nodeType": "Block",
                                "src": "4956:105:31",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7266,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7264,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7209,
                                        "src": "4974:14:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 7265,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7255,
                                        "src": "4991:16:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4974:33:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7267,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4974:33:31"
                                  },
                                  {
                                    "expression": {
                                      "id": 7270,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7268,
                                        "name": "nfCollectionCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7212,
                                        "src": "5025:17:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "hexValue": "31",
                                        "id": 7269,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5045:1:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "5025:21:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7271,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5025:21:31"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7217,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7215,
                            "src": "4623:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 7218,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7193,
                            "src": "4628:6:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4623:11:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7299,
                        "initializationExpression": {
                          "assignments": [
                            7215
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 7215,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 7299,
                              "src": "4612:9:31",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 7214,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4612:7:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 7216,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4612:9:31"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 7221,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "4636:3:31",
                            "subExpression": {
                              "id": 7220,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7215,
                              "src": "4638:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7222,
                          "nodeType": "ExpressionStatement",
                          "src": "4636:3:31"
                        },
                        "nodeType": "ForStatement",
                        "src": "4607:812:31"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7300,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7209,
                            "src": "5433:14:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 7301,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5451:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5433:19:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7316,
                        "nodeType": "IfStatement",
                        "src": "5429:157:31",
                        "trueBody": {
                          "id": 7315,
                          "nodeType": "Block",
                          "src": "5454:132:31",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 7304,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7173,
                                    "src": "5493:4:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 7305,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7209,
                                    "src": "5499:14:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 7306,
                                    "name": "nfCollectionCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7212,
                                    "src": "5515:17:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 7303,
                                  "name": "_burnNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7493,
                                  "src": "5468:24:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 7307,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5468:65:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7308,
                              "nodeType": "ExpressionStatement",
                              "src": "5468:65:31"
                            },
                            {
                              "expression": {
                                "id": 7313,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 7309,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4624,
                                    "src": "5547:12:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 7311,
                                  "indexExpression": {
                                    "id": 7310,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7173,
                                    "src": "5560:4:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5547:18:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 7312,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7193,
                                  "src": "5569:6:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5547:28:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7314,
                              "nodeType": "ExpressionStatement",
                              "src": "5547:28:31"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 7318,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7181,
                              "src": "5615:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 7319,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7173,
                              "src": "5623:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 7322,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5637:1:31",
                                  "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": 7321,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5629:7:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 7320,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5629:7:31",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 7323,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5629:10:31",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 7324,
                              "name": "nftIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7176,
                              "src": "5641:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 7325,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7201,
                              "src": "5649:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 7317,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3444,
                            "src": "5601:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 7326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5601:55:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7327,
                        "nodeType": "EmitStatement",
                        "src": "5596:60:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7171,
                    "nodeType": "StructuredDocumentation",
                    "src": "4202:44:31",
                    "text": "@inheritdoc IERC1155721InventoryBurnable"
                  },
                  "functionSelector": "f2472965",
                  "id": 7329,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7178,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4328:8:31"
                  },
                  "parameters": {
                    "id": 7177,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7173,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 7329,
                        "src": "4274:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7172,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4274:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7176,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 7329,
                        "src": "4288:23:31",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7174,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4288:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7175,
                          "nodeType": "ArrayTypeName",
                          "src": "4288:9:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4273:39:31"
                  },
                  "returnParameters": {
                    "id": 7179,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4337:0:31"
                  },
                  "scope": 7494,
                  "src": "4251:1412:31",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7383,
                    "nodeType": "Block",
                    "src": "5926:346:31",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7341,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7335,
                                "src": "5944:5:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 7342,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5953:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5944:10:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2076616c7565",
                              "id": 7344,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5956:23:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              },
                              "value": "Inventory: zero value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              }
                            ],
                            "id": 7340,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5936:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5936:44:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7346,
                        "nodeType": "ExpressionStatement",
                        "src": "5936:44:31"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7348,
                              "name": "operatable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7337,
                              "src": "5998:10:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                              "id": 7349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6010:32:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              },
                              "value": "Inventory: non-approved sender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              }
                            ],
                            "id": 7347,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5990:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5990:53:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7351,
                        "nodeType": "ExpressionStatement",
                        "src": "5990:53:31"
                      },
                      {
                        "assignments": [
                          7353
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7353,
                            "mutability": "mutable",
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 7383,
                            "src": "6053:15:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7352,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6053:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7359,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 7354,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2375,
                              "src": "6071:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 7356,
                            "indexExpression": {
                              "id": 7355,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7333,
                              "src": "6081:2:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6071:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 7358,
                          "indexExpression": {
                            "id": 7357,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7331,
                            "src": "6085:4:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6071:19:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6053:37:31"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7361,
                                "name": "balance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7353,
                                "src": "6108:7:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 7362,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7335,
                                "src": "6119:5:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6108:16:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365",
                              "id": 7364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6126:31:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_82c893371492309285d50bc6a7cf0711f02e83a8e143785e5e0b985266953be1",
                                "typeString": "literal_string \"Inventory: not enough balance\""
                              },
                              "value": "Inventory: not enough balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_82c893371492309285d50bc6a7cf0711f02e83a8e143785e5e0b985266953be1",
                                "typeString": "literal_string \"Inventory: not enough balance\""
                              }
                            ],
                            "id": 7360,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6100:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6100:58:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7366,
                        "nodeType": "ExpressionStatement",
                        "src": "6100:58:31"
                      },
                      {
                        "expression": {
                          "id": 7375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 7367,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2375,
                                "src": "6168:9:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 7370,
                              "indexExpression": {
                                "id": 7368,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7333,
                                "src": "6178:2:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6168:13:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 7371,
                            "indexExpression": {
                              "id": 7369,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7331,
                              "src": "6182:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6168:19:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7374,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7372,
                              "name": "balance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7353,
                              "src": "6190:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 7373,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7335,
                              "src": "6200:5:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6190:15:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6168:37:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7376,
                        "nodeType": "ExpressionStatement",
                        "src": "6168:37:31"
                      },
                      {
                        "expression": {
                          "id": 7381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 7377,
                              "name": "_supplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2379,
                              "src": "6243:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 7379,
                            "indexExpression": {
                              "id": 7378,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7333,
                              "src": "6253:2:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6243:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 7380,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7335,
                            "src": "6260:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6243:22:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7382,
                        "nodeType": "ExpressionStatement",
                        "src": "6243:22:31"
                      }
                    ]
                  },
                  "id": 7384,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnFungible",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7338,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7331,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 7384,
                        "src": "5830:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7330,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5830:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7333,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 7384,
                        "src": "5852:10:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7332,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5852:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7335,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 7384,
                        "src": "5872:13:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7334,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5872:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7337,
                        "mutability": "mutable",
                        "name": "operatable",
                        "nodeType": "VariableDeclaration",
                        "scope": 7384,
                        "src": "5895:15:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7336,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5895:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5820:96:31"
                  },
                  "returnParameters": {
                    "id": 7339,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5926:0:31"
                  },
                  "scope": 7494,
                  "src": "5798:474:31",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7468,
                    "nodeType": "Block",
                    "src": "6431:639:31",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7400,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7398,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7390,
                                "src": "6449:5:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 7399,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6458:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "6449:10:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2077726f6e67204e46542076616c7565",
                              "id": 7401,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6461:28:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              },
                              "value": "Inventory: wrong NFT value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              }
                            ],
                            "id": 7397,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6441:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6441:49:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7403,
                        "nodeType": "ExpressionStatement",
                        "src": "6441:49:31"
                      },
                      {
                        "assignments": [
                          7405
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7405,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 7468,
                            "src": "6500:13:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7404,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6500:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7409,
                        "initialValue": {
                          "baseExpression": {
                            "id": 7406,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2383,
                            "src": "6516:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 7408,
                          "indexExpression": {
                            "id": 7407,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7388,
                            "src": "6524:2:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6516:11:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6500:27:31"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 7419,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7411,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7386,
                                "src": "6545:4:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 7416,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7405,
                                        "src": "6569:5:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 7415,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6561:7:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 7414,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6561:7:31",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 7417,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6561:14:31",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 7413,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6553:7:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 7412,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6553:7:31",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 7418,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6553:23:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6545:31:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6f776e6564204e4654",
                              "id": 7420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6578:26:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cb299a32a7af2eac6d18f568f522d952ea6c98cc6d0ce67299c271d8f74679c8",
                                "typeString": "literal_string \"Inventory: non-owned NFT\""
                              },
                              "value": "Inventory: non-owned NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cb299a32a7af2eac6d18f568f522d952ea6c98cc6d0ce67299c271d8f74679c8",
                                "typeString": "literal_string \"Inventory: non-owned NFT\""
                              }
                            ],
                            "id": 7410,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6537:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6537:68:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7422,
                        "nodeType": "ExpressionStatement",
                        "src": "6537:68:31"
                      },
                      {
                        "condition": {
                          "id": 7424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "6619:11:31",
                          "subExpression": {
                            "id": 7423,
                            "name": "operatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7392,
                            "src": "6620:10:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7443,
                        "nodeType": "IfStatement",
                        "src": "6615:163:31",
                        "trueBody": {
                          "id": 7442,
                          "nodeType": "Block",
                          "src": "6632:146:31",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 7438,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 7430,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 7428,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 7426,
                                              "name": "owner",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7405,
                                              "src": "6655:5:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "id": 7427,
                                              "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4616,
                                              "src": "6663:26:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "6655:34:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 7429,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6693:1:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "6655:39:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 7431,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "6654:41:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 7437,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 7432,
                                          "name": "_msgSender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 312,
                                          "src": "6699:10:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                            "typeString": "function () view returns (address payable)"
                                          }
                                        },
                                        "id": 7433,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6699:12:31",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "baseExpression": {
                                          "id": 7434,
                                          "name": "_nftApprovals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4628,
                                          "src": "6715:13:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                            "typeString": "mapping(uint256 => address)"
                                          }
                                        },
                                        "id": 7436,
                                        "indexExpression": {
                                          "id": 7435,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7388,
                                          "src": "6729:2:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6715:17:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "6699:33:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "6654:78:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                                    "id": 7439,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6734:32:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                      "typeString": "literal_string \"Inventory: non-approved sender\""
                                    },
                                    "value": "Inventory: non-approved sender"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                      "typeString": "literal_string \"Inventory: non-approved sender\""
                                    }
                                  ],
                                  "id": 7425,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "6646:7:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 7440,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6646:121:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7441,
                              "nodeType": "ExpressionStatement",
                              "src": "6646:121:31"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 7448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 7444,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2383,
                              "src": "6787:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 7446,
                            "indexExpression": {
                              "id": 7445,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7388,
                              "src": "6795:2:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6787:11:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7447,
                            "name": "_BURNT_NFT_OWNER",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2363,
                            "src": "6801:16:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6787:30:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7449,
                        "nodeType": "ExpressionStatement",
                        "src": "6787:30:31"
                      },
                      {
                        "condition": {
                          "id": 7451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "6832:8:31",
                          "subExpression": {
                            "id": 7450,
                            "name": "isBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7394,
                            "src": "6833:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7467,
                        "nodeType": "IfStatement",
                        "src": "6828:236:31",
                        "trueBody": {
                          "id": 7466,
                          "nodeType": "Block",
                          "src": "6842:222:31",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 7453,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7386,
                                    "src": "6881:4:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 7456,
                                        "name": "_collectionMaskLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2354,
                                        "src": "6915:21:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 7454,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7388,
                                        "src": "6887:2:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 7455,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getNonFungibleCollection",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3351,
                                      "src": "6887:27:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 7457,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6887:50:31",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 7458,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6939:1:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "id": 7452,
                                  "name": "_burnNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7493,
                                  "src": "6856:24:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 7459,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6856:85:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7460,
                              "nodeType": "ExpressionStatement",
                              "src": "6856:85:31"
                            },
                            {
                              "expression": {
                                "id": 7464,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": true,
                                "src": "7033:20:31",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 7461,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4624,
                                    "src": "7035:12:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 7463,
                                  "indexExpression": {
                                    "id": 7462,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7386,
                                    "src": "7048:4:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7035:18:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7465,
                              "nodeType": "ExpressionStatement",
                              "src": "7033:20:31"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 7469,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnNFT",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7395,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7386,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 7469,
                        "src": "6305:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7385,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6305:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7388,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 7469,
                        "src": "6327:10:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7387,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6327:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7390,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 7469,
                        "src": "6347:13:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7389,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6347:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7392,
                        "mutability": "mutable",
                        "name": "operatable",
                        "nodeType": "VariableDeclaration",
                        "scope": 7469,
                        "src": "6370:15:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7391,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6370:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7394,
                        "mutability": "mutable",
                        "name": "isBatch",
                        "nodeType": "VariableDeclaration",
                        "scope": 7469,
                        "src": "6395:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7393,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6395:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6295:118:31"
                  },
                  "returnParameters": {
                    "id": 7396,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6431:0:31"
                  },
                  "scope": 7494,
                  "src": "6278:792:31",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7492,
                    "nodeType": "Block",
                    "src": "7209:172:31",
                    "statements": [
                      {
                        "expression": {
                          "id": 7484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 7478,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2375,
                                "src": "7292:9:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 7481,
                              "indexExpression": {
                                "id": 7479,
                                "name": "collectionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7473,
                                "src": "7302:12:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7292:23:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 7482,
                            "indexExpression": {
                              "id": 7480,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7471,
                              "src": "7316:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7292:29:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 7483,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7475,
                            "src": "7325:6:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7292:39:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7485,
                        "nodeType": "ExpressionStatement",
                        "src": "7292:39:31"
                      },
                      {
                        "expression": {
                          "id": 7490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 7486,
                              "name": "_supplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2379,
                              "src": "7341:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 7488,
                            "indexExpression": {
                              "id": 7487,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7473,
                              "src": "7351:12:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7341:23:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 7489,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7475,
                            "src": "7368:6:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7341:33:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7491,
                        "nodeType": "ExpressionStatement",
                        "src": "7341:33:31"
                      }
                    ]
                  },
                  "id": 7493,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnNFTUpdateCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7476,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7471,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 7493,
                        "src": "7119:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7470,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7119:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7473,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 7493,
                        "src": "7141:20:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7472,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7141:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7475,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 7493,
                        "src": "7171:14:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7474,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7171:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7109:82:31"
                  },
                  "returnParameters": {
                    "id": 7477,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7209:0:31"
                  },
                  "scope": 7494,
                  "src": "7076:305:31",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 7495,
              "src": "657:6726:31"
            }
          ],
          "src": "33:7351:31"
        },
        "id": 31
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721Inventory.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721Inventory.sol",
          "exportedSymbols": {
            "IERC1155": [
              3530
            ],
            "IERC1155721Inventory": [
              7642
            ],
            "IERC1155Inventory": [
              3633
            ],
            "IERC721": [
              13702
            ],
            "IERC721BatchTransfer": [
              13717
            ]
          },
          "id": 7643,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7496,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:32"
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155.sol",
              "file": "./../../ERC1155/interfaces/IERC1155.sol",
              "id": 7498,
              "nodeType": "ImportDirective",
              "scope": 7643,
              "sourceUnit": 3531,
              "src": "66:65:32",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7497,
                    "name": "IERC1155",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:8:32",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol",
              "file": "./../../ERC1155/interfaces/IERC1155Inventory.sol",
              "id": 7500,
              "nodeType": "ImportDirective",
              "scope": 7643,
              "sourceUnit": 3634,
              "src": "132:83:32",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7499,
                    "name": "IERC1155Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "140:17:32",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721.sol",
              "file": "./../../ERC721/interfaces/IERC721.sol",
              "id": 7502,
              "nodeType": "ImportDirective",
              "scope": 7643,
              "sourceUnit": 13703,
              "src": "216:62:32",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7501,
                    "name": "IERC721",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "224:7:32",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol",
              "file": "./../../ERC721/interfaces/IERC721BatchTransfer.sol",
              "id": 7504,
              "nodeType": "ImportDirective",
              "scope": 7643,
              "sourceUnit": 13718,
              "src": "279:88:32",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7503,
                    "name": "IERC721BatchTransfer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "287:20:32",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 7506,
                    "name": "IERC1155Inventory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3633,
                    "src": "487:17:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155Inventory_$3633",
                      "typeString": "contract IERC1155Inventory"
                    }
                  },
                  "id": 7507,
                  "nodeType": "InheritanceSpecifier",
                  "src": "487:17:32"
                },
                {
                  "baseName": {
                    "id": 7508,
                    "name": "IERC721",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13702,
                    "src": "506:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721_$13702",
                      "typeString": "contract IERC721"
                    }
                  },
                  "id": 7509,
                  "nodeType": "InheritanceSpecifier",
                  "src": "506:7:32"
                },
                {
                  "baseName": {
                    "id": 7510,
                    "name": "IERC721BatchTransfer",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13717,
                    "src": "515:20:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721BatchTransfer_$13717",
                      "typeString": "contract IERC721BatchTransfer"
                    }
                  },
                  "id": 7511,
                  "nodeType": "InheritanceSpecifier",
                  "src": "515:20:32"
                }
              ],
              "contractDependencies": [
                3530,
                3633,
                3696,
                13702,
                13717
              ],
              "contractKind": "interface",
              "documentation": {
                "id": 7505,
                "nodeType": "StructuredDocumentation",
                "src": "369:83:32",
                "text": " @title ERC1155 Inventory with support for ERC721 and EC721BatchTransfer."
              },
              "fullyImplemented": false,
              "id": 7642,
              "linearizedBaseContracts": [
                7642,
                13717,
                13702,
                3633,
                3696,
                3530
              ],
              "name": "IERC1155721Inventory",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 7519,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7518,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7513,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 7519,
                        "src": "686:21:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7512,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "686:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7515,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 7519,
                        "src": "709:19:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7514,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "709:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7517,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 7519,
                        "src": "730:24:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7516,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "730:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "685:70:32"
                  },
                  "src": "671:85:32"
                },
                {
                  "anonymous": false,
                  "id": 7527,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7526,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7521,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 7527,
                        "src": "777:22:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7520,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "777:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7523,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 7527,
                        "src": "801:25:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7522,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "801:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7525,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 7527,
                        "src": "828:24:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7524,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "828:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "776:77:32"
                  },
                  "src": "762:92:32"
                },
                {
                  "baseFunctions": [
                    13679
                  ],
                  "documentation": {
                    "id": 7528,
                    "nodeType": "StructuredDocumentation",
                    "src": "860:702:32",
                    "text": " Unsafely transfers a Non-Fungible Token.\n @dev Usage of this method is discouraged, use `safeTransferFrom` whenever possible\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if `nftId` is not owned by `from`.\n @dev Reverts if `to` is an IERC1155TokenReceiver contract which refuses the receiver call.\n @dev Resets the ERC721 single token approval.\n @dev Emits an {IERC721-Transfer} event.\n @dev Emits an {IERC1155-TransferSingle} event.\n @param from Current token owner.\n @param to Address of the new token owner.\n @param nftId Identifier of the token to transfer."
                  },
                  "functionSelector": "23b872dd",
                  "id": 7538,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7536,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1669:8:32"
                  },
                  "parameters": {
                    "id": 7535,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7530,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 7538,
                        "src": "1598:12:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7529,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1598:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7532,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 7538,
                        "src": "1620:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7531,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1620:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7534,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 7538,
                        "src": "1640:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7533,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1640:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1588:71:32"
                  },
                  "returnParameters": {
                    "id": 7537,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1677:0:32"
                  },
                  "scope": 7642,
                  "src": "1567:111:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    13689
                  ],
                  "documentation": {
                    "id": 7539,
                    "nodeType": "StructuredDocumentation",
                    "src": "1684:733:32",
                    "text": " Safely transfers a Non-Fungible Token.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if `nftId` is not owned by `from`.\n @dev Reverts if `to` is a contract which does not implement IERC1155TokenReceiver or IERC721Receiver.\n @dev Reverts if `to` is an IERC1155TokenReceiver or IERC721Receiver contract which refuses the transfer.\n @dev Resets the ERC721 single token approval.\n @dev Emits an {IERC721-Transfer} event.\n @dev Emits an {IERC1155-TransferSingle} event.\n @param from Current token owner.\n @param to Address of the new token owner.\n @param nftId Identifier of the token to transfer."
                  },
                  "functionSelector": "42842e0e",
                  "id": 7549,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7547,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2528:8:32"
                  },
                  "parameters": {
                    "id": 7546,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7541,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 7549,
                        "src": "2457:12:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7540,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2457:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7543,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 7549,
                        "src": "2479:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7542,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2479:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7545,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 7549,
                        "src": "2499:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7544,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2499:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2447:71:32"
                  },
                  "returnParameters": {
                    "id": 7548,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2536:0:32"
                  },
                  "scope": 7642,
                  "src": "2422:115:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    13701
                  ],
                  "documentation": {
                    "id": 7550,
                    "nodeType": "StructuredDocumentation",
                    "src": "2543:800:32",
                    "text": " Safely transfers a Non-Fungible Token.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if `nftId` is not owned by `from`.\n @dev Reverts if `to` is a contract which does not implement IERC1155TokenReceiver or IERC721Receiver.\n @dev Reverts if `to` is an IERC1155TokenReceiver or IERC721Receiver contract which refuses the transfer.\n @dev Resets the ERC721 single token approval.\n @dev Emits an {IERC721-Transfer} event.\n @dev Emits an {IERC1155-TransferSingle} event.\n @param from Current token owner.\n @param to Address of the new token owner.\n @param nftId Identifier of the token to transfer.\n @param data Optional data to pass to the receiver contract."
                  },
                  "functionSelector": "b88d4fde",
                  "id": 7562,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7560,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3483:8:32"
                  },
                  "parameters": {
                    "id": 7559,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7552,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 7562,
                        "src": "3383:12:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7551,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3383:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7554,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 7562,
                        "src": "3405:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7553,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3405:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7556,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 7562,
                        "src": "3425:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7555,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3425:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7558,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 7562,
                        "src": "3448:19:32",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7557,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3448:5:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3373:100:32"
                  },
                  "returnParameters": {
                    "id": 7561,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3491:0:32"
                  },
                  "scope": 7642,
                  "src": "3348:144:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    13716
                  ],
                  "documentation": {
                    "id": 7563,
                    "nodeType": "StructuredDocumentation",
                    "src": "3627:648:32",
                    "text": " Unsafely transfers a batch of Non-Fungible Tokens.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if one of `nftIds` is not owned by `from`.\n @dev Reverts if `to` is an IERC1155TokenReceiver which refuses the transfer.\n @dev Resets the token approval for each of `nftIds`.\n @dev Emits an {IERC721-Transfer} event for each of `nftIds`.\n @dev Emits an {IERC1155-TransferBatch} event.\n @param from Current tokens owner.\n @param to Address of the new tokens owner.\n @param nftIds Identifiers of the tokens to transfer."
                  },
                  "functionSelector": "f3993d11",
                  "id": 7574,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7572,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4399:8:32"
                  },
                  "parameters": {
                    "id": 7571,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7565,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 7574,
                        "src": "4316:12:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7564,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4316:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7567,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 7574,
                        "src": "4338:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7566,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4338:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7570,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 7574,
                        "src": "4358:25:32",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7568,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4358:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7569,
                          "nodeType": "ArrayTypeName",
                          "src": "4358:9:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4306:83:32"
                  },
                  "returnParameters": {
                    "id": 7573,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4407:0:32"
                  },
                  "scope": 7642,
                  "src": "4280:128:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3615
                  ],
                  "documentation": {
                    "id": 7575,
                    "nodeType": "StructuredDocumentation",
                    "src": "4543:1157:32",
                    "text": " Safely transfers some token.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if `id` does not represent a token.\n @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n @dev Reverts if `id` represents a Non-Fungible Token and is not owned by `from`.\n @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n @dev Reverts if `id` represents a Fungible Token and `from` has an insufficient balance.\n @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155received} fails or is refused.\n @dev Resets the ERC721 single token approval if `id` represents a Non-Fungible Token.\n @dev Emits an {IERC721-Transfer} event if `id` represents a Non-Fungible Token.\n @dev Emits an {IERC1155-TransferSingle} event.\n @param from Current token owner.\n @param to Address of the new token owner.\n @param id Identifier of the token to transfer.\n @param value Amount of token to transfer.\n @param data Optional data to pass to the receiver contract."
                  },
                  "functionSelector": "f242432a",
                  "id": 7589,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7587,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5860:8:32"
                  },
                  "parameters": {
                    "id": 7586,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7577,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 7589,
                        "src": "5740:12:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7576,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5740:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7579,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 7589,
                        "src": "5762:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7578,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5762:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7581,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 7589,
                        "src": "5782:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7580,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5782:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7583,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 7589,
                        "src": "5802:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7582,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5802:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7585,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 7589,
                        "src": "5825:19:32",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7584,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5825:5:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5730:120:32"
                  },
                  "returnParameters": {
                    "id": 7588,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5868:0:32"
                  },
                  "scope": 7642,
                  "src": "5705:164:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3632
                  ],
                  "documentation": {
                    "id": 7590,
                    "nodeType": "StructuredDocumentation",
                    "src": "5875:1223:32",
                    "text": " Safely transfers a batch of tokens.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if one of `ids` does not represent a token.\n @dev Reverts if one of `ids` represents a Non-Fungible Token and `value` is not 1.\n @dev Reverts if one of `ids` represents a Non-Fungible Token and is not owned by `from`.\n @dev Reverts if one of `ids` represents a Fungible Token and `value` is 0.\n @dev Reverts if one of `ids` represents a Fungible Token and `from` has an insufficient balance.\n @dev Reverts if one of `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n @dev Resets the ERC721 single token approval for each transferred Non-Fungible Token.\n @dev Emits an {IERC721-Transfer} event for each transferred Non-Fungible Token.\n @dev Emits an {IERC1155-TransferBatch} event.\n @param from Current tokens owner.\n @param to Address of the new tokens owner.\n @param ids Identifiers of the tokens to transfer.\n @param values Amounts of tokens to transfer.\n @param data Optional data to pass to the receiver contract."
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 7606,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7604,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7287:8:32"
                  },
                  "parameters": {
                    "id": 7603,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7592,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 7606,
                        "src": "7143:12:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7591,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7143:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7594,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 7606,
                        "src": "7165:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7593,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7165:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7597,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 7606,
                        "src": "7185:22:32",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7595,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7185:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7596,
                          "nodeType": "ArrayTypeName",
                          "src": "7185:9:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7600,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 7606,
                        "src": "7217:25:32",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7598,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7217:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7599,
                          "nodeType": "ArrayTypeName",
                          "src": "7217:9:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7602,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 7606,
                        "src": "7252:19:32",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7601,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7252:5:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7133:144:32"
                  },
                  "returnParameters": {
                    "id": 7605,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7295:0:32"
                  },
                  "scope": 7642,
                  "src": "7103:193:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3519,
                    13659
                  ],
                  "documentation": {
                    "id": 7607,
                    "nodeType": "StructuredDocumentation",
                    "src": "7431:24:32",
                    "text": "@inheritdoc IERC1155"
                  },
                  "functionSelector": "a22cb465",
                  "id": 7617,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7615,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 7613,
                        "name": "IERC1155",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3530,
                        "src": "7538:8:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$3530",
                          "typeString": "contract IERC1155"
                        }
                      },
                      {
                        "id": 7614,
                        "name": "IERC721",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13702,
                        "src": "7548:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC721_$13702",
                          "typeString": "contract IERC721"
                        }
                      }
                    ],
                    "src": "7529:27:32"
                  },
                  "parameters": {
                    "id": 7612,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7609,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 7617,
                        "src": "7487:16:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7608,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7487:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7611,
                        "mutability": "mutable",
                        "name": "approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 7617,
                        "src": "7505:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7610,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7505:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7486:33:32"
                  },
                  "returnParameters": {
                    "id": 7616,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7556:0:32"
                  },
                  "scope": 7642,
                  "src": "7460:97:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3529,
                    13669
                  ],
                  "documentation": {
                    "id": 7618,
                    "nodeType": "StructuredDocumentation",
                    "src": "7563:24:32",
                    "text": "@inheritdoc IERC1155"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 7630,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7626,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 7624,
                        "name": "IERC1155",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3530,
                        "src": "7674:8:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$3530",
                          "typeString": "contract IERC1155"
                        }
                      },
                      {
                        "id": 7625,
                        "name": "IERC721",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13702,
                        "src": "7684:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC721_$13702",
                          "typeString": "contract IERC721"
                        }
                      }
                    ],
                    "src": "7665:27:32"
                  },
                  "parameters": {
                    "id": 7623,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7620,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 7630,
                        "src": "7618:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7619,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7618:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7622,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 7630,
                        "src": "7633:16:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7621,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7633:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7617:33:32"
                  },
                  "returnParameters": {
                    "id": 7629,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7628,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7630,
                        "src": "7702:4:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7627,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7702:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7701:6:32"
                  },
                  "scope": 7642,
                  "src": "7592:116:32",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3557,
                    13635
                  ],
                  "documentation": {
                    "id": 7631,
                    "nodeType": "StructuredDocumentation",
                    "src": "7843:33:32",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "6352211e",
                  "id": 7641,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7637,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 7635,
                        "name": "IERC1155Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3633,
                        "src": "7936:17:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155Inventory_$3633",
                          "typeString": "contract IERC1155Inventory"
                        }
                      },
                      {
                        "id": 7636,
                        "name": "IERC721",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13702,
                        "src": "7955:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC721_$13702",
                          "typeString": "contract IERC721"
                        }
                      }
                    ],
                    "src": "7927:36:32"
                  },
                  "parameters": {
                    "id": 7634,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7633,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 7641,
                        "src": "7898:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7632,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7898:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7897:15:32"
                  },
                  "returnParameters": {
                    "id": 7640,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7639,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7641,
                        "src": "7973:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7638,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7973:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7972:9:32"
                  },
                  "scope": 7642,
                  "src": "7881:101:32",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 7643,
              "src": "453:7531:32"
            }
          ],
          "src": "33:7952:32"
        },
        "id": 32
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryBurnable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryBurnable.sol",
          "exportedSymbols": {
            "IERC1155721InventoryBurnable": [
              7677
            ]
          },
          "id": 7678,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7644,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:33"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 7645,
                "nodeType": "StructuredDocumentation",
                "src": "66:333:33",
                "text": " @title ERC1155 Inventory with support for ERC721, optional extension: Burnable.\n @dev The ERC721 Burnable function `burnFrom(address,uint256)` is not provided\n  the ERC1155 Burnable function `burnFrom(address,uint256,uint256)` can be used instead.\n @dev Note: The ERC-165 identifier for this interface is 0x6059f1b4."
              },
              "fullyImplemented": false,
              "id": 7677,
              "linearizedBaseContracts": [
                7677
              ],
              "name": "IERC1155721InventoryBurnable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 7646,
                    "nodeType": "StructuredDocumentation",
                    "src": "445:842:33",
                    "text": " Burns some token (ERC1155-compatible).\n @dev Reverts if the sender is not approved.\n @dev Reverts if `id` does not represent a token.\n @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n @dev Reverts if `id` represents a Fungible Token and `value` is higher than `from`'s balance.\n @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n @dev Reverts if `id` represents a Non-Fungible Token which is not owned by `from`.\n @dev Emits an {IERC721-Transfer} event to the zero address if `id` represents a Non-Fungible Token.\n @dev Emits an {IERC1155-TransferSingle} event to the zero address.\n @param from Address of the current token owner.\n @param id Identifier of the token to burn.\n @param value Amount of token to burn."
                  },
                  "functionSelector": "124d91e5",
                  "id": 7655,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7653,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7648,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 7655,
                        "src": "1319:12:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7647,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1319:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7650,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 7655,
                        "src": "1341:10:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7649,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1341:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7652,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 7655,
                        "src": "1361:13:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7651,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1361:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1309:71:33"
                  },
                  "returnParameters": {
                    "id": 7654,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1389:0:33"
                  },
                  "scope": 7677,
                  "src": "1292:98:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7656,
                    "nodeType": "StructuredDocumentation",
                    "src": "1396:953:33",
                    "text": " Burns multiple tokens (ERC1155-compatible).\n @dev Reverts if `ids` and `values` have different lengths.\n @dev Reverts if the sender is not approved.\n @dev Reverts if one of `ids` does not represent a token.\n @dev Reverts if one of `ids` represents a Fungible Token and `value` is 0.\n @dev Reverts if one of `ids` represents a Fungible Token and `value` is higher than `from`'s balance.\n @dev Reverts if one of `ids` represents a Non-Fungible Token and `value` is not 1.\n @dev Reverts if one of `ids` represents a Non-Fungible Token which is not owned by `from`.\n @dev Emits an {IERC721-Transfer} event to the zero address for each burnt Non-Fungible Token.\n @dev Emits an {IERC1155-TransferBatch} event to the zero address.\n @param from Address of the current tokens owner.\n @param ids Identifiers of the tokens to burn.\n @param values Amounts of tokens to burn."
                  },
                  "functionSelector": "80534934",
                  "id": 7667,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7665,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7658,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 7667,
                        "src": "2386:12:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7657,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2386:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7661,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 7667,
                        "src": "2408:22:33",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7659,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2408:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7660,
                          "nodeType": "ArrayTypeName",
                          "src": "2408:9:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7664,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 7667,
                        "src": "2440:25:33",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7662,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2440:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7663,
                          "nodeType": "ArrayTypeName",
                          "src": "2440:9:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2376:95:33"
                  },
                  "returnParameters": {
                    "id": 7666,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2480:0:33"
                  },
                  "scope": 7677,
                  "src": "2354:127:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7668,
                    "nodeType": "StructuredDocumentation",
                    "src": "2487:531:33",
                    "text": " Burns a batch of Non-Fungible Tokens (ERC721-compatible).\n @dev Reverts if the sender is not approved.\n @dev Reverts if one of `nftIds` does not represent a Non-Fungible Token.\n @dev Reverts if one of `nftIds` is not owned by `from`.\n @dev Emits an {IERC721-Transfer} event to the zero address for each of `nftIds`.\n @dev Emits an {IERC1155-TransferBatch} event to the zero address.\n @param from Current token owner.\n @param nftIds Identifiers of the tokens to transfer."
                  },
                  "functionSelector": "f2472965",
                  "id": 7676,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7674,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7670,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 7676,
                        "src": "3046:12:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7669,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3046:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7673,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 7676,
                        "src": "3060:25:33",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7671,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3060:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7672,
                          "nodeType": "ArrayTypeName",
                          "src": "3060:9:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3045:41:33"
                  },
                  "returnParameters": {
                    "id": 7675,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3095:0:33"
                  },
                  "scope": 7677,
                  "src": "3023:73:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 7678,
              "src": "400:2698:33"
            }
          ],
          "src": "33:3066:33"
        },
        "id": 33
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryDeliverable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryDeliverable.sol",
          "exportedSymbols": {
            "IERC1155721InventoryDeliverable": [
              7696
            ]
          },
          "id": 7697,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7679,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:34"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 7680,
                "nodeType": "StructuredDocumentation",
                "src": "66:183:34",
                "text": " @title ERC1155 Inventory with support for ERC721, optional extension: Deliverable.\n Provides a minting function which can be used to deliver tokens to several recipients."
              },
              "fullyImplemented": false,
              "id": 7696,
              "linearizedBaseContracts": [
                7696
              ],
              "name": "IERC1155721InventoryDeliverable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 7681,
                    "nodeType": "StructuredDocumentation",
                    "src": "298:1254:34",
                    "text": " Safely mints some tokens to a list of recipients.\n @dev Reverts if `recipients`, `ids` and `values` have different lengths.\n @dev Reverts if one of `recipients` is the zero address.\n @dev Reverts if one of `ids` is not a token.\n @dev Reverts if one of `ids` represents a Non-Fungible Token and its `value` is not 1.\n @dev Reverts if one of `ids` represents a Non-Fungible Token which has already been minted.\n @dev Reverts if one of `ids` represents a Fungible Token and its `value` is 0.\n @dev Reverts if one of `ids` represents a Fungible Token and there is an overflow of supply.\n @dev Reverts if one of `recipients` is a contract and the call to {IERC1155TokenReceiver-onERC1155Received} fails or is refused.\n @dev Emits an {IERC721-Transfer} event from the zero address for each `id` representing a Non-Fungible Token.\n @dev Emits an {IERC1155-TransferSingle} event from the zero address.\n @param recipients Addresses of the new token owners.\n @param ids Identifiers of the tokens to mint.\n @param values Amounts of tokens to mint.\n @param data Optional data to send along to the receiver contract(s), if any. All receivers receive the same data."
                  },
                  "functionSelector": "e8ab9ccc",
                  "id": 7695,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeDeliver",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7693,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7684,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 7695,
                        "src": "1587:29:34",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7682,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1587:7:34",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 7683,
                          "nodeType": "ArrayTypeName",
                          "src": "1587:9:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7687,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 7695,
                        "src": "1626:22:34",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7685,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1626:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7686,
                          "nodeType": "ArrayTypeName",
                          "src": "1626:9:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7690,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 7695,
                        "src": "1658:25:34",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7688,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1658:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7689,
                          "nodeType": "ArrayTypeName",
                          "src": "1658:9:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7692,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 7695,
                        "src": "1693:19:34",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7691,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1693:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1577:141:34"
                  },
                  "returnParameters": {
                    "id": 7694,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1727:0:34"
                  },
                  "scope": 7696,
                  "src": "1557:171:34",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 7697,
              "src": "250:1480:34"
            }
          ],
          "src": "33:1698:34"
        },
        "id": 34
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryMintable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryMintable.sol",
          "exportedSymbols": {
            "IERC1155721InventoryMintable": [
              7753
            ]
          },
          "id": 7754,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7698,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:35"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 7699,
                "nodeType": "StructuredDocumentation",
                "src": "66:277:35",
                "text": " @title ERC1155 Inventory with support for ERC721, optional extension: Mintable.\n @dev The ERC721 Mintable function `safeMint(address,uint256,bytes)` is not provided as\n  the ERC1155 Mintable function `safeMint(address,uint256,uint256,bytes)` can be used instead."
              },
              "fullyImplemented": false,
              "id": 7753,
              "linearizedBaseContracts": [
                7753
              ],
              "name": "IERC1155721InventoryMintable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 7700,
                    "nodeType": "StructuredDocumentation",
                    "src": "389:1017:35",
                    "text": " Safely mints some token (ERC1155-compatible).\n @dev Reverts if `to` is the zero address.\n @dev Reverts if `id` is not a token.\n @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n @dev Reverts if `id` represents a Non-Fungible Token which has already been minted.\n @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n @dev Reverts if `id` represents a Fungible Token and there is an overflow of supply.\n @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155Received} fails or is refused.\n @dev Emits an {IERC721-Transfer} event from the zero address if `id` represents a Non-Fungible Token.\n @dev Emits an {IERC1155-TransferSingle} event from the zero address.\n @param to Address of the new token owner.\n @param id Identifier of the token to mint.\n @param value Amount of token to mint.\n @param data Optional data to send along to a receiver contract."
                  },
                  "functionSelector": "5cfa9297",
                  "id": 7711,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7709,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7702,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 7711,
                        "src": "1438:10:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7701,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1438:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7704,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 7711,
                        "src": "1458:10:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7703,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1458:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7706,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 7711,
                        "src": "1478:13:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7705,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1478:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7708,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 7711,
                        "src": "1501:19:35",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7707,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1501:5:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1428:98:35"
                  },
                  "returnParameters": {
                    "id": 7710,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1535:0:35"
                  },
                  "scope": 7753,
                  "src": "1411:125:35",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7712,
                    "nodeType": "StructuredDocumentation",
                    "src": "1542:1154:35",
                    "text": " Safely mints a batch of tokens (ERC1155-compatible).\n @dev Reverts if `ids` and `values` have different lengths.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if one of `ids` is not a token.\n @dev Reverts if one of `ids` represents a Non-Fungible Token and its paired value is not 1.\n @dev Reverts if one of `ids` represents a Non-Fungible Token which has already been minted.\n @dev Reverts if one of `ids` represents a Fungible Token and its paired value is 0.\n @dev Reverts if one of `ids` represents a Fungible Token and there is an overflow of supply.\n @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n @dev Emits an {IERC721-Transfer} event from the zero address for each Non-Fungible Token minted.\n @dev Emits an {IERC1155-TransferBatch} event from the zero address.\n @param to Address of the new tokens owner.\n @param ids Identifiers of the tokens to mint.\n @param values Amounts of tokens to mint.\n @param data Optional data to send along to a receiver contract."
                  },
                  "functionSelector": "0d6a5bbb",
                  "id": 7725,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7723,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7714,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 7725,
                        "src": "2733:10:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7713,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2733:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7717,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 7725,
                        "src": "2753:22:35",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7715,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2753:7:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7716,
                          "nodeType": "ArrayTypeName",
                          "src": "2753:9:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7720,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 7725,
                        "src": "2785:25:35",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7718,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2785:7:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7719,
                          "nodeType": "ArrayTypeName",
                          "src": "2785:9:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7722,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 7725,
                        "src": "2820:19:35",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7721,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2820:5:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2723:122:35"
                  },
                  "returnParameters": {
                    "id": 7724,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2854:0:35"
                  },
                  "scope": 7753,
                  "src": "2701:154:35",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7726,
                    "nodeType": "StructuredDocumentation",
                    "src": "2861:633:35",
                    "text": " Unsafely mints a Non-Fungible Token (ERC721-compatible).\n @dev Reverts if `to` is the zero address.\n @dev Reverts if `nftId` does not represent a Non-Fungible Token.\n @dev Reverts if `nftId` has already been minted.\n @dev Emits an {IERC721-Transfer} event from the zero address.\n @dev Emits an {IERC1155-TransferSingle} event from the zero address.\n @dev If `to` is a contract and supports ERC1155TokenReceiver, calls {IERC1155TokenReceiver-onERC1155Received} with empty data.\n @param to Address of the new token owner.\n @param nftId Identifier of the token to mint."
                  },
                  "functionSelector": "40c10f19",
                  "id": 7733,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7731,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7728,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 7733,
                        "src": "3513:10:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7727,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3513:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7730,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 7733,
                        "src": "3525:13:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7729,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3525:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3512:27:35"
                  },
                  "returnParameters": {
                    "id": 7732,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3548:0:35"
                  },
                  "scope": 7753,
                  "src": "3499:50:35",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7734,
                    "nodeType": "StructuredDocumentation",
                    "src": "3555:687:35",
                    "text": " Unsafely mints a batch of Non-Fungible Tokens (ERC721-compatible).\n @dev Reverts if `to` is the zero address.\n @dev Reverts if one of `nftIds` does not represent a Non-Fungible Token.\n @dev Reverts if one of `nftIds` has already been minted.\n @dev Emits an {IERC721-Transfer} event from the zero address for each of `nftIds`.\n @dev Emits an {IERC1155-TransferBatch} event from the zero address.\n @dev If `to` is a contract and supports ERC1155TokenReceiver, calls {IERC1155TokenReceiver-onERC1155BatchReceived} with empty data.\n @param to Address of the new token owner.\n @param nftIds Identifiers of the tokens to mint."
                  },
                  "functionSelector": "4684d7e9",
                  "id": 7742,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7740,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7736,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 7742,
                        "src": "4266:10:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7735,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4266:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7739,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 7742,
                        "src": "4278:25:35",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7737,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4278:7:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7738,
                          "nodeType": "ArrayTypeName",
                          "src": "4278:9:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4265:39:35"
                  },
                  "returnParameters": {
                    "id": 7741,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4313:0:35"
                  },
                  "scope": 7753,
                  "src": "4247:67:35",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7743,
                    "nodeType": "StructuredDocumentation",
                    "src": "4320:708:35",
                    "text": " Safely mints a token (ERC721-compatible).\n @dev Reverts if `to` is the zero address.\n @dev Reverts if `tokenId` has already ben minted.\n @dev Reverts if `to` is a contract which does not implement IERC721Receiver or IERC1155TokenReceiver.\n @dev Reverts if `to` is an IERC1155TokenReceiver or IERC721TokenReceiver contract which refuses the transfer.\n @dev Emits an {IERC721-Transfer} event from the zero address.\n @dev Emits an {IERC1155-TransferSingle} event from the zero address.\n @param to Address of the new token owner.\n @param nftId Identifier of the token to mint.\n @param data Optional data to pass along to the receiver call."
                  },
                  "functionSelector": "8832e6e3",
                  "id": 7752,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7750,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7745,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 7752,
                        "src": "5060:10:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7744,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5060:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7747,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 7752,
                        "src": "5080:13:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7746,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5080:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7749,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 7752,
                        "src": "5103:19:35",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7748,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5103:5:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5050:78:35"
                  },
                  "returnParameters": {
                    "id": 7751,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5137:0:35"
                  },
                  "scope": 7753,
                  "src": "5033:105:35",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 7754,
              "src": "344:4796:35"
            }
          ],
          "src": "33:5108:35"
        },
        "id": 35
      },
      "contracts/token/ERC1155721/mocks/ERC1155721InventoryMock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/mocks/ERC1155721InventoryMock.sol",
          "exportedSymbols": {
            "ERC1155721Inventory": [
              6851
            ],
            "ERC1155721InventoryMock": [
              8071
            ],
            "IERC1155721InventoryDeliverable": [
              7696
            ],
            "IERC1155721InventoryMintable": [
              7753
            ],
            "IERC1155InventoryCreator": [
              3671
            ],
            "IERC1155MetadataURI": [
              3750
            ],
            "IERC165": [
              218
            ],
            "IForwarderRegistry": [
              15006
            ],
            "ManagedIdentity": [
              322
            ],
            "MinterRole": [
              125
            ],
            "NFTBaseMetadataURI": [
              1431
            ],
            "Recoverable": [
              1253
            ],
            "UsingUniversalForwarding": [
              15172
            ]
          },
          "id": 8072,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7755,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:36"
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "id": 7757,
              "nodeType": "ImportDirective",
              "scope": 8072,
              "sourceUnit": 15007,
              "src": "66:108:36",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7756,
                    "name": "IForwarderRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:18:36",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 7759,
              "nodeType": "ImportDirective",
              "scope": 8072,
              "sourceUnit": 219,
              "src": "175:93:36",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7758,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "183:7:36",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol",
              "file": "./../../../token/ERC1155/interfaces/IERC1155MetadataURI.sol",
              "id": 7761,
              "nodeType": "ImportDirective",
              "scope": 8072,
              "sourceUnit": 3751,
              "src": "269:96:36",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7760,
                    "name": "IERC1155MetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "277:19:36",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryCreator.sol",
              "file": "./../../../token/ERC1155/interfaces/IERC1155InventoryCreator.sol",
              "id": 7763,
              "nodeType": "ImportDirective",
              "scope": 8072,
              "sourceUnit": 3672,
              "src": "366:106:36",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7762,
                    "name": "IERC1155InventoryCreator",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "374:24:36",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryMintable.sol",
              "file": "./../interfaces/IERC1155721InventoryMintable.sol",
              "id": 7765,
              "nodeType": "ImportDirective",
              "scope": 8072,
              "sourceUnit": 7754,
              "src": "473:94:36",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7764,
                    "name": "IERC1155721InventoryMintable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "481:28:36",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryDeliverable.sol",
              "file": "./../interfaces/IERC1155721InventoryDeliverable.sol",
              "id": 7767,
              "nodeType": "ImportDirective",
              "scope": 8072,
              "sourceUnit": 7697,
              "src": "568:100:36",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7766,
                    "name": "IERC1155721InventoryDeliverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "576:31:36",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 7769,
              "nodeType": "ImportDirective",
              "scope": 8072,
              "sourceUnit": 323,
              "src": "669:102:36",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7768,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "677:15:36",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "id": 7771,
              "nodeType": "ImportDirective",
              "scope": 8072,
              "sourceUnit": 1265,
              "src": "772:93:36",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7770,
                    "name": "Recoverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "780:11:36",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "id": 7773,
              "nodeType": "ImportDirective",
              "scope": 8072,
              "sourceUnit": 15173,
              "src": "866:120:36",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7772,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "874:24:36",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "id": 7775,
              "nodeType": "ImportDirective",
              "scope": 8072,
              "sourceUnit": 126,
              "src": "987:92:36",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7774,
                    "name": "MinterRole",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "995:10:36",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/ERC1155721Inventory.sol",
              "file": "./../ERC1155721Inventory.sol",
              "id": 7777,
              "nodeType": "ImportDirective",
              "scope": 8072,
              "sourceUnit": 6852,
              "src": "1080:65:36",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7776,
                    "name": "ERC1155721Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "1088:19:36",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/metadata/NFTBaseMetadataURI.sol",
              "file": "./../../../metadata/NFTBaseMetadataURI.sol",
              "id": 7779,
              "nodeType": "ImportDirective",
              "scope": 8072,
              "sourceUnit": 1432,
              "src": "1146:78:36",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7778,
                    "name": "NFTBaseMetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "1154:18:36",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 7781,
                    "name": "Recoverable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1253,
                    "src": "1317:11:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Recoverable_$1253",
                      "typeString": "contract Recoverable"
                    }
                  },
                  "id": 7782,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1317:11:36"
                },
                {
                  "baseName": {
                    "id": 7783,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15172,
                    "src": "1334:24:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                      "typeString": "contract UsingUniversalForwarding"
                    }
                  },
                  "id": 7784,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1334:24:36"
                },
                {
                  "baseName": {
                    "id": 7785,
                    "name": "ERC1155721Inventory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6851,
                    "src": "1364:19:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155721Inventory_$6851",
                      "typeString": "contract ERC1155721Inventory"
                    }
                  },
                  "id": 7786,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1364:19:36"
                },
                {
                  "baseName": {
                    "id": 7787,
                    "name": "IERC1155721InventoryMintable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7753,
                    "src": "1389:28:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155721InventoryMintable_$7753",
                      "typeString": "contract IERC1155721InventoryMintable"
                    }
                  },
                  "id": 7788,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1389:28:36"
                },
                {
                  "baseName": {
                    "id": 7789,
                    "name": "IERC1155721InventoryDeliverable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7696,
                    "src": "1423:31:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155721InventoryDeliverable_$7696",
                      "typeString": "contract IERC1155721InventoryDeliverable"
                    }
                  },
                  "id": 7790,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1423:31:36"
                },
                {
                  "baseName": {
                    "id": 7791,
                    "name": "IERC1155InventoryCreator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3671,
                    "src": "1460:24:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155InventoryCreator_$3671",
                      "typeString": "contract IERC1155InventoryCreator"
                    }
                  },
                  "id": 7792,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1460:24:36"
                },
                {
                  "baseName": {
                    "id": 7793,
                    "name": "NFTBaseMetadataURI",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1431,
                    "src": "1490:18:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_NFTBaseMetadataURI_$1431",
                      "typeString": "contract NFTBaseMetadataURI"
                    }
                  },
                  "id": 7794,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1490:18:36"
                },
                {
                  "baseName": {
                    "id": 7795,
                    "name": "MinterRole",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 125,
                    "src": "1514:10:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MinterRole_$125",
                      "typeString": "contract MinterRole"
                    }
                  },
                  "id": 7796,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1514:10:36"
                }
              ],
              "contractDependencies": [
                22,
                125,
                206,
                218,
                322,
                1253,
                1431,
                2882,
                3530,
                3633,
                3671,
                3696,
                3738,
                3750,
                6851,
                7642,
                7696,
                7753,
                13702,
                13717,
                13790,
                14994,
                15031,
                15172
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 7780,
                "nodeType": "StructuredDocumentation",
                "src": "1226:50:36",
                "text": " @title ERC1155 & ERC721 Inventory Mock."
              },
              "fullyImplemented": true,
              "id": 8071,
              "linearizedBaseContracts": [
                8071,
                125,
                1431,
                3671,
                7696,
                7753,
                6851,
                2882,
                3738,
                3750,
                13790,
                7642,
                13717,
                13702,
                3633,
                3696,
                3530,
                218,
                15172,
                14994,
                15031,
                1253,
                206,
                22,
                322
              ],
              "name": "ERC1155721InventoryMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 7818,
                    "nodeType": "Block",
                    "src": "1860:2:36",
                    "statements": []
                  },
                  "id": 7819,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "hexValue": "45524331313535373231496e76656e746f72794d6f636b",
                          "id": 7805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1697:25:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_0332de2471ce609f047a9d455add1769fc5ec6d639245e65039a40bb918fc37e",
                            "typeString": "literal_string \"ERC1155721InventoryMock\""
                          },
                          "value": "ERC1155721InventoryMock"
                        },
                        {
                          "hexValue": "494e56",
                          "id": 7806,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1724:5:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_8c76b8d7f7f50b0c2844b912a65fd8ef18eb86555edf37a9ff9cd289e22d9165",
                            "typeString": "literal_string \"INV\""
                          },
                          "value": "INV"
                        },
                        {
                          "id": 7807,
                          "name": "collectionMaskLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7802,
                          "src": "1731:20:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 7808,
                      "modifierName": {
                        "id": 7804,
                        "name": "ERC1155721Inventory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6851,
                        "src": "1677:19:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155721Inventory_$6851_$",
                          "typeString": "type(contract ERC1155721Inventory)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1677:75:36"
                    },
                    {
                      "arguments": [
                        {
                          "id": 7810,
                          "name": "forwarderRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7798,
                          "src": "1786:17:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        {
                          "id": 7811,
                          "name": "universalForwarder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7800,
                          "src": "1805:18:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 7812,
                      "modifierName": {
                        "id": 7809,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15172,
                        "src": "1761:24:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                          "typeString": "type(contract UsingUniversalForwarding)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1761:63:36"
                    },
                    {
                      "arguments": [
                        {
                          "expression": {
                            "id": 7814,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1844:3:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 7815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1844:10:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "id": 7816,
                      "modifierName": {
                        "id": 7813,
                        "name": "MinterRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 125,
                        "src": "1833:10:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MinterRole_$125_$",
                          "typeString": "type(contract MinterRole)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1833:22:36"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7803,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7798,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 7819,
                        "src": "1552:36:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 7797,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15006,
                          "src": "1552:18:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7800,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 7819,
                        "src": "1598:26:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7799,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1598:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7802,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 7819,
                        "src": "1634:28:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7801,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1634:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1542:126:36"
                  },
                  "returnParameters": {
                    "id": 7817,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1860:0:36"
                  },
                  "scope": 8071,
                  "src": "1531:331:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4685
                  ],
                  "body": {
                    "id": 7840,
                    "nodeType": "Block",
                    "src": "2116:121:36",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 7838,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 7833,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7828,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7822,
                              "src": "2133:11:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 7830,
                                    "name": "IERC1155InventoryCreator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3671,
                                    "src": "2153:24:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryCreator_$3671_$",
                                      "typeString": "type(contract IERC1155InventoryCreator)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryCreator_$3671_$",
                                      "typeString": "type(contract IERC1155InventoryCreator)"
                                    }
                                  ],
                                  "id": 7829,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "2148:4:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 7831,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2148:30:36",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155InventoryCreator_$3671",
                                  "typeString": "type(contract IERC1155InventoryCreator)"
                                }
                              },
                              "id": 7832,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "2148:42:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "2133:57:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 7836,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7822,
                                "src": "2218:11:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 7834,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "2194:5:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_super$_ERC1155721InventoryMock_$8071",
                                  "typeString": "contract super ERC1155721InventoryMock"
                                }
                              },
                              "id": 7835,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4685,
                              "src": "2194:23:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 7837,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2194:36:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2133:97:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 7827,
                        "id": 7839,
                        "nodeType": "Return",
                        "src": "2126:104:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7820,
                    "nodeType": "StructuredDocumentation",
                    "src": "1997:23:36",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 7841,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7824,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2092:8:36"
                  },
                  "parameters": {
                    "id": 7823,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7822,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 7841,
                        "src": "2052:18:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 7821,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2052:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2051:20:36"
                  },
                  "returnParameters": {
                    "id": 7827,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7826,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7841,
                        "src": "2110:4:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7825,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2110:4:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2109:6:36"
                  },
                  "scope": 8071,
                  "src": "2025:212:36",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4746
                  ],
                  "body": {
                    "id": 7854,
                    "nodeType": "Block",
                    "src": "2490:32:36",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7851,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7844,
                              "src": "2512:2:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7850,
                            "name": "_uri",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1430,
                            "src": "2507:4:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256) view returns (string memory)"
                            }
                          },
                          "id": 7852,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2507:8:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 7849,
                        "id": 7853,
                        "nodeType": "Return",
                        "src": "2500:15:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7842,
                    "nodeType": "StructuredDocumentation",
                    "src": "2372:35:36",
                    "text": "@inheritdoc IERC1155MetadataURI"
                  },
                  "functionSelector": "0e89341c",
                  "id": 7855,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7846,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2457:8:36"
                  },
                  "parameters": {
                    "id": 7845,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7844,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 7855,
                        "src": "2425:10:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7843,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2425:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2424:12:36"
                  },
                  "returnParameters": {
                    "id": 7849,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7848,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7855,
                        "src": "2475:13:36",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 7847,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2475:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2474:15:36"
                  },
                  "scope": 8071,
                  "src": "2412:110:36",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3670
                  ],
                  "body": {
                    "id": 7868,
                    "nodeType": "Block",
                    "src": "2782:46:36",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7865,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7858,
                              "src": "2808:12:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7864,
                            "name": "_creator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "2799:8:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 7866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2799:22:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 7863,
                        "id": 7867,
                        "nodeType": "Return",
                        "src": "2792:29:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7856,
                    "nodeType": "StructuredDocumentation",
                    "src": "2657:40:36",
                    "text": "@inheritdoc IERC1155InventoryCreator"
                  },
                  "functionSelector": "510b5158",
                  "id": 7869,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "creator",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7860,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2755:8:36"
                  },
                  "parameters": {
                    "id": 7859,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7858,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 7869,
                        "src": "2719:20:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7857,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2719:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2718:22:36"
                  },
                  "returnParameters": {
                    "id": 7863,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7862,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7869,
                        "src": "2773:7:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7861,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2773:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2772:9:36"
                  },
                  "scope": 8071,
                  "src": "2702:126:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7884,
                    "nodeType": "Block",
                    "src": "3383:89:36",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 7876,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  8048
                                ],
                                "referencedDeclaration": 8048,
                                "src": "3411:10:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 7877,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3411:12:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 7875,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "3393:17:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 7878,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3393:31:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7879,
                        "nodeType": "ExpressionStatement",
                        "src": "3393:31:36"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7881,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7872,
                              "src": "3452:12:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7880,
                            "name": "_createCollection",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2772,
                            "src": "3434:17:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 7882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3434:31:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7883,
                        "nodeType": "ExpressionStatement",
                        "src": "3434:31:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7870,
                    "nodeType": "StructuredDocumentation",
                    "src": "2963:358:36",
                    "text": " Creates a collection.\n @dev Reverts if the sender is not the contract owner.\n @dev Reverts if `collectionId` does not represent a collection.\n @dev Reverts if `collectionId` has already been created.\n @dev Emits a {IERC1155Inventory-CollectionCreated} event.\n @param collectionId Identifier of the collection."
                  },
                  "functionSelector": "d0011d9d",
                  "id": 7885,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "createCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7873,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7872,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 7885,
                        "src": "3352:20:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7871,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3352:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3351:22:36"
                  },
                  "returnParameters": {
                    "id": 7874,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3383:0:36"
                  },
                  "scope": 8071,
                  "src": "3326:146:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7733
                  ],
                  "body": {
                    "id": 7906,
                    "nodeType": "Block",
                    "src": "3775:82:36",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 7895,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  8048
                                ],
                                "referencedDeclaration": 8048,
                                "src": "3800:10:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 7896,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3800:12:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 7894,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "3785:14:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 7897,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3785:28:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7898,
                        "nodeType": "ExpressionStatement",
                        "src": "3785:28:36"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7900,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7888,
                              "src": "3829:2:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 7901,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7890,
                              "src": "3833:5:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 7902,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3840:2:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 7903,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3844:5:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 7899,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5747,
                            "src": "3823:5:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 7904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3823:27:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7905,
                        "nodeType": "ExpressionStatement",
                        "src": "3823:27:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7886,
                    "nodeType": "StructuredDocumentation",
                    "src": "3607:96:36",
                    "text": "@inheritdoc IERC1155721InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "40c10f19",
                  "id": 7907,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7892,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3766:8:36"
                  },
                  "parameters": {
                    "id": 7891,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7888,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 7907,
                        "src": "3722:10:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7887,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3722:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7890,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 7907,
                        "src": "3734:13:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7889,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3734:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3721:27:36"
                  },
                  "returnParameters": {
                    "id": 7893,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3775:0:36"
                  },
                  "scope": 8071,
                  "src": "3708:149:36",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7742
                  ],
                  "body": {
                    "id": 7927,
                    "nodeType": "Block",
                    "src": "4048:77:36",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 7918,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  8048
                                ],
                                "referencedDeclaration": 8048,
                                "src": "4073:10:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 7919,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4073:12:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 7917,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "4058:14:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 7920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4058:28:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7921,
                        "nodeType": "ExpressionStatement",
                        "src": "4058:28:36"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7923,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7910,
                              "src": "4107:2:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 7924,
                              "name": "nftIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7913,
                              "src": "4111:6:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            ],
                            "id": 7922,
                            "name": "_batchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5940,
                            "src": "4096:10:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory)"
                            }
                          },
                          "id": 7925,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4096:22:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7926,
                        "nodeType": "ExpressionStatement",
                        "src": "4096:22:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7908,
                    "nodeType": "StructuredDocumentation",
                    "src": "3863:96:36",
                    "text": "@inheritdoc IERC1155721InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "4684d7e9",
                  "id": 7928,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7915,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4039:8:36"
                  },
                  "parameters": {
                    "id": 7914,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7910,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 7928,
                        "src": "3983:10:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7909,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3983:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7913,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 7928,
                        "src": "3995:25:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7911,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3995:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7912,
                          "nodeType": "ArrayTypeName",
                          "src": "3995:9:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3982:39:36"
                  },
                  "returnParameters": {
                    "id": 7916,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4048:0:36"
                  },
                  "scope": 8071,
                  "src": "3964:161:36",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7752
                  ],
                  "body": {
                    "id": 7951,
                    "nodeType": "Block",
                    "src": "4354:83:36",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 7940,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  8048
                                ],
                                "referencedDeclaration": 8048,
                                "src": "4379:10:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 7941,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4379:12:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 7939,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "4364:14:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 7942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4364:28:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7943,
                        "nodeType": "ExpressionStatement",
                        "src": "4364:28:36"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7945,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7931,
                              "src": "4408:2:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 7946,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7933,
                              "src": "4412:5:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7947,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7935,
                              "src": "4419:4:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 7948,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4425:4:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 7944,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5747,
                            "src": "4402:5:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 7949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4402:28:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7950,
                        "nodeType": "ExpressionStatement",
                        "src": "4402:28:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7929,
                    "nodeType": "StructuredDocumentation",
                    "src": "4131:96:36",
                    "text": "@inheritdoc IERC1155721InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "8832e6e3",
                  "id": 7952,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7937,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4345:8:36"
                  },
                  "parameters": {
                    "id": 7936,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7931,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 7952,
                        "src": "4259:10:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7930,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4259:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7933,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 7952,
                        "src": "4279:13:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7932,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4279:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7935,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 7952,
                        "src": "4302:19:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7934,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4302:5:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4249:78:36"
                  },
                  "returnParameters": {
                    "id": 7938,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4354:0:36"
                  },
                  "scope": 8071,
                  "src": "4232:205:36",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7711
                  ],
                  "body": {
                    "id": 7977,
                    "nodeType": "Block",
                    "src": "4686:85:36",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 7966,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  8048
                                ],
                                "referencedDeclaration": 8048,
                                "src": "4711:10:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 7967,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4711:12:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 7965,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "4696:14:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 7968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4696:28:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7969,
                        "nodeType": "ExpressionStatement",
                        "src": "4696:28:36"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7971,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7955,
                              "src": "4744:2:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 7972,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7957,
                              "src": "4748:2:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7973,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7959,
                              "src": "4752:5:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7974,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7961,
                              "src": "4759:4:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 7970,
                            "name": "_safeMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6033,
                            "src": "4734:9:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 7975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4734:30:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7976,
                        "nodeType": "ExpressionStatement",
                        "src": "4734:30:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7953,
                    "nodeType": "StructuredDocumentation",
                    "src": "4443:96:36",
                    "text": "@inheritdoc IERC1155721InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "5cfa9297",
                  "id": 7978,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7963,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4677:8:36"
                  },
                  "parameters": {
                    "id": 7962,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7955,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 7978,
                        "src": "4571:10:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7954,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4571:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7957,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 7978,
                        "src": "4591:10:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7956,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4591:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7959,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 7978,
                        "src": "4611:13:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7958,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4611:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7961,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 7978,
                        "src": "4634:19:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7960,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4634:5:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4561:98:36"
                  },
                  "returnParameters": {
                    "id": 7964,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4686:0:36"
                  },
                  "scope": 8071,
                  "src": "4544:227:36",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7725
                  ],
                  "body": {
                    "id": 8005,
                    "nodeType": "Block",
                    "src": "5049:92:36",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 7994,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  8048
                                ],
                                "referencedDeclaration": 8048,
                                "src": "5074:10:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 7995,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5074:12:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 7993,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "5059:14:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 7996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5059:28:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7997,
                        "nodeType": "ExpressionStatement",
                        "src": "5059:28:36"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7999,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7981,
                              "src": "5112:2:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8000,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7984,
                              "src": "5116:3:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 8001,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7987,
                              "src": "5121:6:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 8002,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7989,
                              "src": "5129:4:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 7998,
                            "name": "_safeBatchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6254,
                            "src": "5097:14:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 8003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5097:37:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8004,
                        "nodeType": "ExpressionStatement",
                        "src": "5097:37:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7979,
                    "nodeType": "StructuredDocumentation",
                    "src": "4777:96:36",
                    "text": "@inheritdoc IERC1155721InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "0d6a5bbb",
                  "id": 8006,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7991,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5040:8:36"
                  },
                  "parameters": {
                    "id": 7990,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7981,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 8006,
                        "src": "4910:10:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7980,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4910:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7984,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 8006,
                        "src": "4930:22:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7982,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4930:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7983,
                          "nodeType": "ArrayTypeName",
                          "src": "4930:9:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7987,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 8006,
                        "src": "4962:25:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7985,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4962:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7986,
                          "nodeType": "ArrayTypeName",
                          "src": "4962:9:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7989,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 8006,
                        "src": "4997:19:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7988,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4997:5:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4900:122:36"
                  },
                  "returnParameters": {
                    "id": 7992,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5049:0:36"
                  },
                  "scope": 8071,
                  "src": "4878:263:36",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7695
                  ],
                  "body": {
                    "id": 8034,
                    "nodeType": "Block",
                    "src": "5570:98:36",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 8023,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  8048
                                ],
                                "referencedDeclaration": 8048,
                                "src": "5595:10:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 8024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5595:12:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 8022,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "5580:14:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 8025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5580:28:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8026,
                        "nodeType": "ExpressionStatement",
                        "src": "5580:28:36"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8028,
                              "name": "recipients",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8010,
                              "src": "5631:10:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            {
                              "id": 8029,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8013,
                              "src": "5643:3:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 8030,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8016,
                              "src": "5648:6:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 8031,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8018,
                              "src": "5656:4:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 8027,
                            "name": "_safeDeliver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6440,
                            "src": "5618:12:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$returns$__$",
                              "typeString": "function (address[] calldata,uint256[] calldata,uint256[] calldata,bytes calldata)"
                            }
                          },
                          "id": 8032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5618:43:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8033,
                        "nodeType": "ExpressionStatement",
                        "src": "5618:43:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8007,
                    "nodeType": "StructuredDocumentation",
                    "src": "5278:99:36",
                    "text": "@inheritdoc IERC1155721InventoryDeliverable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "e8ab9ccc",
                  "id": 8035,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeDeliver",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8020,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5561:8:36"
                  },
                  "parameters": {
                    "id": 8019,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8010,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 8035,
                        "src": "5412:29:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8008,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5412:7:36",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 8009,
                          "nodeType": "ArrayTypeName",
                          "src": "5412:9:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8013,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 8035,
                        "src": "5451:22:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8011,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5451:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8012,
                          "nodeType": "ArrayTypeName",
                          "src": "5451:9:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8016,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 8035,
                        "src": "5483:25:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8014,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5483:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8015,
                          "nodeType": "ArrayTypeName",
                          "src": "5483:9:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8018,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 8035,
                        "src": "5518:19:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8017,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5518:5:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5402:141:36"
                  },
                  "returnParameters": {
                    "id": 8021,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5570:0:36"
                  },
                  "scope": 8071,
                  "src": "5382:286:36",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    312,
                    15126
                  ],
                  "body": {
                    "id": 8047,
                    "nodeType": "Block",
                    "src": "5925:61:36",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 8043,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "5942:24:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 8044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgSender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15126,
                            "src": "5942:35:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 8045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5942:37:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 8042,
                        "id": 8046,
                        "nodeType": "Return",
                        "src": "5935:44:36"
                      }
                    ]
                  },
                  "id": 8048,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8039,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 8037,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "5856:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 8038,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "5873:24:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "5847:51:36"
                  },
                  "parameters": {
                    "id": 8036,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5822:2:36"
                  },
                  "returnParameters": {
                    "id": 8042,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8041,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8048,
                        "src": "5908:15:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 8040,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5908:15:36",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5907:17:36"
                  },
                  "scope": 8071,
                  "src": "5803:183:36",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    321,
                    15171
                  ],
                  "body": {
                    "id": 8060,
                    "nodeType": "Block",
                    "src": "6113:59:36",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 8056,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "6130:24:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 8057,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15171,
                            "src": "6130:33:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$",
                              "typeString": "function () view returns (bytes calldata)"
                            }
                          },
                          "id": 8058,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6130:35:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 8055,
                        "id": 8059,
                        "nodeType": "Return",
                        "src": "6123:42:36"
                      }
                    ]
                  },
                  "id": 8061,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8052,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 8050,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "6043:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 8051,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "6060:24:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "6034:51:36"
                  },
                  "parameters": {
                    "id": 8049,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6009:2:36"
                  },
                  "returnParameters": {
                    "id": 8055,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8054,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 8061,
                        "src": "6095:16:36",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8053,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6095:5:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6094:18:36"
                  },
                  "scope": 8071,
                  "src": "5992:180:36",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8069,
                    "nodeType": "Block",
                    "src": "6367:34:36",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8066,
                            "name": "_msgData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8061
                            ],
                            "referencedDeclaration": 8061,
                            "src": "6384:8:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () view returns (bytes memory)"
                            }
                          },
                          "id": 8067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6384:10:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 8065,
                        "id": 8068,
                        "nodeType": "Return",
                        "src": "6377:17:36"
                      }
                    ]
                  },
                  "functionSelector": "c4c2bfdc",
                  "id": 8070,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8062,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6323:2:36"
                  },
                  "returnParameters": {
                    "id": 8065,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8064,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 8070,
                        "src": "6349:16:36",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8063,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6349:5:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6348:18:36"
                  },
                  "scope": 8071,
                  "src": "6307:94:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 8072,
              "src": "1277:5126:36"
            }
          ],
          "src": "33:6371:36"
        },
        "id": 36
      },
      "contracts/token/ERC1155721/mocks/ERC1155721ReceiverMock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/mocks/ERC1155721ReceiverMock.sol",
          "exportedSymbols": {
            "ERC1155721ReceiverMock": [
              8127
            ],
            "ERC1155TokenReceiver": [
              3415
            ],
            "ERC1155TokenReceiverMock": [
              4572
            ],
            "ERC721Receiver": [
              12955
            ],
            "ERC721ReceiverMock": [
              14530
            ],
            "IERC165": [
              218
            ]
          },
          "id": 8128,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8073,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:37"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 8075,
              "nodeType": "ImportDirective",
              "scope": 8128,
              "sourceUnit": 219,
              "src": "66:93:37",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8074,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:7:37",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/mocks/ERC721ReceiverMock.sol",
              "file": "./../../ERC721/mocks/ERC721ReceiverMock.sol",
              "id": 8078,
              "nodeType": "ImportDirective",
              "scope": 8128,
              "sourceUnit": 14531,
              "src": "160:95:37",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8076,
                    "name": "ERC721Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "168:14:37",
                    "typeDescriptions": {}
                  }
                },
                {
                  "foreign": {
                    "id": 8077,
                    "name": "ERC721ReceiverMock",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "184:18:37",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/mocks/ERC1155TokenReceiverMock.sol",
              "file": "./../../ERC1155/mocks/ERC1155TokenReceiverMock.sol",
              "id": 8081,
              "nodeType": "ImportDirective",
              "scope": 8128,
              "sourceUnit": 4573,
              "src": "256:114:37",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8079,
                    "name": "ERC1155TokenReceiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "264:20:37",
                    "typeDescriptions": {}
                  }
                },
                {
                  "foreign": {
                    "id": 8080,
                    "name": "ERC1155TokenReceiverMock",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "286:24:37",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 8083,
                    "name": "ERC721ReceiverMock",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14530,
                    "src": "472:18:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC721ReceiverMock_$14530",
                      "typeString": "contract ERC721ReceiverMock"
                    }
                  },
                  "id": 8084,
                  "nodeType": "InheritanceSpecifier",
                  "src": "472:18:37"
                },
                {
                  "baseName": {
                    "id": 8085,
                    "name": "ERC1155TokenReceiverMock",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4572,
                    "src": "492:24:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155TokenReceiverMock_$4572",
                      "typeString": "contract ERC1155TokenReceiverMock"
                    }
                  },
                  "id": 8086,
                  "nodeType": "InheritanceSpecifier",
                  "src": "492:24:37"
                }
              ],
              "contractDependencies": [
                218,
                3415,
                3788,
                4572,
                12955,
                13839,
                14530
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 8082,
                "nodeType": "StructuredDocumentation",
                "src": "372:64:37",
                "text": " @title ERC721 Receiver & ERC1155 Token Receiver Mock."
              },
              "fullyImplemented": true,
              "id": 8127,
              "linearizedBaseContracts": [
                8127,
                4572,
                3415,
                3788,
                14530,
                12955,
                13839,
                218
              ],
              "name": "ERC1155721ReceiverMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 8103,
                    "nodeType": "Block",
                    "src": "723:2:37",
                    "statements": []
                  },
                  "id": 8104,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 8095,
                          "name": "supports721",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8088,
                          "src": "643:11:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "id": 8096,
                          "name": "tokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8092,
                          "src": "656:12:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 8097,
                      "modifierName": {
                        "id": 8094,
                        "name": "ERC721ReceiverMock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14530,
                        "src": "624:18:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC721ReceiverMock_$14530_$",
                          "typeString": "type(contract ERC721ReceiverMock)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "624:45:37"
                    },
                    {
                      "arguments": [
                        {
                          "id": 8099,
                          "name": "supports1155",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8090,
                          "src": "695:12:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "id": 8100,
                          "name": "tokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8092,
                          "src": "709:12:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 8101,
                      "modifierName": {
                        "id": 8098,
                        "name": "ERC1155TokenReceiverMock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4572,
                        "src": "670:24:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155TokenReceiverMock_$4572_$",
                          "typeString": "type(contract ERC1155TokenReceiverMock)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "670:52:37"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8093,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8088,
                        "mutability": "mutable",
                        "name": "supports721",
                        "nodeType": "VariableDeclaration",
                        "scope": 8104,
                        "src": "544:16:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8087,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "544:4:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8090,
                        "mutability": "mutable",
                        "name": "supports1155",
                        "nodeType": "VariableDeclaration",
                        "scope": 8104,
                        "src": "570:17:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8089,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "570:4:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8092,
                        "mutability": "mutable",
                        "name": "tokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8104,
                        "src": "597:20:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8091,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "597:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "534:89:37"
                  },
                  "returnParameters": {
                    "id": 8102,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "723:0:37"
                  },
                  "scope": 8127,
                  "src": "523:202:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3414,
                    12954
                  ],
                  "body": {
                    "id": 8125,
                    "nodeType": "Block",
                    "src": "888:124:37",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 8123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 8117,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8107,
                                "src": "938:11:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 8115,
                                "name": "ERC721Receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12955,
                                "src": "905:14:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC721Receiver_$12955_$",
                                  "typeString": "type(contract ERC721Receiver)"
                                }
                              },
                              "id": 8116,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12954,
                              "src": "905:32:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 8118,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "905:45:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 8121,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8107,
                                "src": "993:11:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 8119,
                                "name": "ERC1155TokenReceiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3415,
                                "src": "954:20:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC1155TokenReceiver_$3415_$",
                                  "typeString": "type(contract ERC1155TokenReceiver)"
                                }
                              },
                              "id": 8120,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3414,
                              "src": "954:38:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 8122,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "954:51:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "905:100:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 8114,
                        "id": 8124,
                        "nodeType": "Return",
                        "src": "898:107:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8105,
                    "nodeType": "StructuredDocumentation",
                    "src": "731:23:37",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 8126,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8111,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 8109,
                        "name": "ERC721Receiver",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12955,
                        "src": "835:14:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC721Receiver_$12955",
                          "typeString": "contract ERC721Receiver"
                        }
                      },
                      {
                        "id": 8110,
                        "name": "ERC1155TokenReceiver",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3415,
                        "src": "851:20:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155TokenReceiver_$3415",
                          "typeString": "contract ERC1155TokenReceiver"
                        }
                      }
                    ],
                    "src": "826:46:37"
                  },
                  "parameters": {
                    "id": 8108,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8107,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 8126,
                        "src": "786:18:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 8106,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "786:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "785:20:37"
                  },
                  "returnParameters": {
                    "id": 8114,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8113,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8126,
                        "src": "882:4:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8112,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "882:4:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "881:6:37"
                  },
                  "scope": 8127,
                  "src": "759:253:37",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 8128,
              "src": "437:577:37"
            }
          ],
          "src": "33:982:37"
        },
        "id": 37
      },
      "contracts/token/ERC20/ERC20.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/ERC20.sol",
          "exportedSymbols": {
            "AddressIsContract": [
              1285
            ],
            "ERC20": [
              9715
            ],
            "IERC165": [
              218
            ],
            "IERC20": [
              9947
            ],
            "IERC20Allowance": [
              9971
            ],
            "IERC20BatchTransfers": [
              10001
            ],
            "IERC20Detailed": [
              10057
            ],
            "IERC20Metadata": [
              10067
            ],
            "IERC20Permit": [
              10125
            ],
            "IERC20Receiver": [
              10143
            ],
            "IERC20SafeTransfers": [
              10173
            ],
            "ManagedIdentity": [
              322
            ]
          },
          "id": 9716,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8129,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:38"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
              "id": 8131,
              "nodeType": "ImportDirective",
              "scope": 9716,
              "sourceUnit": 1286,
              "src": "66:111:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8130,
                    "name": "AddressIsContract",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:17:38",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 8133,
              "nodeType": "ImportDirective",
              "scope": 9716,
              "sourceUnit": 219,
              "src": "178:93:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8132,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "186:7:38",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20.sol",
              "file": "./interfaces/IERC20.sol",
              "id": 8135,
              "nodeType": "ImportDirective",
              "scope": 9716,
              "sourceUnit": 9948,
              "src": "272:47:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8134,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "280:6:38",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20Detailed.sol",
              "file": "./interfaces/IERC20Detailed.sol",
              "id": 8137,
              "nodeType": "ImportDirective",
              "scope": 9716,
              "sourceUnit": 10058,
              "src": "320:63:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8136,
                    "name": "IERC20Detailed",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "328:14:38",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20Allowance.sol",
              "file": "./interfaces/IERC20Allowance.sol",
              "id": 8139,
              "nodeType": "ImportDirective",
              "scope": 9716,
              "sourceUnit": 9972,
              "src": "384:65:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8138,
                    "name": "IERC20Allowance",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "392:15:38",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20SafeTransfers.sol",
              "file": "./interfaces/IERC20SafeTransfers.sol",
              "id": 8141,
              "nodeType": "ImportDirective",
              "scope": 9716,
              "sourceUnit": 10174,
              "src": "450:73:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8140,
                    "name": "IERC20SafeTransfers",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "458:19:38",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20BatchTransfers.sol",
              "file": "./interfaces/IERC20BatchTransfers.sol",
              "id": 8143,
              "nodeType": "ImportDirective",
              "scope": 9716,
              "sourceUnit": 10002,
              "src": "524:75:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8142,
                    "name": "IERC20BatchTransfers",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "532:20:38",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20Metadata.sol",
              "file": "./interfaces/IERC20Metadata.sol",
              "id": 8145,
              "nodeType": "ImportDirective",
              "scope": 9716,
              "sourceUnit": 10068,
              "src": "600:63:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8144,
                    "name": "IERC20Metadata",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "608:14:38",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20Permit.sol",
              "file": "./interfaces/IERC20Permit.sol",
              "id": 8147,
              "nodeType": "ImportDirective",
              "scope": 9716,
              "sourceUnit": 10126,
              "src": "664:59:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8146,
                    "name": "IERC20Permit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "672:12:38",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20Receiver.sol",
              "file": "./interfaces/IERC20Receiver.sol",
              "id": 8149,
              "nodeType": "ImportDirective",
              "scope": 9716,
              "sourceUnit": 10144,
              "src": "724:63:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8148,
                    "name": "IERC20Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "732:14:38",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 8151,
              "nodeType": "ImportDirective",
              "scope": 9716,
              "sourceUnit": 323,
              "src": "788:102:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8150,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "796:15:38",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 8153,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 322,
                    "src": "963:15:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 8154,
                  "nodeType": "InheritanceSpecifier",
                  "src": "963:15:38"
                },
                {
                  "baseName": {
                    "id": 8155,
                    "name": "IERC165",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 218,
                    "src": "984:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC165_$218",
                      "typeString": "contract IERC165"
                    }
                  },
                  "id": 8156,
                  "nodeType": "InheritanceSpecifier",
                  "src": "984:7:38"
                },
                {
                  "baseName": {
                    "id": 8157,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9947,
                    "src": "997:6:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$9947",
                      "typeString": "contract IERC20"
                    }
                  },
                  "id": 8158,
                  "nodeType": "InheritanceSpecifier",
                  "src": "997:6:38"
                },
                {
                  "baseName": {
                    "id": 8159,
                    "name": "IERC20Detailed",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10057,
                    "src": "1009:14:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Detailed_$10057",
                      "typeString": "contract IERC20Detailed"
                    }
                  },
                  "id": 8160,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1009:14:38"
                },
                {
                  "baseName": {
                    "id": 8161,
                    "name": "IERC20Metadata",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10067,
                    "src": "1029:14:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Metadata_$10067",
                      "typeString": "contract IERC20Metadata"
                    }
                  },
                  "id": 8162,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1029:14:38"
                },
                {
                  "baseName": {
                    "id": 8163,
                    "name": "IERC20Allowance",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9971,
                    "src": "1049:15:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Allowance_$9971",
                      "typeString": "contract IERC20Allowance"
                    }
                  },
                  "id": 8164,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1049:15:38"
                },
                {
                  "baseName": {
                    "id": 8165,
                    "name": "IERC20BatchTransfers",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10001,
                    "src": "1070:20:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20BatchTransfers_$10001",
                      "typeString": "contract IERC20BatchTransfers"
                    }
                  },
                  "id": 8166,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1070:20:38"
                },
                {
                  "baseName": {
                    "id": 8167,
                    "name": "IERC20SafeTransfers",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10173,
                    "src": "1096:19:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20SafeTransfers_$10173",
                      "typeString": "contract IERC20SafeTransfers"
                    }
                  },
                  "id": 8168,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1096:19:38"
                },
                {
                  "baseName": {
                    "id": 8169,
                    "name": "IERC20Permit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10125,
                    "src": "1121:12:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Permit_$10125",
                      "typeString": "contract IERC20Permit"
                    }
                  },
                  "id": 8170,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1121:12:38"
                }
              ],
              "contractDependencies": [
                218,
                322,
                9947,
                9971,
                10001,
                10057,
                10067,
                10125,
                10173
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 8152,
                "nodeType": "StructuredDocumentation",
                "src": "892:48:38",
                "text": " @title ERC20 Fungible Token Contract."
              },
              "fullyImplemented": true,
              "id": 9715,
              "linearizedBaseContracts": [
                9715,
                10125,
                10173,
                10001,
                9971,
                10067,
                10057,
                9947,
                218,
                322
              ],
              "name": "ERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 8173,
                  "libraryName": {
                    "id": 8171,
                    "name": "AddressIsContract",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1285,
                    "src": "1146:17:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddressIsContract_$1285",
                      "typeString": "library AddressIsContract"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1140:36:38",
                  "typeName": {
                    "id": 8172,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1168:7:38",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 8176,
                  "mutability": "constant",
                  "name": "PERMIT_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "scope": 9715,
                  "src": "1285:110:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8174,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1285:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339",
                    "id": 8175,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1329:66:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1",
                      "typeString": "int_const 4995...(69 digits omitted)...3241"
                    },
                    "value": "0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "cd0d0096",
                  "id": 8178,
                  "mutability": "immutable",
                  "name": "deploymentChainId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9715,
                  "src": "1402:42:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8177,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1402:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 8180,
                  "mutability": "immutable",
                  "name": "_DOMAIN_SEPARATOR",
                  "nodeType": "VariableDeclaration",
                  "scope": 9715,
                  "src": "1503:44:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8179,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1503:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    10118
                  ],
                  "constant": false,
                  "documentation": {
                    "id": 8181,
                    "nodeType": "StructuredDocumentation",
                    "src": "1554:28:38",
                    "text": "@inheritdoc IERC20Permit"
                  },
                  "functionSelector": "7ecebe00",
                  "id": 8186,
                  "mutability": "mutable",
                  "name": "nonces",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 8185,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1622:8:38"
                  },
                  "scope": 9715,
                  "src": "1587:50:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 8184,
                    "keyType": {
                      "id": 8182,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1595:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1587:27:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 8183,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1606:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 8188,
                  "mutability": "mutable",
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 9715,
                  "src": "1644:21:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8187,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1644:6:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8190,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 9715,
                  "src": "1671:23:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8189,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1671:6:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8192,
                  "mutability": "immutable",
                  "name": "_decimals",
                  "nodeType": "VariableDeclaration",
                  "scope": 9715,
                  "src": "1700:34:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 8191,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1700:5:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8194,
                  "mutability": "mutable",
                  "name": "_tokenURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 9715,
                  "src": "1740:25:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8193,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1740:6:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8198,
                  "mutability": "mutable",
                  "name": "_balances",
                  "nodeType": "VariableDeclaration",
                  "scope": 9715,
                  "src": "1772:46:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 8197,
                    "keyType": {
                      "id": 8195,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1780:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1772:27:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 8196,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1791:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8204,
                  "mutability": "mutable",
                  "name": "_allowances",
                  "nodeType": "VariableDeclaration",
                  "scope": 9715,
                  "src": "1824:68:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 8203,
                    "keyType": {
                      "id": 8199,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1832:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1824:47:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 8202,
                      "keyType": {
                        "id": 8200,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1851:7:38",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1843:27:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 8201,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1862:7:38",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8206,
                  "mutability": "mutable",
                  "name": "_totalSupply",
                  "nodeType": "VariableDeclaration",
                  "scope": 9715,
                  "src": "1898:29:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8205,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1898:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8245,
                    "nodeType": "Block",
                    "src": "2037:291:38",
                    "statements": [
                      {
                        "expression": {
                          "id": 8217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8215,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8188,
                            "src": "2047:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 8216,
                            "name": "name_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8208,
                            "src": "2055:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "2047:13:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 8218,
                        "nodeType": "ExpressionStatement",
                        "src": "2047:13:38"
                      },
                      {
                        "expression": {
                          "id": 8221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8219,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8190,
                            "src": "2070:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 8220,
                            "name": "symbol_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8210,
                            "src": "2080:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "2070:17:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 8222,
                        "nodeType": "ExpressionStatement",
                        "src": "2070:17:38"
                      },
                      {
                        "expression": {
                          "id": 8225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8223,
                            "name": "_decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8192,
                            "src": "2097:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 8224,
                            "name": "decimals_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8212,
                            "src": "2109:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "2097:21:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 8226,
                        "nodeType": "ExpressionStatement",
                        "src": "2097:21:38"
                      },
                      {
                        "assignments": [
                          8228
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8228,
                            "mutability": "mutable",
                            "name": "chainId",
                            "nodeType": "VariableDeclaration",
                            "scope": 8245,
                            "src": "2129:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8227,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2129:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8229,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2129:15:38"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2163:44:38",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2177:20:38",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "chainid",
                                  "nodeType": "YulIdentifier",
                                  "src": "2188:7:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2188:9:38"
                              },
                              "variableNames": [
                                {
                                  "name": "chainId",
                                  "nodeType": "YulIdentifier",
                                  "src": "2177:7:38"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 8228,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2177:7:38",
                            "valueSize": 1
                          }
                        ],
                        "id": 8230,
                        "nodeType": "InlineAssembly",
                        "src": "2154:53:38"
                      },
                      {
                        "expression": {
                          "id": 8233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8231,
                            "name": "deploymentChainId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8178,
                            "src": "2216:17:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 8232,
                            "name": "chainId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8228,
                            "src": "2236:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2216:27:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8234,
                        "nodeType": "ExpressionStatement",
                        "src": "2216:27:38"
                      },
                      {
                        "expression": {
                          "id": 8243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8235,
                            "name": "_DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8180,
                            "src": "2253:17:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8237,
                                "name": "chainId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8228,
                                "src": "2299:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 8240,
                                    "name": "name_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8208,
                                    "src": "2314:5:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 8239,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2308:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 8238,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2308:5:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 8241,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2308:12:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 8236,
                              "name": "_calculateDomainSeparator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9714,
                              "src": "2273:25:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (uint256,bytes memory) view returns (bytes32)"
                              }
                            },
                            "id": 8242,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2273:48:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2253:68:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 8244,
                        "nodeType": "ExpressionStatement",
                        "src": "2253:68:38"
                      }
                    ]
                  },
                  "id": 8246,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8213,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8208,
                        "mutability": "mutable",
                        "name": "name_",
                        "nodeType": "VariableDeclaration",
                        "scope": 8246,
                        "src": "1955:19:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 8207,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1955:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8210,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nodeType": "VariableDeclaration",
                        "scope": 8246,
                        "src": "1984:21:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 8209,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1984:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8212,
                        "mutability": "mutable",
                        "name": "decimals_",
                        "nodeType": "VariableDeclaration",
                        "scope": 8246,
                        "src": "2015:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 8211,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2015:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1945:91:38"
                  },
                  "returnParameters": {
                    "id": 8214,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2037:0:38"
                  },
                  "scope": 9715,
                  "src": "1934:394:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    217
                  ],
                  "body": {
                    "id": 8311,
                    "nodeType": "Block",
                    "src": "2582:519:38",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 8309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 8302,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 8295,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 8288,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 8281,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 8274,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 8267,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        "id": 8260,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 8255,
                                          "name": "interfaceId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8249,
                                          "src": "2611:11:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 8257,
                                                "name": "IERC165",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 218,
                                                "src": "2631:7:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                                  "typeString": "type(contract IERC165)"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                                  "typeString": "type(contract IERC165)"
                                                }
                                              ],
                                              "id": 8256,
                                              "name": "type",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -27,
                                              "src": "2626:4:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                "typeString": "function () pure"
                                              }
                                            },
                                            "id": 8258,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2626:13:38",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$218",
                                              "typeString": "type(contract IERC165)"
                                            }
                                          },
                                          "id": 8259,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "interfaceId",
                                          "nodeType": "MemberAccess",
                                          "src": "2626:25:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        },
                                        "src": "2611:40:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "||",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        "id": 8266,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 8261,
                                          "name": "interfaceId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8249,
                                          "src": "2667:11:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 8263,
                                                "name": "IERC20",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9947,
                                                "src": "2687:6:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$9947_$",
                                                  "typeString": "type(contract IERC20)"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$9947_$",
                                                  "typeString": "type(contract IERC20)"
                                                }
                                              ],
                                              "id": 8262,
                                              "name": "type",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -27,
                                              "src": "2682:4:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                "typeString": "function () pure"
                                              }
                                            },
                                            "id": 8264,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2682:12:38",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_meta_type_t_contract$_IERC20_$9947",
                                              "typeString": "type(contract IERC20)"
                                            }
                                          },
                                          "id": 8265,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "interfaceId",
                                          "nodeType": "MemberAccess",
                                          "src": "2682:24:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        },
                                        "src": "2667:39:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "2611:95:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      },
                                      "id": 8273,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8268,
                                        "name": "interfaceId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8249,
                                        "src": "2722:11:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 8270,
                                              "name": "IERC20Detailed",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10057,
                                              "src": "2742:14:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20Detailed_$10057_$",
                                                "typeString": "type(contract IERC20Detailed)"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20Detailed_$10057_$",
                                                "typeString": "type(contract IERC20Detailed)"
                                              }
                                            ],
                                            "id": 8269,
                                            "name": "type",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -27,
                                            "src": "2737:4:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                              "typeString": "function () pure"
                                            }
                                          },
                                          "id": 8271,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2737:20:38",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_meta_type_t_contract$_IERC20Detailed_$10057",
                                            "typeString": "type(contract IERC20Detailed)"
                                          }
                                        },
                                        "id": 8272,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "interfaceId",
                                        "nodeType": "MemberAccess",
                                        "src": "2737:32:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      },
                                      "src": "2722:47:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2611:158:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 8280,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8275,
                                      "name": "interfaceId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8249,
                                      "src": "2785:11:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 8277,
                                            "name": "IERC20Metadata",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10067,
                                            "src": "2805:14:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC20Metadata_$10067_$",
                                              "typeString": "type(contract IERC20Metadata)"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_type$_t_contract$_IERC20Metadata_$10067_$",
                                              "typeString": "type(contract IERC20Metadata)"
                                            }
                                          ],
                                          "id": 8276,
                                          "name": "type",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -27,
                                          "src": "2800:4:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                            "typeString": "function () pure"
                                          }
                                        },
                                        "id": 8278,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2800:20:38",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_meta_type_t_contract$_IERC20Metadata_$10067",
                                          "typeString": "type(contract IERC20Metadata)"
                                        }
                                      },
                                      "id": 8279,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "interfaceId",
                                      "nodeType": "MemberAccess",
                                      "src": "2800:32:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "src": "2785:47:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "2611:221:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "id": 8287,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8282,
                                    "name": "interfaceId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8249,
                                    "src": "2848:11:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 8284,
                                          "name": "IERC20Allowance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9971,
                                          "src": "2868:15:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC20Allowance_$9971_$",
                                            "typeString": "type(contract IERC20Allowance)"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_type$_t_contract$_IERC20Allowance_$9971_$",
                                            "typeString": "type(contract IERC20Allowance)"
                                          }
                                        ],
                                        "id": 8283,
                                        "name": "type",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -27,
                                        "src": "2863:4:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 8285,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2863:21:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_meta_type_t_contract$_IERC20Allowance_$9971",
                                        "typeString": "type(contract IERC20Allowance)"
                                      }
                                    },
                                    "id": 8286,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "interfaceId",
                                    "nodeType": "MemberAccess",
                                    "src": "2863:33:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "src": "2848:48:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "2611:285:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 8294,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 8289,
                                  "name": "interfaceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8249,
                                  "src": "2912:11:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 8291,
                                        "name": "IERC20BatchTransfers",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10001,
                                        "src": "2932:20:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20BatchTransfers_$10001_$",
                                          "typeString": "type(contract IERC20BatchTransfers)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20BatchTransfers_$10001_$",
                                          "typeString": "type(contract IERC20BatchTransfers)"
                                        }
                                      ],
                                      "id": 8290,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "2927:4:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 8292,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2927:26:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_contract$_IERC20BatchTransfers_$10001",
                                      "typeString": "type(contract IERC20BatchTransfers)"
                                    }
                                  },
                                  "id": 8293,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "interfaceId",
                                  "nodeType": "MemberAccess",
                                  "src": "2927:38:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "2912:53:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2611:354:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 8301,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8296,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8249,
                                "src": "2981:11:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 8298,
                                      "name": "IERC20SafeTransfers",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10173,
                                      "src": "3001:19:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20SafeTransfers_$10173_$",
                                        "typeString": "type(contract IERC20SafeTransfers)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20SafeTransfers_$10173_$",
                                        "typeString": "type(contract IERC20SafeTransfers)"
                                      }
                                    ],
                                    "id": 8297,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "2996:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 8299,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2996:25:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC20SafeTransfers_$10173",
                                    "typeString": "type(contract IERC20SafeTransfers)"
                                  }
                                },
                                "id": 8300,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "2996:37:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "2981:52:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2611:422:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 8308,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8303,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8249,
                              "src": "3049:11:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 8305,
                                    "name": "IERC20Permit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10125,
                                    "src": "3069:12:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20Permit_$10125_$",
                                      "typeString": "type(contract IERC20Permit)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20Permit_$10125_$",
                                      "typeString": "type(contract IERC20Permit)"
                                    }
                                  ],
                                  "id": 8304,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "3064:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 8306,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3064:18:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC20Permit_$10125",
                                  "typeString": "type(contract IERC20Permit)"
                                }
                              },
                              "id": 8307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "3064:30:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "3049:45:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2611:483:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 8254,
                        "id": 8310,
                        "nodeType": "Return",
                        "src": "2592:502:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8247,
                    "nodeType": "StructuredDocumentation",
                    "src": "2463:23:38",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 8312,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8251,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2558:8:38"
                  },
                  "parameters": {
                    "id": 8250,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8249,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 8312,
                        "src": "2518:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 8248,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2518:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2517:20:38"
                  },
                  "returnParameters": {
                    "id": 8254,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8253,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8312,
                        "src": "2576:4:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8252,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2576:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2575:6:38"
                  },
                  "scope": 9715,
                  "src": "2491:610:38",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    9896
                  ],
                  "body": {
                    "id": 8321,
                    "nodeType": "Block",
                    "src": "3327:36:38",
                    "statements": [
                      {
                        "expression": {
                          "id": 8319,
                          "name": "_totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8206,
                          "src": "3344:12:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 8318,
                        "id": 8320,
                        "nodeType": "Return",
                        "src": "3337:19:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8313,
                    "nodeType": "StructuredDocumentation",
                    "src": "3236:22:38",
                    "text": "@inheritdoc IERC20"
                  },
                  "functionSelector": "18160ddd",
                  "id": 8322,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8315,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3300:8:38"
                  },
                  "parameters": {
                    "id": 8314,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3283:2:38"
                  },
                  "returnParameters": {
                    "id": 8318,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8317,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8322,
                        "src": "3318:7:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8316,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3318:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3317:9:38"
                  },
                  "scope": 9715,
                  "src": "3263:100:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    9904
                  ],
                  "body": {
                    "id": 8335,
                    "nodeType": "Block",
                    "src": "3473:42:38",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 8331,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8198,
                            "src": "3490:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8333,
                          "indexExpression": {
                            "id": 8332,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8325,
                            "src": "3500:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3490:18:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 8330,
                        "id": 8334,
                        "nodeType": "Return",
                        "src": "3483:25:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8323,
                    "nodeType": "StructuredDocumentation",
                    "src": "3369:22:38",
                    "text": "@inheritdoc IERC20"
                  },
                  "functionSelector": "70a08231",
                  "id": 8336,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8327,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3446:8:38"
                  },
                  "parameters": {
                    "id": 8326,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8325,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 8336,
                        "src": "3415:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8324,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3415:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3414:17:38"
                  },
                  "returnParameters": {
                    "id": 8330,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8329,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8336,
                        "src": "3464:7:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8328,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3464:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3463:9:38"
                  },
                  "scope": 9715,
                  "src": "3396:119:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    9946
                  ],
                  "body": {
                    "id": 8353,
                    "nodeType": "Block",
                    "src": "3646:51:38",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 8347,
                              "name": "_allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8204,
                              "src": "3663:11:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 8349,
                            "indexExpression": {
                              "id": 8348,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8339,
                              "src": "3675:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3663:18:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8351,
                          "indexExpression": {
                            "id": 8350,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8341,
                            "src": "3682:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3663:27:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 8346,
                        "id": 8352,
                        "nodeType": "Return",
                        "src": "3656:34:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8337,
                    "nodeType": "StructuredDocumentation",
                    "src": "3521:22:38",
                    "text": "@inheritdoc IERC20"
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 8354,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8343,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3619:8:38"
                  },
                  "parameters": {
                    "id": 8342,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8339,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 8354,
                        "src": "3567:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8338,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3567:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8341,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 8354,
                        "src": "3582:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8340,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3582:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3566:32:38"
                  },
                  "returnParameters": {
                    "id": 8346,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8345,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8354,
                        "src": "3637:7:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8344,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3637:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3636:9:38"
                  },
                  "scope": 9715,
                  "src": "3548:149:38",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    9936
                  ],
                  "body": {
                    "id": 8374,
                    "nodeType": "Block",
                    "src": "3820:76:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 8366,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "3839:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 8367,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3839:12:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 8368,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8357,
                              "src": "3853:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8369,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8359,
                              "src": "3862:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8365,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9148,
                            "src": "3830:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 8370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3830:38:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8371,
                        "nodeType": "ExpressionStatement",
                        "src": "3830:38:38"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 8372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3885:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 8364,
                        "id": 8373,
                        "nodeType": "Return",
                        "src": "3878:11:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8355,
                    "nodeType": "StructuredDocumentation",
                    "src": "3703:22:38",
                    "text": "@inheritdoc IERC20"
                  },
                  "functionSelector": "095ea7b3",
                  "id": 8375,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8361,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3796:8:38"
                  },
                  "parameters": {
                    "id": 8360,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8357,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 8375,
                        "src": "3747:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8356,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3747:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8359,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 8375,
                        "src": "3764:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8358,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3764:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3746:32:38"
                  },
                  "returnParameters": {
                    "id": 8364,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8363,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8375,
                        "src": "3814:4:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8362,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3814:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3813:6:38"
                  },
                  "scope": 9715,
                  "src": "3730:166:38",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    9914
                  ],
                  "body": {
                    "id": 8395,
                    "nodeType": "Block",
                    "src": "4015:72:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 8387,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "4035:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 8388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4035:12:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 8389,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8378,
                              "src": "4049:2:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8390,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8380,
                              "src": "4053:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8386,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9277,
                            "src": "4025:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 8391,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4025:34:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8392,
                        "nodeType": "ExpressionStatement",
                        "src": "4025:34:38"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 8393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4076:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 8385,
                        "id": 8394,
                        "nodeType": "Return",
                        "src": "4069:11:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8376,
                    "nodeType": "StructuredDocumentation",
                    "src": "3902:22:38",
                    "text": "@inheritdoc IERC20"
                  },
                  "functionSelector": "a9059cbb",
                  "id": 8396,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8382,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3991:8:38"
                  },
                  "parameters": {
                    "id": 8381,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8378,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 8396,
                        "src": "3947:10:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8377,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3947:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8380,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 8396,
                        "src": "3959:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8379,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3959:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3946:27:38"
                  },
                  "returnParameters": {
                    "id": 8385,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8384,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8396,
                        "src": "4009:4:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8383,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4009:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4008:6:38"
                  },
                  "scope": 9715,
                  "src": "3929:158:38",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    9926
                  ],
                  "body": {
                    "id": 8419,
                    "nodeType": "Block",
                    "src": "4254:82:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 8410,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "4278:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 8411,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4278:12:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 8412,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8399,
                              "src": "4292:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8413,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8401,
                              "src": "4298:2:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8414,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8403,
                              "src": "4302:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8409,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9306,
                            "src": "4264:13:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 8415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4264:44:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8416,
                        "nodeType": "ExpressionStatement",
                        "src": "4264:44:38"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 8417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4325:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 8408,
                        "id": 8418,
                        "nodeType": "Return",
                        "src": "4318:11:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8397,
                    "nodeType": "StructuredDocumentation",
                    "src": "4093:22:38",
                    "text": "@inheritdoc IERC20"
                  },
                  "functionSelector": "23b872dd",
                  "id": 8420,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8405,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4230:8:38"
                  },
                  "parameters": {
                    "id": 8404,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8399,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 8420,
                        "src": "4151:12:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8398,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4151:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8401,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 8420,
                        "src": "4173:10:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8400,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4173:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8403,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 8420,
                        "src": "4193:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8402,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4193:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4141:71:38"
                  },
                  "returnParameters": {
                    "id": 8408,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8407,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8420,
                        "src": "4248:4:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8406,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4248:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4247:6:38"
                  },
                  "scope": 9715,
                  "src": "4120:216:38",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    10044
                  ],
                  "body": {
                    "id": 8429,
                    "nodeType": "Block",
                    "src": "4569:29:38",
                    "statements": [
                      {
                        "expression": {
                          "id": 8427,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8188,
                          "src": "4586:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 8426,
                        "id": 8428,
                        "nodeType": "Return",
                        "src": "4579:12:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8421,
                    "nodeType": "StructuredDocumentation",
                    "src": "4471:30:38",
                    "text": "@inheritdoc IERC20Detailed"
                  },
                  "functionSelector": "06fdde03",
                  "id": 8430,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8423,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4536:8:38"
                  },
                  "parameters": {
                    "id": 8422,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4519:2:38"
                  },
                  "returnParameters": {
                    "id": 8426,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8425,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8430,
                        "src": "4554:13:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 8424,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4554:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4553:15:38"
                  },
                  "scope": 9715,
                  "src": "4506:92:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    10050
                  ],
                  "body": {
                    "id": 8439,
                    "nodeType": "Block",
                    "src": "4704:31:38",
                    "statements": [
                      {
                        "expression": {
                          "id": 8437,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8190,
                          "src": "4721:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 8436,
                        "id": 8438,
                        "nodeType": "Return",
                        "src": "4714:14:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8431,
                    "nodeType": "StructuredDocumentation",
                    "src": "4604:30:38",
                    "text": "@inheritdoc IERC20Detailed"
                  },
                  "functionSelector": "95d89b41",
                  "id": 8440,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8433,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4671:8:38"
                  },
                  "parameters": {
                    "id": 8432,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4654:2:38"
                  },
                  "returnParameters": {
                    "id": 8436,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8435,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8440,
                        "src": "4689:13:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 8434,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4689:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4688:15:38"
                  },
                  "scope": 9715,
                  "src": "4639:96:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    10056
                  ],
                  "body": {
                    "id": 8449,
                    "nodeType": "Block",
                    "src": "4835:33:38",
                    "statements": [
                      {
                        "expression": {
                          "id": 8447,
                          "name": "_decimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8192,
                          "src": "4852:9:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "functionReturnParameters": 8446,
                        "id": 8448,
                        "nodeType": "Return",
                        "src": "4845:16:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8441,
                    "nodeType": "StructuredDocumentation",
                    "src": "4741:30:38",
                    "text": "@inheritdoc IERC20Detailed"
                  },
                  "functionSelector": "313ce567",
                  "id": 8450,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8443,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4810:8:38"
                  },
                  "parameters": {
                    "id": 8442,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4793:2:38"
                  },
                  "returnParameters": {
                    "id": 8446,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8445,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8450,
                        "src": "4828:5:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 8444,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "4828:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4827:7:38"
                  },
                  "scope": 9715,
                  "src": "4776:92:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    10066
                  ],
                  "body": {
                    "id": 8459,
                    "nodeType": "Block",
                    "src": "5105:33:38",
                    "statements": [
                      {
                        "expression": {
                          "id": 8457,
                          "name": "_tokenURI",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8194,
                          "src": "5122:9:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 8456,
                        "id": 8458,
                        "nodeType": "Return",
                        "src": "5115:16:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8451,
                    "nodeType": "StructuredDocumentation",
                    "src": "5003:30:38",
                    "text": "@inheritdoc IERC20Metadata"
                  },
                  "functionSelector": "3c130d90",
                  "id": 8460,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8453,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5072:8:38"
                  },
                  "parameters": {
                    "id": 8452,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5055:2:38"
                  },
                  "returnParameters": {
                    "id": 8456,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8455,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8460,
                        "src": "5090:13:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 8454,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5090:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5089:15:38"
                  },
                  "scope": 9715,
                  "src": "5038:100:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    9960
                  ],
                  "body": {
                    "id": 8532,
                    "nodeType": "Block",
                    "src": "5414:520:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 8477,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8472,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8463,
                                "src": "5432:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 8475,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5451:1:38",
                                    "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": 8474,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5443:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8473,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5443:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 8476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5443:10:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5432:21:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207a65726f2061646472657373207370656e646572",
                              "id": 8478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5455:29:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c38455fa3dbd081feac620eea10e8ff64b3247dc408fc367e7ae8e668e24d445",
                                "typeString": "literal_string \"ERC20: zero address spender\""
                              },
                              "value": "ERC20: zero address spender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c38455fa3dbd081feac620eea10e8ff64b3247dc408fc367e7ae8e668e24d445",
                                "typeString": "literal_string \"ERC20: zero address spender\""
                              }
                            ],
                            "id": 8471,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5424:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8479,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5424:61:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8480,
                        "nodeType": "ExpressionStatement",
                        "src": "5424:61:38"
                      },
                      {
                        "assignments": [
                          8482
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8482,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 8532,
                            "src": "5495:13:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 8481,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5495:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8485,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8483,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "5511:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 8484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5511:12:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5495:28:38"
                      },
                      {
                        "assignments": [
                          8487
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8487,
                            "mutability": "mutable",
                            "name": "allowance_",
                            "nodeType": "VariableDeclaration",
                            "scope": 8532,
                            "src": "5533:18:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8486,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5533:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8493,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 8488,
                              "name": "_allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8204,
                              "src": "5554:11:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 8490,
                            "indexExpression": {
                              "id": 8489,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8482,
                              "src": "5566:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5554:18:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8492,
                          "indexExpression": {
                            "id": 8491,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8463,
                            "src": "5573:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5554:27:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5533:48:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8494,
                            "name": "addedValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8465,
                            "src": "5595:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 8495,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5609:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5595:15:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8523,
                        "nodeType": "IfStatement",
                        "src": "5591:264:38",
                        "trueBody": {
                          "id": 8522,
                          "nodeType": "Block",
                          "src": "5612:243:38",
                          "statements": [
                            {
                              "assignments": [
                                8498
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 8498,
                                  "mutability": "mutable",
                                  "name": "newAllowance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 8522,
                                  "src": "5626:20:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 8497,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5626:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 8502,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 8499,
                                  "name": "allowance_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8487,
                                  "src": "5649:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 8500,
                                  "name": "addedValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8465,
                                  "src": "5662:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5649:23:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5626:46:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8506,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8504,
                                      "name": "newAllowance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8498,
                                      "src": "5694:12:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "id": 8505,
                                      "name": "allowance_",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8487,
                                      "src": "5709:10:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5694:25:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "45524332303a20616c6c6f77616e6365206f766572666c6f77",
                                    "id": 8507,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5721:27:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_357f75c7f4cdbe2492cf8e424be0b1f3fbf884416a3c5ab251c16e149296f9be",
                                      "typeString": "literal_string \"ERC20: allowance overflow\""
                                    },
                                    "value": "ERC20: allowance overflow"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_357f75c7f4cdbe2492cf8e424be0b1f3fbf884416a3c5ab251c16e149296f9be",
                                      "typeString": "literal_string \"ERC20: allowance overflow\""
                                    }
                                  ],
                                  "id": 8503,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "5686:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8508,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5686:63:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8509,
                              "nodeType": "ExpressionStatement",
                              "src": "5686:63:38"
                            },
                            {
                              "expression": {
                                "id": 8516,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 8510,
                                      "name": "_allowances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8204,
                                      "src": "5763:11:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 8513,
                                    "indexExpression": {
                                      "id": 8511,
                                      "name": "owner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8482,
                                      "src": "5775:5:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5763:18:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 8514,
                                  "indexExpression": {
                                    "id": 8512,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8463,
                                    "src": "5782:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5763:27:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 8515,
                                  "name": "newAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8498,
                                  "src": "5793:12:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5763:42:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8517,
                              "nodeType": "ExpressionStatement",
                              "src": "5763:42:38"
                            },
                            {
                              "expression": {
                                "id": 8520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8518,
                                  "name": "allowance_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8487,
                                  "src": "5819:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 8519,
                                  "name": "newAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8498,
                                  "src": "5832:12:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5819:25:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8521,
                              "nodeType": "ExpressionStatement",
                              "src": "5819:25:38"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 8525,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8482,
                              "src": "5878:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8526,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8463,
                              "src": "5885:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8527,
                              "name": "allowance_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8487,
                              "src": "5894:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8524,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9890,
                            "src": "5869:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 8528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5869:36:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8529,
                        "nodeType": "EmitStatement",
                        "src": "5864:41:38"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 8530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5923:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 8470,
                        "id": 8531,
                        "nodeType": "Return",
                        "src": "5916:11:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8461,
                    "nodeType": "StructuredDocumentation",
                    "src": "5273:31:38",
                    "text": "@inheritdoc IERC20Allowance"
                  },
                  "functionSelector": "39509351",
                  "id": 8533,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "increaseAllowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8467,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5390:8:38"
                  },
                  "parameters": {
                    "id": 8466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8463,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 8533,
                        "src": "5336:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8462,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5336:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8465,
                        "mutability": "mutable",
                        "name": "addedValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 8533,
                        "src": "5353:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8464,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5353:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5335:37:38"
                  },
                  "returnParameters": {
                    "id": 8470,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8469,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8533,
                        "src": "5408:4:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8468,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5408:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5407:6:38"
                  },
                  "scope": 9715,
                  "src": "5309:625:38",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    9970
                  ],
                  "body": {
                    "id": 8563,
                    "nodeType": "Block",
                    "src": "6086:167:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 8550,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8545,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8536,
                                "src": "6104:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 8548,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6123:1:38",
                                    "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": 8547,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6115:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8546,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6115:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 8549,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6115:10:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6104:21:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207a65726f2061646472657373207370656e646572",
                              "id": 8551,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6127:29:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c38455fa3dbd081feac620eea10e8ff64b3247dc408fc367e7ae8e668e24d445",
                                "typeString": "literal_string \"ERC20: zero address spender\""
                              },
                              "value": "ERC20: zero address spender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c38455fa3dbd081feac620eea10e8ff64b3247dc408fc367e7ae8e668e24d445",
                                "typeString": "literal_string \"ERC20: zero address spender\""
                              }
                            ],
                            "id": 8544,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6096:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6096:61:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8553,
                        "nodeType": "ExpressionStatement",
                        "src": "6096:61:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 8555,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "6186:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 8556,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6186:12:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 8557,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8536,
                              "src": "6200:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8558,
                              "name": "subtractedValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8538,
                              "src": "6209:15:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8554,
                            "name": "_decreaseAllowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9210,
                            "src": "6167:18:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 8559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6167:58:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8560,
                        "nodeType": "ExpressionStatement",
                        "src": "6167:58:38"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 8561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6242:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 8543,
                        "id": 8562,
                        "nodeType": "Return",
                        "src": "6235:11:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8534,
                    "nodeType": "StructuredDocumentation",
                    "src": "5940:31:38",
                    "text": "@inheritdoc IERC20Allowance"
                  },
                  "functionSelector": "a457c2d7",
                  "id": 8564,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decreaseAllowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8540,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6062:8:38"
                  },
                  "parameters": {
                    "id": 8539,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8536,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 8564,
                        "src": "6003:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8535,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6003:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8538,
                        "mutability": "mutable",
                        "name": "subtractedValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 8564,
                        "src": "6020:23:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8537,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6020:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6002:42:38"
                  },
                  "returnParameters": {
                    "id": 8543,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8542,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8564,
                        "src": "6080:4:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8541,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6080:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6079:6:38"
                  },
                  "scope": 9715,
                  "src": "5976:277:38",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    9986
                  ],
                  "body": {
                    "id": 8723,
                    "nodeType": "Block",
                    "src": "6551:1491:38",
                    "statements": [
                      {
                        "assignments": [
                          8578
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8578,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 8723,
                            "src": "6561:14:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8577,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6561:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8581,
                        "initialValue": {
                          "expression": {
                            "id": 8579,
                            "name": "recipients",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8568,
                            "src": "6578:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 8580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "6578:17:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6561:34:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8583,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8578,
                                "src": "6613:6:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 8584,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8571,
                                  "src": "6623:6:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 8585,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "6623:13:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6613:23:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a20696e636f6e73697374656e7420617272617973",
                              "id": 8587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6638:28:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e95c96836e656718b0ff0a4d24263e8dcfd630813f94aada96d5a0c7faf0cfb5",
                                "typeString": "literal_string \"ERC20: inconsistent arrays\""
                              },
                              "value": "ERC20: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e95c96836e656718b0ff0a4d24263e8dcfd630813f94aada96d5a0c7faf0cfb5",
                                "typeString": "literal_string \"ERC20: inconsistent arrays\""
                              }
                            ],
                            "id": 8582,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6605:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6605:62:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8589,
                        "nodeType": "ExpressionStatement",
                        "src": "6605:62:38"
                      },
                      {
                        "assignments": [
                          8591
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8591,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 8723,
                            "src": "6677:14:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 8590,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6677:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8594,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8592,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "6694:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 8593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6694:12:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6677:29:38"
                      },
                      {
                        "assignments": [
                          8596
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8596,
                            "mutability": "mutable",
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 8723,
                            "src": "6716:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8595,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6716:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8600,
                        "initialValue": {
                          "baseExpression": {
                            "id": 8597,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8198,
                            "src": "6734:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8599,
                          "indexExpression": {
                            "id": 8598,
                            "name": "sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8591,
                            "src": "6744:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6734:17:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6716:35:38"
                      },
                      {
                        "assignments": [
                          8602
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8602,
                            "mutability": "mutable",
                            "name": "totalValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 8723,
                            "src": "6762:18:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8601,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6762:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8603,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6762:18:38"
                      },
                      {
                        "assignments": [
                          8605
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8605,
                            "mutability": "mutable",
                            "name": "selfTransferTotalValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 8723,
                            "src": "6790:30:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8604,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6790:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8606,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6790:30:38"
                      },
                      {
                        "body": {
                          "id": 8689,
                          "nodeType": "Block",
                          "src": "6864:759:38",
                          "statements": [
                            {
                              "assignments": [
                                8617
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 8617,
                                  "mutability": "mutable",
                                  "name": "to",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 8689,
                                  "src": "6878:10:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 8616,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6878:7:38",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 8621,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 8618,
                                  "name": "recipients",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8568,
                                  "src": "6891:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 8620,
                                "indexExpression": {
                                  "id": 8619,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8608,
                                  "src": "6902:1:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6891:13:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6878:26:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 8628,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8623,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8617,
                                      "src": "6926:2:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 8626,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6940:1:38",
                                          "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": 8625,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "6932:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 8624,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6932:7:38",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 8627,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6932:10:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "6926:16:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "45524332303a20746f207a65726f2061646472657373",
                                    "id": 8629,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6944:24:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_ca9648a0413973c5465015b2ed9d8c7c944c9e4b16bd5ddfaabeaadc99ee22aa",
                                      "typeString": "literal_string \"ERC20: to zero address\""
                                    },
                                    "value": "ERC20: to zero address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_ca9648a0413973c5465015b2ed9d8c7c944c9e4b16bd5ddfaabeaadc99ee22aa",
                                      "typeString": "literal_string \"ERC20: to zero address\""
                                    }
                                  ],
                                  "id": 8622,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "6918:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8630,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6918:51:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8631,
                              "nodeType": "ExpressionStatement",
                              "src": "6918:51:38"
                            },
                            {
                              "assignments": [
                                8633
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 8633,
                                  "mutability": "mutable",
                                  "name": "value",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 8689,
                                  "src": "6984:13:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 8632,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6984:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 8637,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 8634,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8571,
                                  "src": "7000:6:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 8636,
                                "indexExpression": {
                                  "id": 8635,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8608,
                                  "src": "7007:1:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7000:9:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6984:25:38"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8640,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 8638,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8633,
                                  "src": "7027:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 8639,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7036:1:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7027:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 8682,
                              "nodeType": "IfStatement",
                              "src": "7023:544:38",
                              "trueBody": {
                                "id": 8681,
                                "nodeType": "Block",
                                "src": "7039:528:38",
                                "statements": [
                                  {
                                    "assignments": [
                                      8642
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 8642,
                                        "mutability": "mutable",
                                        "name": "newTotalValue",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 8681,
                                        "src": "7057:21:38",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 8641,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "7057:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 8646,
                                    "initialValue": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8645,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8643,
                                        "name": "totalValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8602,
                                        "src": "7081:10:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "id": 8644,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8633,
                                        "src": "7094:5:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7081:18:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7057:42:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 8650,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 8648,
                                            "name": "newTotalValue",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8642,
                                            "src": "7125:13:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "id": 8649,
                                            "name": "totalValue",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8602,
                                            "src": "7141:10:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "7125:26:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "45524332303a2076616c756573206f766572666c6f77",
                                          "id": 8651,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7153:24:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_1042b868d03dd202c94535497b0aea159ffb0ed92f9c8495054728ee0acf7ff1",
                                            "typeString": "literal_string \"ERC20: values overflow\""
                                          },
                                          "value": "ERC20: values overflow"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_1042b868d03dd202c94535497b0aea159ffb0ed92f9c8495054728ee0acf7ff1",
                                            "typeString": "literal_string \"ERC20: values overflow\""
                                          }
                                        ],
                                        "id": 8647,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "7117:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 8652,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7117:61:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 8653,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7117:61:38"
                                  },
                                  {
                                    "expression": {
                                      "id": 8656,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 8654,
                                        "name": "totalValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8602,
                                        "src": "7196:10:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 8655,
                                        "name": "newTotalValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8642,
                                        "src": "7209:13:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7196:26:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 8657,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7196:26:38"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 8660,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8658,
                                        "name": "sender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8591,
                                        "src": "7244:6:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "id": 8659,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8617,
                                        "src": "7254:2:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "7244:12:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 8679,
                                      "nodeType": "Block",
                                      "src": "7327:226:38",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 8671,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 8669,
                                                  "name": "value",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8633,
                                                  "src": "7357:5:38",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "<=",
                                                "rightExpression": {
                                                  "id": 8670,
                                                  "name": "balance",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8596,
                                                  "src": "7366:7:38",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "7357:16:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              {
                                                "hexValue": "45524332303a20696e73756666696369656e742062616c616e6365",
                                                "id": 8672,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7375:29:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_stringliteral_53c0a9b372dd4d10e0466e474511916fb244dbbc3766b7c40c21d1ec47086e63",
                                                  "typeString": "literal_string \"ERC20: insufficient balance\""
                                                },
                                                "value": "ERC20: insufficient balance"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                },
                                                {
                                                  "typeIdentifier": "t_stringliteral_53c0a9b372dd4d10e0466e474511916fb244dbbc3766b7c40c21d1ec47086e63",
                                                  "typeString": "literal_string \"ERC20: insufficient balance\""
                                                }
                                              ],
                                              "id": 8668,
                                              "name": "require",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [
                                                -18,
                                                -18
                                              ],
                                              "referencedDeclaration": -18,
                                              "src": "7349:7:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                              }
                                            },
                                            "id": 8673,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7349:56:38",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 8674,
                                          "nodeType": "ExpressionStatement",
                                          "src": "7349:56:38"
                                        },
                                        {
                                          "expression": {
                                            "id": 8677,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 8675,
                                              "name": "selfTransferTotalValue",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8605,
                                              "src": "7427:22:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "+=",
                                            "rightHandSide": {
                                              "id": 8676,
                                              "name": "value",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8633,
                                              "src": "7453:5:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "7427:31:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 8678,
                                          "nodeType": "ExpressionStatement",
                                          "src": "7427:31:38"
                                        }
                                      ]
                                    },
                                    "id": 8680,
                                    "nodeType": "IfStatement",
                                    "src": "7240:313:38",
                                    "trueBody": {
                                      "id": 8667,
                                      "nodeType": "Block",
                                      "src": "7258:63:38",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 8665,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "baseExpression": {
                                                "id": 8661,
                                                "name": "_balances",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8198,
                                                "src": "7280:9:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                  "typeString": "mapping(address => uint256)"
                                                }
                                              },
                                              "id": 8663,
                                              "indexExpression": {
                                                "id": 8662,
                                                "name": "to",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8617,
                                                "src": "7290:2:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "7280:13:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "+=",
                                            "rightHandSide": {
                                              "id": 8664,
                                              "name": "value",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8633,
                                              "src": "7297:5:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "7280:22:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 8666,
                                          "nodeType": "ExpressionStatement",
                                          "src": "7280:22:38"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 8684,
                                    "name": "sender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8591,
                                    "src": "7594:6:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8685,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8617,
                                    "src": "7602:2:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8686,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8633,
                                    "src": "7606:5:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8683,
                                  "name": "Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9881,
                                  "src": "7585:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 8687,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7585:27:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8688,
                              "nodeType": "EmitStatement",
                              "src": "7580:32:38"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8610,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8608,
                            "src": "6846:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 8611,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8578,
                            "src": "6851:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6846:11:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8690,
                        "initializationExpression": {
                          "assignments": [
                            8608
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 8608,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 8690,
                              "src": "6835:9:38",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 8607,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6835:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 8609,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6835:9:38"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 8614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "6859:3:38",
                            "subExpression": {
                              "id": 8613,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8608,
                              "src": "6861:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8615,
                          "nodeType": "ExpressionStatement",
                          "src": "6859:3:38"
                        },
                        "nodeType": "ForStatement",
                        "src": "6830:793:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 8697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8693,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8691,
                              "name": "totalValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8602,
                              "src": "7637:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 8692,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7651:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "7637:15:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8696,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8694,
                              "name": "totalValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8602,
                              "src": "7656:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "id": 8695,
                              "name": "selfTransferTotalValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8605,
                              "src": "7670:22:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7656:36:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7637:55:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8720,
                        "nodeType": "IfStatement",
                        "src": "7633:382:38",
                        "trueBody": {
                          "id": 8719,
                          "nodeType": "Block",
                          "src": "7694:321:38",
                          "statements": [
                            {
                              "assignments": [
                                8699
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 8699,
                                  "mutability": "mutable",
                                  "name": "newBalance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 8719,
                                  "src": "7708:18:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 8698,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7708:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 8703,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8702,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 8700,
                                  "name": "balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8596,
                                  "src": "7729:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 8701,
                                  "name": "totalValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8602,
                                  "src": "7739:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7729:20:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7708:41:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8707,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8705,
                                      "name": "newBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8699,
                                      "src": "7771:10:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 8706,
                                      "name": "balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8596,
                                      "src": "7784:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7771:20:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "45524332303a20696e73756666696369656e742062616c616e6365",
                                    "id": 8708,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7793:29:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_53c0a9b372dd4d10e0466e474511916fb244dbbc3766b7c40c21d1ec47086e63",
                                      "typeString": "literal_string \"ERC20: insufficient balance\""
                                    },
                                    "value": "ERC20: insufficient balance"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_53c0a9b372dd4d10e0466e474511916fb244dbbc3766b7c40c21d1ec47086e63",
                                      "typeString": "literal_string \"ERC20: insufficient balance\""
                                    }
                                  ],
                                  "id": 8704,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "7763:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8709,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7763:60:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8710,
                              "nodeType": "ExpressionStatement",
                              "src": "7763:60:38"
                            },
                            {
                              "expression": {
                                "id": 8717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 8711,
                                    "name": "_balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8198,
                                    "src": "7893:9:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 8713,
                                  "indexExpression": {
                                    "id": 8712,
                                    "name": "sender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8591,
                                    "src": "7903:6:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7893:17:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8716,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8714,
                                    "name": "newBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8699,
                                    "src": "7913:10:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "id": 8715,
                                    "name": "selfTransferTotalValue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8605,
                                    "src": "7926:22:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7913:35:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7893:55:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8718,
                              "nodeType": "ExpressionStatement",
                              "src": "7893:55:38"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 8721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8031:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 8576,
                        "id": 8722,
                        "nodeType": "Return",
                        "src": "8024:11:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8565,
                    "nodeType": "StructuredDocumentation",
                    "src": "6388:36:38",
                    "text": "@inheritdoc IERC20BatchTransfers"
                  },
                  "functionSelector": "88d695b2",
                  "id": 8724,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchTransfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8573,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6527:8:38"
                  },
                  "parameters": {
                    "id": 8572,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8568,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 8724,
                        "src": "6452:29:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8566,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6452:7:38",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 8567,
                          "nodeType": "ArrayTypeName",
                          "src": "6452:9:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8571,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 8724,
                        "src": "6483:25:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8569,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6483:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8570,
                          "nodeType": "ArrayTypeName",
                          "src": "6483:9:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6451:58:38"
                  },
                  "returnParameters": {
                    "id": 8576,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8575,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8724,
                        "src": "6545:4:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8574,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6545:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6544:6:38"
                  },
                  "scope": 9715,
                  "src": "6429:1613:38",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    10000
                  ],
                  "body": {
                    "id": 8896,
                    "nodeType": "Block",
                    "src": "8259:1586:38",
                    "statements": [
                      {
                        "assignments": [
                          8740
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8740,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 8896,
                            "src": "8269:14:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8739,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8269:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8743,
                        "initialValue": {
                          "expression": {
                            "id": 8741,
                            "name": "recipients",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8730,
                            "src": "8286:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 8742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "8286:17:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8269:34:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8748,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8745,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8740,
                                "src": "8321:6:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 8746,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8733,
                                  "src": "8331:6:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 8747,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "8331:13:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8321:23:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a20696e636f6e73697374656e7420617272617973",
                              "id": 8749,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8346:28:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e95c96836e656718b0ff0a4d24263e8dcfd630813f94aada96d5a0c7faf0cfb5",
                                "typeString": "literal_string \"ERC20: inconsistent arrays\""
                              },
                              "value": "ERC20: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e95c96836e656718b0ff0a4d24263e8dcfd630813f94aada96d5a0c7faf0cfb5",
                                "typeString": "literal_string \"ERC20: inconsistent arrays\""
                              }
                            ],
                            "id": 8744,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8313:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8313:62:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8751,
                        "nodeType": "ExpressionStatement",
                        "src": "8313:62:38"
                      },
                      {
                        "assignments": [
                          8753
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8753,
                            "mutability": "mutable",
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 8896,
                            "src": "8386:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8752,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8386:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8757,
                        "initialValue": {
                          "baseExpression": {
                            "id": 8754,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8198,
                            "src": "8404:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8756,
                          "indexExpression": {
                            "id": 8755,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8727,
                            "src": "8414:4:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8404:15:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8386:33:38"
                      },
                      {
                        "assignments": [
                          8759
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8759,
                            "mutability": "mutable",
                            "name": "totalValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 8896,
                            "src": "8430:18:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8758,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8430:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8760,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8430:18:38"
                      },
                      {
                        "assignments": [
                          8762
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8762,
                            "mutability": "mutable",
                            "name": "selfTransferTotalValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 8896,
                            "src": "8458:30:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8761,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8458:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8763,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8458:30:38"
                      },
                      {
                        "body": {
                          "id": 8846,
                          "nodeType": "Block",
                          "src": "8532:757:38",
                          "statements": [
                            {
                              "assignments": [
                                8774
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 8774,
                                  "mutability": "mutable",
                                  "name": "to",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 8846,
                                  "src": "8546:10:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 8773,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8546:7:38",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 8778,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 8775,
                                  "name": "recipients",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8730,
                                  "src": "8559:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 8777,
                                "indexExpression": {
                                  "id": 8776,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8765,
                                  "src": "8570:1:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8559:13:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8546:26:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 8785,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8780,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8774,
                                      "src": "8594:2:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 8783,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8608:1:38",
                                          "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": 8782,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "8600:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 8781,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8600:7:38",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 8784,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8600:10:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "8594:16:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "45524332303a20746f207a65726f2061646472657373",
                                    "id": 8786,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8612:24:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_ca9648a0413973c5465015b2ed9d8c7c944c9e4b16bd5ddfaabeaadc99ee22aa",
                                      "typeString": "literal_string \"ERC20: to zero address\""
                                    },
                                    "value": "ERC20: to zero address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_ca9648a0413973c5465015b2ed9d8c7c944c9e4b16bd5ddfaabeaadc99ee22aa",
                                      "typeString": "literal_string \"ERC20: to zero address\""
                                    }
                                  ],
                                  "id": 8779,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "8586:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8586:51:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8788,
                              "nodeType": "ExpressionStatement",
                              "src": "8586:51:38"
                            },
                            {
                              "assignments": [
                                8790
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 8790,
                                  "mutability": "mutable",
                                  "name": "value",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 8846,
                                  "src": "8652:13:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 8789,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8652:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 8794,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 8791,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8733,
                                  "src": "8668:6:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 8793,
                                "indexExpression": {
                                  "id": 8792,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8765,
                                  "src": "8675:1:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8668:9:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8652:25:38"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8797,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 8795,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8790,
                                  "src": "8696:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 8796,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8705:1:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8696:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 8839,
                              "nodeType": "IfStatement",
                              "src": "8692:542:38",
                              "trueBody": {
                                "id": 8838,
                                "nodeType": "Block",
                                "src": "8708:526:38",
                                "statements": [
                                  {
                                    "assignments": [
                                      8799
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 8799,
                                        "mutability": "mutable",
                                        "name": "newTotalValue",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 8838,
                                        "src": "8726:21:38",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 8798,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8726:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 8803,
                                    "initialValue": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8802,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8800,
                                        "name": "totalValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8759,
                                        "src": "8750:10:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "id": 8801,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8790,
                                        "src": "8763:5:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8750:18:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8726:42:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 8807,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 8805,
                                            "name": "newTotalValue",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8799,
                                            "src": "8794:13:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "id": 8806,
                                            "name": "totalValue",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8759,
                                            "src": "8810:10:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "8794:26:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "45524332303a2076616c756573206f766572666c6f77",
                                          "id": 8808,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8822:24:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_1042b868d03dd202c94535497b0aea159ffb0ed92f9c8495054728ee0acf7ff1",
                                            "typeString": "literal_string \"ERC20: values overflow\""
                                          },
                                          "value": "ERC20: values overflow"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_1042b868d03dd202c94535497b0aea159ffb0ed92f9c8495054728ee0acf7ff1",
                                            "typeString": "literal_string \"ERC20: values overflow\""
                                          }
                                        ],
                                        "id": 8804,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "8786:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 8809,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8786:61:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 8810,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8786:61:38"
                                  },
                                  {
                                    "expression": {
                                      "id": 8813,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 8811,
                                        "name": "totalValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8759,
                                        "src": "8865:10:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 8812,
                                        "name": "newTotalValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8799,
                                        "src": "8878:13:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8865:26:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 8814,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8865:26:38"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 8817,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8815,
                                        "name": "from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8727,
                                        "src": "8913:4:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "id": 8816,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8774,
                                        "src": "8921:2:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "8913:10:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 8836,
                                      "nodeType": "Block",
                                      "src": "8994:226:38",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 8828,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 8826,
                                                  "name": "value",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8790,
                                                  "src": "9024:5:38",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "<=",
                                                "rightExpression": {
                                                  "id": 8827,
                                                  "name": "balance",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8753,
                                                  "src": "9033:7:38",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "9024:16:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              {
                                                "hexValue": "45524332303a20696e73756666696369656e742062616c616e6365",
                                                "id": 8829,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9042:29:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_stringliteral_53c0a9b372dd4d10e0466e474511916fb244dbbc3766b7c40c21d1ec47086e63",
                                                  "typeString": "literal_string \"ERC20: insufficient balance\""
                                                },
                                                "value": "ERC20: insufficient balance"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                },
                                                {
                                                  "typeIdentifier": "t_stringliteral_53c0a9b372dd4d10e0466e474511916fb244dbbc3766b7c40c21d1ec47086e63",
                                                  "typeString": "literal_string \"ERC20: insufficient balance\""
                                                }
                                              ],
                                              "id": 8825,
                                              "name": "require",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [
                                                -18,
                                                -18
                                              ],
                                              "referencedDeclaration": -18,
                                              "src": "9016:7:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                              }
                                            },
                                            "id": 8830,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "9016:56:38",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 8831,
                                          "nodeType": "ExpressionStatement",
                                          "src": "9016:56:38"
                                        },
                                        {
                                          "expression": {
                                            "id": 8834,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 8832,
                                              "name": "selfTransferTotalValue",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8762,
                                              "src": "9094:22:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "+=",
                                            "rightHandSide": {
                                              "id": 8833,
                                              "name": "value",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8790,
                                              "src": "9120:5:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "9094:31:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 8835,
                                          "nodeType": "ExpressionStatement",
                                          "src": "9094:31:38"
                                        }
                                      ]
                                    },
                                    "id": 8837,
                                    "nodeType": "IfStatement",
                                    "src": "8909:311:38",
                                    "trueBody": {
                                      "id": 8824,
                                      "nodeType": "Block",
                                      "src": "8925:63:38",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 8822,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "baseExpression": {
                                                "id": 8818,
                                                "name": "_balances",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8198,
                                                "src": "8947:9:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                  "typeString": "mapping(address => uint256)"
                                                }
                                              },
                                              "id": 8820,
                                              "indexExpression": {
                                                "id": 8819,
                                                "name": "to",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8774,
                                                "src": "8957:2:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "8947:13:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "+=",
                                            "rightHandSide": {
                                              "id": 8821,
                                              "name": "value",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8790,
                                              "src": "8964:5:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "8947:22:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 8823,
                                          "nodeType": "ExpressionStatement",
                                          "src": "8947:22:38"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 8841,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8727,
                                    "src": "9262:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8842,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8774,
                                    "src": "9268:2:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8843,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8790,
                                    "src": "9272:5:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8840,
                                  "name": "Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9881,
                                  "src": "9253:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 8844,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9253:25:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8845,
                              "nodeType": "EmitStatement",
                              "src": "9248:30:38"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8767,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8765,
                            "src": "8514:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 8768,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8740,
                            "src": "8519:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8514:11:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8847,
                        "initializationExpression": {
                          "assignments": [
                            8765
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 8765,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 8847,
                              "src": "8503:9:38",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 8764,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8503:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 8766,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "8503:9:38"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 8771,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "8527:3:38",
                            "subExpression": {
                              "id": 8770,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8765,
                              "src": "8529:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8772,
                          "nodeType": "ExpressionStatement",
                          "src": "8527:3:38"
                        },
                        "nodeType": "ForStatement",
                        "src": "8498:791:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 8854,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8850,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8848,
                              "name": "totalValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8759,
                              "src": "9303:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 8849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9317:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "9303:15:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8851,
                              "name": "totalValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8759,
                              "src": "9322:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "id": 8852,
                              "name": "selfTransferTotalValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8762,
                              "src": "9336:22:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9322:36:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9303:55:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8877,
                        "nodeType": "IfStatement",
                        "src": "9299:380:38",
                        "trueBody": {
                          "id": 8876,
                          "nodeType": "Block",
                          "src": "9360:319:38",
                          "statements": [
                            {
                              "assignments": [
                                8856
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 8856,
                                  "mutability": "mutable",
                                  "name": "newBalance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 8876,
                                  "src": "9374:18:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 8855,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9374:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 8860,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8859,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 8857,
                                  "name": "balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8753,
                                  "src": "9395:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 8858,
                                  "name": "totalValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8759,
                                  "src": "9405:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9395:20:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9374:41:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8864,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8862,
                                      "name": "newBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8856,
                                      "src": "9437:10:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 8863,
                                      "name": "balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8753,
                                      "src": "9450:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9437:20:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "45524332303a20696e73756666696369656e742062616c616e6365",
                                    "id": 8865,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9459:29:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_53c0a9b372dd4d10e0466e474511916fb244dbbc3766b7c40c21d1ec47086e63",
                                      "typeString": "literal_string \"ERC20: insufficient balance\""
                                    },
                                    "value": "ERC20: insufficient balance"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_53c0a9b372dd4d10e0466e474511916fb244dbbc3766b7c40c21d1ec47086e63",
                                      "typeString": "literal_string \"ERC20: insufficient balance\""
                                    }
                                  ],
                                  "id": 8861,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "9429:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8866,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9429:60:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8867,
                              "nodeType": "ExpressionStatement",
                              "src": "9429:60:38"
                            },
                            {
                              "expression": {
                                "id": 8874,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 8868,
                                    "name": "_balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8198,
                                    "src": "9559:9:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 8870,
                                  "indexExpression": {
                                    "id": 8869,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8727,
                                    "src": "9569:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "9559:15:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8873,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8871,
                                    "name": "newBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8856,
                                    "src": "9577:10:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "id": 8872,
                                    "name": "selfTransferTotalValue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8762,
                                    "src": "9590:22:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "9577:35:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9559:53:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8875,
                              "nodeType": "ExpressionStatement",
                              "src": "9559:53:38"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          8879
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8879,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 8896,
                            "src": "9689:14:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 8878,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9689:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8882,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8880,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "9706:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 8881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9706:12:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9689:29:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 8885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8883,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8727,
                            "src": "9732:4:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 8884,
                            "name": "sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8879,
                            "src": "9740:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9732:14:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8893,
                        "nodeType": "IfStatement",
                        "src": "9728:89:38",
                        "trueBody": {
                          "id": 8892,
                          "nodeType": "Block",
                          "src": "9748:69:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 8887,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8727,
                                    "src": "9781:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8888,
                                    "name": "sender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8879,
                                    "src": "9787:6:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8889,
                                    "name": "totalValue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8759,
                                    "src": "9795:10:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8886,
                                  "name": "_decreaseAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9210,
                                  "src": "9762:18:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 8890,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9762:44:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8891,
                              "nodeType": "ExpressionStatement",
                              "src": "9762:44:38"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 8894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9834:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 8738,
                        "id": 8895,
                        "nodeType": "Return",
                        "src": "9827:11:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8725,
                    "nodeType": "StructuredDocumentation",
                    "src": "8048:36:38",
                    "text": "@inheritdoc IERC20BatchTransfers"
                  },
                  "functionSelector": "4885b254",
                  "id": 8897,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8735,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8235:8:38"
                  },
                  "parameters": {
                    "id": 8734,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8727,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 8897,
                        "src": "8125:12:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8726,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8125:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8730,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 8897,
                        "src": "8147:29:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8728,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "8147:7:38",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 8729,
                          "nodeType": "ArrayTypeName",
                          "src": "8147:9:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8733,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 8897,
                        "src": "8186:25:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8731,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8186:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8732,
                          "nodeType": "ArrayTypeName",
                          "src": "8186:9:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8115:102:38"
                  },
                  "returnParameters": {
                    "id": 8738,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8737,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8897,
                        "src": "8253:4:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8736,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8253:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8252:6:38"
                  },
                  "scope": 9715,
                  "src": "8089:1756:38",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    10158
                  ],
                  "body": {
                    "id": 8946,
                    "nodeType": "Block",
                    "src": "10162:297:38",
                    "statements": [
                      {
                        "assignments": [
                          8911
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8911,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 8946,
                            "src": "10172:14:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 8910,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10172:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8914,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8912,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "10189:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 8913,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10189:12:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10172:29:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8916,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8911,
                              "src": "10221:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8917,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8900,
                              "src": "10229:2:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8918,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8902,
                              "src": "10233:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8915,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9277,
                            "src": "10211:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 8919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10211:29:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8920,
                        "nodeType": "ExpressionStatement",
                        "src": "10211:29:38"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 8921,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8900,
                              "src": "10254:2:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 8922,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1284,
                            "src": "10254:13:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 8923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10254:15:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8943,
                        "nodeType": "IfStatement",
                        "src": "10250:182:38",
                        "trueBody": {
                          "id": 8942,
                          "nodeType": "Block",
                          "src": "10271:161:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 8938,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 8929,
                                          "name": "sender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8911,
                                          "src": "10328:6:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 8930,
                                          "name": "sender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8911,
                                          "src": "10336:6:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 8931,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8902,
                                          "src": "10344:6:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 8932,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8904,
                                          "src": "10352:4:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          }
                                        ],
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 8926,
                                              "name": "to",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8900,
                                              "src": "10308:2:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 8925,
                                            "name": "IERC20Receiver",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10143,
                                            "src": "10293:14:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC20Receiver_$10143_$",
                                              "typeString": "type(contract IERC20Receiver)"
                                            }
                                          },
                                          "id": 8927,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "10293:18:38",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20Receiver_$10143",
                                            "typeString": "contract IERC20Receiver"
                                          }
                                        },
                                        "id": 8928,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "onERC20Received",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 10142,
                                        "src": "10293:34:38",
                                        "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": 8933,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10293:64:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 8935,
                                            "name": "IERC20Receiver",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10143,
                                            "src": "10366:14:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC20Receiver_$10143_$",
                                              "typeString": "type(contract IERC20Receiver)"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_type$_t_contract$_IERC20Receiver_$10143_$",
                                              "typeString": "type(contract IERC20Receiver)"
                                            }
                                          ],
                                          "id": 8934,
                                          "name": "type",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -27,
                                          "src": "10361:4:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                            "typeString": "function () pure"
                                          }
                                        },
                                        "id": 8936,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10361:20:38",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_meta_type_t_contract$_IERC20Receiver_$10143",
                                          "typeString": "type(contract IERC20Receiver)"
                                        }
                                      },
                                      "id": 8937,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "interfaceId",
                                      "nodeType": "MemberAccess",
                                      "src": "10361:32:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "src": "10293:100:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e736665722072656675736564",
                                    "id": 8939,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10395:25:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_e2e308d0b428baa3ee61ad418b3ac90e17c8cee06a2a15bb09efa3d2c52f27ea",
                                      "typeString": "literal_string \"ERC20: transfer refused\""
                                    },
                                    "value": "ERC20: transfer refused"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_e2e308d0b428baa3ee61ad418b3ac90e17c8cee06a2a15bb09efa3d2c52f27ea",
                                      "typeString": "literal_string \"ERC20: transfer refused\""
                                    }
                                  ],
                                  "id": 8924,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10285:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8940,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10285:136:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8941,
                              "nodeType": "ExpressionStatement",
                              "src": "10285:136:38"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 8944,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10448:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 8909,
                        "id": 8945,
                        "nodeType": "Return",
                        "src": "10441:11:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8898,
                    "nodeType": "StructuredDocumentation",
                    "src": "9980:35:38",
                    "text": "@inheritdoc IERC20SafeTransfers"
                  },
                  "functionSelector": "eb795549",
                  "id": 8947,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8906,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "10138:8:38"
                  },
                  "parameters": {
                    "id": 8905,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8900,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 8947,
                        "src": "10051:10:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8899,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10051:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8902,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8947,
                        "src": "10071:14:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8901,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10071:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8904,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 8947,
                        "src": "10095:19:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8903,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10095:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10041:79:38"
                  },
                  "returnParameters": {
                    "id": 8909,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8908,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8947,
                        "src": "10156:4:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8907,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10156:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10155:6:38"
                  },
                  "scope": 9715,
                  "src": "10020:439:38",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    10172
                  ],
                  "body": {
                    "id": 8999,
                    "nodeType": "Block",
                    "src": "10673:305:38",
                    "statements": [
                      {
                        "assignments": [
                          8963
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8963,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 8999,
                            "src": "10683:14:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 8962,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10683:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8966,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8964,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "10700:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 8965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10700:12:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10683:29:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8968,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8963,
                              "src": "10736:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8969,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8950,
                              "src": "10744:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8970,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8952,
                              "src": "10750:2:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8971,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8954,
                              "src": "10754:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8967,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9306,
                            "src": "10722:13:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 8972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10722:39:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8973,
                        "nodeType": "ExpressionStatement",
                        "src": "10722:39:38"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 8974,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8952,
                              "src": "10775:2:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 8975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1284,
                            "src": "10775:13:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 8976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10775:15:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8996,
                        "nodeType": "IfStatement",
                        "src": "10771:180:38",
                        "trueBody": {
                          "id": 8995,
                          "nodeType": "Block",
                          "src": "10792:159:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 8991,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 8982,
                                          "name": "sender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8963,
                                          "src": "10849:6:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 8983,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8950,
                                          "src": "10857:4:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 8984,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8954,
                                          "src": "10863:6:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 8985,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8956,
                                          "src": "10871:4:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          }
                                        ],
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 8979,
                                              "name": "to",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8952,
                                              "src": "10829:2:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 8978,
                                            "name": "IERC20Receiver",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10143,
                                            "src": "10814:14:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC20Receiver_$10143_$",
                                              "typeString": "type(contract IERC20Receiver)"
                                            }
                                          },
                                          "id": 8980,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "10814:18:38",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20Receiver_$10143",
                                            "typeString": "contract IERC20Receiver"
                                          }
                                        },
                                        "id": 8981,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "onERC20Received",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 10142,
                                        "src": "10814:34:38",
                                        "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": 8986,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10814:62:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 8988,
                                            "name": "IERC20Receiver",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10143,
                                            "src": "10885:14:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC20Receiver_$10143_$",
                                              "typeString": "type(contract IERC20Receiver)"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_type$_t_contract$_IERC20Receiver_$10143_$",
                                              "typeString": "type(contract IERC20Receiver)"
                                            }
                                          ],
                                          "id": 8987,
                                          "name": "type",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -27,
                                          "src": "10880:4:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                            "typeString": "function () pure"
                                          }
                                        },
                                        "id": 8989,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10880:20:38",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_meta_type_t_contract$_IERC20Receiver_$10143",
                                          "typeString": "type(contract IERC20Receiver)"
                                        }
                                      },
                                      "id": 8990,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "interfaceId",
                                      "nodeType": "MemberAccess",
                                      "src": "10880:32:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "src": "10814:98:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e736665722072656675736564",
                                    "id": 8992,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10914:25:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_e2e308d0b428baa3ee61ad418b3ac90e17c8cee06a2a15bb09efa3d2c52f27ea",
                                      "typeString": "literal_string \"ERC20: transfer refused\""
                                    },
                                    "value": "ERC20: transfer refused"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_e2e308d0b428baa3ee61ad418b3ac90e17c8cee06a2a15bb09efa3d2c52f27ea",
                                      "typeString": "literal_string \"ERC20: transfer refused\""
                                    }
                                  ],
                                  "id": 8977,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10806:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8993,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10806:134:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8994,
                              "nodeType": "ExpressionStatement",
                              "src": "10806:134:38"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 8997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10967:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 8961,
                        "id": 8998,
                        "nodeType": "Return",
                        "src": "10960:11:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8948,
                    "nodeType": "StructuredDocumentation",
                    "src": "10465:35:38",
                    "text": "@inheritdoc IERC20SafeTransfers"
                  },
                  "functionSelector": "b88d4fde",
                  "id": 9000,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8958,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "10649:8:38"
                  },
                  "parameters": {
                    "id": 8957,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8950,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 9000,
                        "src": "10540:12:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8949,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10540:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8952,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 9000,
                        "src": "10562:10:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8951,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10562:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8954,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 9000,
                        "src": "10582:14:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8953,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10582:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8956,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 9000,
                        "src": "10606:19:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8955,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10606:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10530:101:38"
                  },
                  "returnParameters": {
                    "id": 8961,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8960,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9000,
                        "src": "10667:4:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8959,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10667:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10666:6:38"
                  },
                  "scope": 9715,
                  "src": "10505:473:38",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    10124
                  ],
                  "body": {
                    "id": 9024,
                    "nodeType": "Block",
                    "src": "11266:287:38",
                    "statements": [
                      {
                        "assignments": [
                          9008
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9008,
                            "mutability": "mutable",
                            "name": "chainId",
                            "nodeType": "VariableDeclaration",
                            "scope": 9024,
                            "src": "11276:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9007,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11276:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9009,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11276:15:38"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "11310:44:38",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11324:20:38",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "chainid",
                                  "nodeType": "YulIdentifier",
                                  "src": "11335:7:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11335:9:38"
                              },
                              "variableNames": [
                                {
                                  "name": "chainId",
                                  "nodeType": "YulIdentifier",
                                  "src": "11324:7:38"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 9008,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11324:7:38",
                            "valueSize": 1
                          }
                        ],
                        "id": 9010,
                        "nodeType": "InlineAssembly",
                        "src": "11301:53:38"
                      },
                      {
                        "expression": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9013,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 9011,
                              "name": "chainId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9008,
                              "src": "11447:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 9012,
                              "name": "deploymentChainId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8178,
                              "src": "11458:17:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11447:28:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "arguments": [
                              {
                                "id": 9016,
                                "name": "chainId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9008,
                                "src": "11524:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 9019,
                                    "name": "_name",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8188,
                                    "src": "11539:5:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  ],
                                  "id": 9018,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11533:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 9017,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11533:5:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 9020,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11533:12:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes storage pointer"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes storage pointer"
                                }
                              ],
                              "id": 9015,
                              "name": "_calculateDomainSeparator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9714,
                              "src": "11498:25:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (uint256,bytes memory) view returns (bytes32)"
                              }
                            },
                            "id": 9021,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11498:48:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 9022,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "11447:99:38",
                          "trueExpression": {
                            "id": 9014,
                            "name": "_DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8180,
                            "src": "11478:17:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 9006,
                        "id": 9023,
                        "nodeType": "Return",
                        "src": "11440:106:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9001,
                    "nodeType": "StructuredDocumentation",
                    "src": "11113:28:38",
                    "text": "@inheritdoc IERC20Permit"
                  },
                  "functionSelector": "3644e515",
                  "id": 9025,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "DOMAIN_SEPARATOR",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9003,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "11239:8:38"
                  },
                  "parameters": {
                    "id": 9002,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11224:2:38"
                  },
                  "returnParameters": {
                    "id": 9006,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9005,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9025,
                        "src": "11257:7:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 9004,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11257:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11256:9:38"
                  },
                  "scope": 9715,
                  "src": "11199:354:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    10110
                  ],
                  "body": {
                    "id": 9113,
                    "nodeType": "Block",
                    "src": "11792:511:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 9050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9045,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9028,
                                "src": "11810:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 9048,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11827:1:38",
                                    "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": 9047,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11819:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 9046,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11819:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 9049,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11819:10:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "11810:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207a65726f2061646472657373206f776e6572",
                              "id": 9051,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11831:27:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_afa17b10d368ae84741ccbab0a16681451a8b20094e5602fd31a09c184f7e8af",
                                "typeString": "literal_string \"ERC20: zero address owner\""
                              },
                              "value": "ERC20: zero address owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_afa17b10d368ae84741ccbab0a16681451a8b20094e5602fd31a09c184f7e8af",
                                "typeString": "literal_string \"ERC20: zero address owner\""
                              }
                            ],
                            "id": 9044,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11802:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11802:57:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9053,
                        "nodeType": "ExpressionStatement",
                        "src": "11802:57:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 9055,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "11877:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 9056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "11877:15:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 9057,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9034,
                                "src": "11896:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11877:27:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a2065787069726564207065726d6974",
                              "id": 9059,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11906:23:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0ac59a98b6fe7e99399c85395b7df87e761b25e505bace1750860cfaa1803c24",
                                "typeString": "literal_string \"ERC20: expired permit\""
                              },
                              "value": "ERC20: expired permit"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0ac59a98b6fe7e99399c85395b7df87e761b25e505bace1750860cfaa1803c24",
                                "typeString": "literal_string \"ERC20: expired permit\""
                              }
                            ],
                            "id": 9054,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11869:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11869:61:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9061,
                        "nodeType": "ExpressionStatement",
                        "src": "11869:61:38"
                      },
                      {
                        "assignments": [
                          9063
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9063,
                            "mutability": "mutable",
                            "name": "hashStruct",
                            "nodeType": "VariableDeclaration",
                            "scope": 9113,
                            "src": "11940:18:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 9062,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "11940:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9078,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 9067,
                                  "name": "PERMIT_TYPEHASH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8176,
                                  "src": "11982:15:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 9068,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9028,
                                  "src": "11999:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 9069,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9030,
                                  "src": "12006:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 9070,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9032,
                                  "src": "12015:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 9074,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "12022:15:38",
                                  "subExpression": {
                                    "baseExpression": {
                                      "id": 9071,
                                      "name": "nonces",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8186,
                                      "src": "12022:6:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                        "typeString": "mapping(address => uint256)"
                                      }
                                    },
                                    "id": 9073,
                                    "indexExpression": {
                                      "id": 9072,
                                      "name": "owner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9028,
                                      "src": "12029:5:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "nodeType": "IndexAccess",
                                    "src": "12022:13:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 9075,
                                  "name": "deadline",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9034,
                                  "src": "12039:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 9065,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "11971:3:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 9066,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "11971:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 9076,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11971:77:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 9064,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "11961:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 9077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11961:88:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11940:109:38"
                      },
                      {
                        "assignments": [
                          9080
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9080,
                            "mutability": "mutable",
                            "name": "hash",
                            "nodeType": "VariableDeclaration",
                            "scope": 9113,
                            "src": "12059:12:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 9079,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "12059:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9090,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "1901",
                                  "id": 9084,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12101:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 9085,
                                    "name": "DOMAIN_SEPARATOR",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9025,
                                    "src": "12113:16:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                      "typeString": "function () view returns (bytes32)"
                                    }
                                  },
                                  "id": 9086,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12113:18:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 9087,
                                  "name": "hashStruct",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9063,
                                  "src": "12133:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 9082,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "12084:3:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 9083,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "12084:16:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 9088,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12084:60:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 9081,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "12074:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 9089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12074:71:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12059:86:38"
                      },
                      {
                        "assignments": [
                          9092
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9092,
                            "mutability": "mutable",
                            "name": "signer",
                            "nodeType": "VariableDeclaration",
                            "scope": 9113,
                            "src": "12155:14:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 9091,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12155:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9099,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 9094,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9080,
                              "src": "12182:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 9095,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9036,
                              "src": "12188:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 9096,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9038,
                              "src": "12191:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 9097,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9040,
                              "src": "12194:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 9093,
                            "name": "ecrecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -6,
                            "src": "12172:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                            }
                          },
                          "id": 9098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12172:24:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12155:41:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 9103,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9101,
                                "name": "signer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9092,
                                "src": "12214:6:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 9102,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9028,
                                "src": "12224:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "12214:15:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a20696e76616c6964207065726d6974",
                              "id": 9104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12231:23:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7e7a3a2e3040cbfa3c00db0248b72c5f4c00492e57a5353baf25410416702f76",
                                "typeString": "literal_string \"ERC20: invalid permit\""
                              },
                              "value": "ERC20: invalid permit"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7e7a3a2e3040cbfa3c00db0248b72c5f4c00492e57a5353baf25410416702f76",
                                "typeString": "literal_string \"ERC20: invalid permit\""
                              }
                            ],
                            "id": 9100,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12206:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12206:49:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9106,
                        "nodeType": "ExpressionStatement",
                        "src": "12206:49:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9108,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9028,
                              "src": "12274:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9109,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9030,
                              "src": "12281:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9110,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9032,
                              "src": "12290:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9107,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9148,
                            "src": "12265:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 9111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12265:31:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9112,
                        "nodeType": "ExpressionStatement",
                        "src": "12265:31:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9026,
                    "nodeType": "StructuredDocumentation",
                    "src": "11559:28:38",
                    "text": "@inheritdoc IERC20Permit"
                  },
                  "functionSelector": "d505accf",
                  "id": 9114,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permit",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9042,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "11783:8:38"
                  },
                  "parameters": {
                    "id": 9041,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9028,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 9114,
                        "src": "11617:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9027,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11617:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9030,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 9114,
                        "src": "11640:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9029,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11640:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9032,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 9114,
                        "src": "11665:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9031,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11665:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9034,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "scope": 9114,
                        "src": "11688:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9033,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11688:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9036,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "scope": 9114,
                        "src": "11714:7:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 9035,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "11714:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9038,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "scope": 9114,
                        "src": "11731:9:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 9037,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11731:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9040,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "scope": 9114,
                        "src": "11750:9:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 9039,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11750:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11607:158:38"
                  },
                  "returnParameters": {
                    "id": 9043,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11792:0:38"
                  },
                  "scope": 9715,
                  "src": "11592:711:38",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9147,
                    "nodeType": "Block",
                    "src": "12542:169:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 9129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9124,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9118,
                                "src": "12560:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 9127,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12579:1:38",
                                    "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": 9126,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12571:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 9125,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12571:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 9128,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12571:10:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "12560:21:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207a65726f2061646472657373207370656e646572",
                              "id": 9130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12583:29:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c38455fa3dbd081feac620eea10e8ff64b3247dc408fc367e7ae8e668e24d445",
                                "typeString": "literal_string \"ERC20: zero address spender\""
                              },
                              "value": "ERC20: zero address spender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c38455fa3dbd081feac620eea10e8ff64b3247dc408fc367e7ae8e668e24d445",
                                "typeString": "literal_string \"ERC20: zero address spender\""
                              }
                            ],
                            "id": 9123,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12552:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12552:61:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9132,
                        "nodeType": "ExpressionStatement",
                        "src": "12552:61:38"
                      },
                      {
                        "expression": {
                          "id": 9139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 9133,
                                "name": "_allowances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8204,
                                "src": "12623:11:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 9136,
                              "indexExpression": {
                                "id": 9134,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9116,
                                "src": "12635:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12623:18:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 9137,
                            "indexExpression": {
                              "id": 9135,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9118,
                              "src": "12642:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12623:27:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9138,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9120,
                            "src": "12653:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12623:35:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9140,
                        "nodeType": "ExpressionStatement",
                        "src": "12623:35:38"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 9142,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9116,
                              "src": "12682:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9143,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9118,
                              "src": "12689:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9144,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9120,
                              "src": "12698:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9141,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9890,
                            "src": "12673:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 9145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12673:31:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9146,
                        "nodeType": "EmitStatement",
                        "src": "12668:36:38"
                      }
                    ]
                  },
                  "id": 9148,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_approve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9121,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9116,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 9148,
                        "src": "12465:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9115,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12465:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9118,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 9148,
                        "src": "12488:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9117,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12488:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9120,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 9148,
                        "src": "12513:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9119,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12513:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12455:77:38"
                  },
                  "returnParameters": {
                    "id": 9122,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12542:0:38"
                  },
                  "scope": 9715,
                  "src": "12438:273:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9209,
                    "nodeType": "Block",
                    "src": "12841:558:38",
                    "statements": [
                      {
                        "assignments": [
                          9158
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9158,
                            "mutability": "mutable",
                            "name": "allowance_",
                            "nodeType": "VariableDeclaration",
                            "scope": 9209,
                            "src": "12851:18:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9157,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12851:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9164,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 9159,
                              "name": "_allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8204,
                              "src": "12872:11:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 9161,
                            "indexExpression": {
                              "id": 9160,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9150,
                              "src": "12884:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12872:18:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9163,
                          "indexExpression": {
                            "id": 9162,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9152,
                            "src": "12891:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12872:27:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12851:48:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 9175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 9165,
                              "name": "allowance_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9158,
                              "src": "12914:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 9168,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12933:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 9167,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12933:7:38",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    }
                                  ],
                                  "id": 9166,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "12928:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 9169,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12928:13:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_uint256",
                                  "typeString": "type(uint256)"
                                }
                              },
                              "id": 9170,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "max",
                              "nodeType": "MemberAccess",
                              "src": "12928:17:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12914:31:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9174,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 9172,
                              "name": "subtractedValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9154,
                              "src": "12949:15:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 9173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12968:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "12949:20:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "12914:55:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9202,
                        "nodeType": "IfStatement",
                        "src": "12910:432:38",
                        "trueBody": {
                          "id": 9201,
                          "nodeType": "Block",
                          "src": "12971:371:38",
                          "statements": [
                            {
                              "assignments": [
                                9177
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9177,
                                  "mutability": "mutable",
                                  "name": "newAllowance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9201,
                                  "src": "13104:20:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9176,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13104:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9181,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9180,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9178,
                                  "name": "allowance_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9158,
                                  "src": "13127:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 9179,
                                  "name": "subtractedValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9154,
                                  "src": "13140:15:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13127:28:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13104:51:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 9185,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 9183,
                                      "name": "newAllowance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9177,
                                      "src": "13177:12:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 9184,
                                      "name": "allowance_",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9158,
                                      "src": "13192:10:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13177:25:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365",
                                    "id": 9186,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13204:31:38",
                                    "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": 9182,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "13169:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 9187,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13169:67:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9188,
                              "nodeType": "ExpressionStatement",
                              "src": "13169:67:38"
                            },
                            {
                              "expression": {
                                "id": 9195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 9189,
                                      "name": "_allowances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8204,
                                      "src": "13250:11:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 9192,
                                    "indexExpression": {
                                      "id": 9190,
                                      "name": "owner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9150,
                                      "src": "13262:5:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "13250:18:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 9193,
                                  "indexExpression": {
                                    "id": 9191,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9152,
                                    "src": "13269:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "13250:27:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 9194,
                                  "name": "newAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9177,
                                  "src": "13280:12:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13250:42:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9196,
                              "nodeType": "ExpressionStatement",
                              "src": "13250:42:38"
                            },
                            {
                              "expression": {
                                "id": 9199,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9197,
                                  "name": "allowance_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9158,
                                  "src": "13306:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 9198,
                                  "name": "newAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9177,
                                  "src": "13319:12:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13306:25:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9200,
                              "nodeType": "ExpressionStatement",
                              "src": "13306:25:38"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 9204,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9150,
                              "src": "13365:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9205,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9152,
                              "src": "13372:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9206,
                              "name": "allowance_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9158,
                              "src": "13381:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9203,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9890,
                            "src": "13356:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 9207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13356:36:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9208,
                        "nodeType": "EmitStatement",
                        "src": "13351:41:38"
                      }
                    ]
                  },
                  "id": 9210,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_decreaseAllowance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9155,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9150,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 9210,
                        "src": "12754:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9149,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12754:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9152,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 9210,
                        "src": "12777:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9151,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12777:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9154,
                        "mutability": "mutable",
                        "name": "subtractedValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 9210,
                        "src": "12802:23:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9153,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12802:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12744:87:38"
                  },
                  "returnParameters": {
                    "id": 9156,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12841:0:38"
                  },
                  "scope": 9715,
                  "src": "12717:682:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9276,
                    "nodeType": "Block",
                    "src": "13512:447:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 9225,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9220,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9214,
                                "src": "13530:2:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 9223,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13544:1:38",
                                    "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": 9222,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13536:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 9221,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13536:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 9224,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13536:10:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "13530:16:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a20746f207a65726f2061646472657373",
                              "id": 9226,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13548:24:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ca9648a0413973c5465015b2ed9d8c7c944c9e4b16bd5ddfaabeaadc99ee22aa",
                                "typeString": "literal_string \"ERC20: to zero address\""
                              },
                              "value": "ERC20: to zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ca9648a0413973c5465015b2ed9d8c7c944c9e4b16bd5ddfaabeaadc99ee22aa",
                                "typeString": "literal_string \"ERC20: to zero address\""
                              }
                            ],
                            "id": 9219,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13522:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13522:51:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9228,
                        "nodeType": "ExpressionStatement",
                        "src": "13522:51:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9229,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9216,
                            "src": "13588:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 9230,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13597:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13588:10:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9269,
                        "nodeType": "IfStatement",
                        "src": "13584:328:38",
                        "trueBody": {
                          "id": 9268,
                          "nodeType": "Block",
                          "src": "13600:312:38",
                          "statements": [
                            {
                              "assignments": [
                                9233
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9233,
                                  "mutability": "mutable",
                                  "name": "balance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9268,
                                  "src": "13614:15:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9232,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13614:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9237,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 9234,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8198,
                                  "src": "13632:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 9236,
                                "indexExpression": {
                                  "id": 9235,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9212,
                                  "src": "13642:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13632:15:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13614:33:38"
                            },
                            {
                              "assignments": [
                                9239
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9239,
                                  "mutability": "mutable",
                                  "name": "newBalance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9268,
                                  "src": "13661:18:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9238,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13661:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9243,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9242,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9240,
                                  "name": "balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9233,
                                  "src": "13682:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 9241,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9216,
                                  "src": "13692:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13682:15:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13661:36:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 9247,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 9245,
                                      "name": "newBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9239,
                                      "src": "13719:10:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 9246,
                                      "name": "balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9233,
                                      "src": "13732:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13719:20:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "45524332303a20696e73756666696369656e742062616c616e6365",
                                    "id": 9248,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13741:29:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_53c0a9b372dd4d10e0466e474511916fb244dbbc3766b7c40c21d1ec47086e63",
                                      "typeString": "literal_string \"ERC20: insufficient balance\""
                                    },
                                    "value": "ERC20: insufficient balance"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_53c0a9b372dd4d10e0466e474511916fb244dbbc3766b7c40c21d1ec47086e63",
                                      "typeString": "literal_string \"ERC20: insufficient balance\""
                                    }
                                  ],
                                  "id": 9244,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "13711:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 9249,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13711:60:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9250,
                              "nodeType": "ExpressionStatement",
                              "src": "13711:60:38"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 9253,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9251,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9212,
                                  "src": "13789:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 9252,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9214,
                                  "src": "13797:2:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "13789:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 9267,
                              "nodeType": "IfStatement",
                              "src": "13785:117:38",
                              "trueBody": {
                                "id": 9266,
                                "nodeType": "Block",
                                "src": "13801:101:38",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 9258,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 9254,
                                          "name": "_balances",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8198,
                                          "src": "13819:9:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                          }
                                        },
                                        "id": 9256,
                                        "indexExpression": {
                                          "id": 9255,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9212,
                                          "src": "13829:4:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "13819:15:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 9257,
                                        "name": "newBalance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9239,
                                        "src": "13837:10:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "13819:28:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9259,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13819:28:38"
                                  },
                                  {
                                    "expression": {
                                      "id": 9264,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 9260,
                                          "name": "_balances",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8198,
                                          "src": "13865:9:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                          }
                                        },
                                        "id": 9262,
                                        "indexExpression": {
                                          "id": 9261,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9214,
                                          "src": "13875:2:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "13865:13:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "+=",
                                      "rightHandSide": {
                                        "id": 9263,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9216,
                                        "src": "13882:5:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "13865:22:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9265,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13865:22:38"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 9271,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9212,
                              "src": "13936:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9272,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9214,
                              "src": "13942:2:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9273,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9216,
                              "src": "13946:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9270,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9881,
                            "src": "13927:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 9274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13927:25:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9275,
                        "nodeType": "EmitStatement",
                        "src": "13922:30:38"
                      }
                    ]
                  },
                  "id": 9277,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9217,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9212,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 9277,
                        "src": "13433:12:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9211,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13433:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9214,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 9277,
                        "src": "13455:10:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9213,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13455:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9216,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 9277,
                        "src": "13475:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9215,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13475:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13423:71:38"
                  },
                  "returnParameters": {
                    "id": 9218,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13512:0:38"
                  },
                  "scope": 9715,
                  "src": "13405:554:38",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9305,
                    "nodeType": "Block",
                    "src": "14092:136:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9289,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9281,
                              "src": "14112:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9290,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9283,
                              "src": "14118:2:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9291,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9285,
                              "src": "14122:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9288,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9277,
                            "src": "14102:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 9292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14102:26:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9293,
                        "nodeType": "ExpressionStatement",
                        "src": "14102:26:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 9296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9294,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9281,
                            "src": "14142:4:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9295,
                            "name": "sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9279,
                            "src": "14150:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "14142:14:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9304,
                        "nodeType": "IfStatement",
                        "src": "14138:84:38",
                        "trueBody": {
                          "id": 9303,
                          "nodeType": "Block",
                          "src": "14158:64:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 9298,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9281,
                                    "src": "14191:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 9299,
                                    "name": "sender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9279,
                                    "src": "14197:6:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 9300,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9285,
                                    "src": "14205:5:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 9297,
                                  "name": "_decreaseAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9210,
                                  "src": "14172:18:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 9301,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14172:39:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9302,
                              "nodeType": "ExpressionStatement",
                              "src": "14172:39:38"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 9306,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9286,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9279,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 9306,
                        "src": "13997:14:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9278,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13997:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9281,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 9306,
                        "src": "14021:12:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9280,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14021:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9283,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 9306,
                        "src": "14043:10:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9282,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14043:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9285,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 9306,
                        "src": "14063:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9284,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14063:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13987:95:38"
                  },
                  "returnParameters": {
                    "id": 9287,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14092:0:38"
                  },
                  "scope": 9715,
                  "src": "13965:263:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9364,
                    "nodeType": "Block",
                    "src": "14293:421:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 9319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9314,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9308,
                                "src": "14311:2:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 9317,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14325:1:38",
                                    "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": 9316,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14317:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 9315,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14317:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 9318,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14317:10:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "14311:16:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207a65726f2061646472657373",
                              "id": 9320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14329:21:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_69b5c9c0a6c597382847bfa3cd65f513fd5b62b9d8416111652afeec522ea587",
                                "typeString": "literal_string \"ERC20: zero address\""
                              },
                              "value": "ERC20: zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_69b5c9c0a6c597382847bfa3cd65f513fd5b62b9d8416111652afeec522ea587",
                                "typeString": "literal_string \"ERC20: zero address\""
                              }
                            ],
                            "id": 9313,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14303:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14303:48:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9322,
                        "nodeType": "ExpressionStatement",
                        "src": "14303:48:38"
                      },
                      {
                        "assignments": [
                          9324
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9324,
                            "mutability": "mutable",
                            "name": "supply",
                            "nodeType": "VariableDeclaration",
                            "scope": 9364,
                            "src": "14361:14:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9323,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14361:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9326,
                        "initialValue": {
                          "id": 9325,
                          "name": "_totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8206,
                          "src": "14378:12:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14361:29:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9327,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9310,
                            "src": "14404:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 9328,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14413:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14404:10:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9354,
                        "nodeType": "IfStatement",
                        "src": "14400:262:38",
                        "trueBody": {
                          "id": 9353,
                          "nodeType": "Block",
                          "src": "14416:246:38",
                          "statements": [
                            {
                              "assignments": [
                                9331
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9331,
                                  "mutability": "mutable",
                                  "name": "newSupply",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9353,
                                  "src": "14430:17:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9330,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14430:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9335,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9334,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9332,
                                  "name": "supply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9324,
                                  "src": "14450:6:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 9333,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9310,
                                  "src": "14459:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14450:14:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14430:34:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 9339,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 9337,
                                      "name": "newSupply",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9331,
                                      "src": "14486:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "id": 9338,
                                      "name": "supply",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9324,
                                      "src": "14498:6:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "14486:18:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "45524332303a20737570706c79206f766572666c6f77",
                                    "id": 9340,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14506:24:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_555ebf03264be25a26b5120044887f13a64477e19db4facbaaee717abfa82472",
                                      "typeString": "literal_string \"ERC20: supply overflow\""
                                    },
                                    "value": "ERC20: supply overflow"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_555ebf03264be25a26b5120044887f13a64477e19db4facbaaee717abfa82472",
                                      "typeString": "literal_string \"ERC20: supply overflow\""
                                    }
                                  ],
                                  "id": 9336,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "14478:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 9341,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14478:53:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9342,
                              "nodeType": "ExpressionStatement",
                              "src": "14478:53:38"
                            },
                            {
                              "expression": {
                                "id": 9345,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9343,
                                  "name": "_totalSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8206,
                                  "src": "14545:12:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 9344,
                                  "name": "newSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9331,
                                  "src": "14560:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14545:24:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9346,
                              "nodeType": "ExpressionStatement",
                              "src": "14545:24:38"
                            },
                            {
                              "expression": {
                                "id": 9351,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 9347,
                                    "name": "_balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8198,
                                    "src": "14583:9:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 9349,
                                  "indexExpression": {
                                    "id": 9348,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9308,
                                    "src": "14593:2:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "14583:13:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 9350,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9310,
                                  "src": "14600:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14583:22:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9352,
                              "nodeType": "ExpressionStatement",
                              "src": "14583:22:38"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 9358,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14693:1:38",
                                  "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": 9357,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "14685:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 9356,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14685:7:38",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 9359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14685:10:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 9360,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9308,
                              "src": "14697:2:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9361,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9310,
                              "src": "14701:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9355,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9881,
                            "src": "14676:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 9362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14676:31:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9363,
                        "nodeType": "EmitStatement",
                        "src": "14671:36:38"
                      }
                    ]
                  },
                  "id": 9365,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9311,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9308,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 9365,
                        "src": "14249:10:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9307,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14249:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9310,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 9365,
                        "src": "14261:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9309,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14261:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14248:27:38"
                  },
                  "returnParameters": {
                    "id": 9312,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14293:0:38"
                  },
                  "scope": 9715,
                  "src": "14234:480:38",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9486,
                    "nodeType": "Block",
                    "src": "14811:954:38",
                    "statements": [
                      {
                        "assignments": [
                          9375
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9375,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 9486,
                            "src": "14821:14:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9374,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14821:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9378,
                        "initialValue": {
                          "expression": {
                            "id": 9376,
                            "name": "recipients",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9368,
                            "src": "14838:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 9377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "14838:17:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14821:34:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9380,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9375,
                                "src": "14873:6:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 9381,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9371,
                                  "src": "14883:6:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 9382,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "14883:13:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14873:23:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a20696e636f6e73697374656e7420617272617973",
                              "id": 9384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14898:28:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e95c96836e656718b0ff0a4d24263e8dcfd630813f94aada96d5a0c7faf0cfb5",
                                "typeString": "literal_string \"ERC20: inconsistent arrays\""
                              },
                              "value": "ERC20: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e95c96836e656718b0ff0a4d24263e8dcfd630813f94aada96d5a0c7faf0cfb5",
                                "typeString": "literal_string \"ERC20: inconsistent arrays\""
                              }
                            ],
                            "id": 9379,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14865:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14865:62:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9386,
                        "nodeType": "ExpressionStatement",
                        "src": "14865:62:38"
                      },
                      {
                        "assignments": [
                          9388
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9388,
                            "mutability": "mutable",
                            "name": "totalValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 9486,
                            "src": "14938:18:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9387,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14938:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9389,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14938:18:38"
                      },
                      {
                        "body": {
                          "id": 9458,
                          "nodeType": "Block",
                          "src": "15000:516:38",
                          "statements": [
                            {
                              "assignments": [
                                9400
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9400,
                                  "mutability": "mutable",
                                  "name": "to",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9458,
                                  "src": "15014:10:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 9399,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15014:7:38",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9404,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 9401,
                                  "name": "recipients",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9368,
                                  "src": "15027:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 9403,
                                "indexExpression": {
                                  "id": 9402,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9391,
                                  "src": "15038:1:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15027:13:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15014:26:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 9411,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 9406,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9400,
                                      "src": "15062:2:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 9409,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "15076:1:38",
                                          "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": 9408,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "15068:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 9407,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "15068:7:38",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 9410,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "15068:10:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "15062:16:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "45524332303a207a65726f2061646472657373",
                                    "id": 9412,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15080:21:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_69b5c9c0a6c597382847bfa3cd65f513fd5b62b9d8416111652afeec522ea587",
                                      "typeString": "literal_string \"ERC20: zero address\""
                                    },
                                    "value": "ERC20: zero address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_69b5c9c0a6c597382847bfa3cd65f513fd5b62b9d8416111652afeec522ea587",
                                      "typeString": "literal_string \"ERC20: zero address\""
                                    }
                                  ],
                                  "id": 9405,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "15054:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 9413,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15054:48:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9414,
                              "nodeType": "ExpressionStatement",
                              "src": "15054:48:38"
                            },
                            {
                              "assignments": [
                                9416
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9416,
                                  "mutability": "mutable",
                                  "name": "value",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9458,
                                  "src": "15117:13:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9415,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15117:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9420,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 9417,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9371,
                                  "src": "15133:6:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 9419,
                                "indexExpression": {
                                  "id": 9418,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9391,
                                  "src": "15140:1:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15133:9:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15117:25:38"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9421,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9416,
                                  "src": "15160:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 9422,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15169:1:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "15160:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 9448,
                              "nodeType": "IfStatement",
                              "src": "15156:300:38",
                              "trueBody": {
                                "id": 9447,
                                "nodeType": "Block",
                                "src": "15172:284:38",
                                "statements": [
                                  {
                                    "assignments": [
                                      9425
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 9425,
                                        "mutability": "mutable",
                                        "name": "newTotalValue",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 9447,
                                        "src": "15190:21:38",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 9424,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "15190:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 9429,
                                    "initialValue": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 9428,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 9426,
                                        "name": "totalValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9388,
                                        "src": "15214:10:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "id": 9427,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9416,
                                        "src": "15227:5:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "15214:18:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "15190:42:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 9433,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 9431,
                                            "name": "newTotalValue",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9425,
                                            "src": "15258:13:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "id": 9432,
                                            "name": "totalValue",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9388,
                                            "src": "15274:10:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "15258:26:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "45524332303a2076616c756573206f766572666c6f77",
                                          "id": 9434,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "15286:24:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_1042b868d03dd202c94535497b0aea159ffb0ed92f9c8495054728ee0acf7ff1",
                                            "typeString": "literal_string \"ERC20: values overflow\""
                                          },
                                          "value": "ERC20: values overflow"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_1042b868d03dd202c94535497b0aea159ffb0ed92f9c8495054728ee0acf7ff1",
                                            "typeString": "literal_string \"ERC20: values overflow\""
                                          }
                                        ],
                                        "id": 9430,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "15250:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 9435,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "15250:61:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 9436,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15250:61:38"
                                  },
                                  {
                                    "expression": {
                                      "id": 9439,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 9437,
                                        "name": "totalValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9388,
                                        "src": "15329:10:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 9438,
                                        "name": "newTotalValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9425,
                                        "src": "15342:13:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "15329:26:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9440,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15329:26:38"
                                  },
                                  {
                                    "expression": {
                                      "id": 9445,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 9441,
                                          "name": "_balances",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8198,
                                          "src": "15373:9:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                          }
                                        },
                                        "id": 9443,
                                        "indexExpression": {
                                          "id": 9442,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9400,
                                          "src": "15383:2:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "15373:13:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "+=",
                                      "rightHandSide": {
                                        "id": 9444,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9416,
                                        "src": "15390:5:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "15373:22:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9446,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15373:22:38"
                                  }
                                ]
                              }
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 9452,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15491:1:38",
                                        "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": 9451,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "15483:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 9450,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "15483:7:38",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 9453,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15483:10:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 9454,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9400,
                                    "src": "15495:2:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 9455,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9416,
                                    "src": "15499:5:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 9449,
                                  "name": "Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9881,
                                  "src": "15474:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 9456,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15474:31:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9457,
                              "nodeType": "EmitStatement",
                              "src": "15469:36:38"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9393,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9391,
                            "src": "14982:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9394,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9375,
                            "src": "14987:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14982:11:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9459,
                        "initializationExpression": {
                          "assignments": [
                            9391
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 9391,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 9459,
                              "src": "14971:9:38",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 9390,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "14971:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 9392,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "14971:9:38"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 9397,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "14995:3:38",
                            "subExpression": {
                              "id": 9396,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9391,
                              "src": "14997:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9398,
                          "nodeType": "ExpressionStatement",
                          "src": "14995:3:38"
                        },
                        "nodeType": "ForStatement",
                        "src": "14966:550:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9460,
                            "name": "totalValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9388,
                            "src": "15530:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 9461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15544:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "15530:15:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9485,
                        "nodeType": "IfStatement",
                        "src": "15526:233:38",
                        "trueBody": {
                          "id": 9484,
                          "nodeType": "Block",
                          "src": "15547:212:38",
                          "statements": [
                            {
                              "assignments": [
                                9464
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9464,
                                  "mutability": "mutable",
                                  "name": "supply",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9484,
                                  "src": "15561:14:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9463,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15561:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9466,
                              "initialValue": {
                                "id": 9465,
                                "name": "_totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8206,
                                "src": "15578:12:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15561:29:38"
                            },
                            {
                              "assignments": [
                                9468
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9468,
                                  "mutability": "mutable",
                                  "name": "newSupply",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9484,
                                  "src": "15604:17:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9467,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15604:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9472,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9471,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9469,
                                  "name": "supply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9464,
                                  "src": "15624:6:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 9470,
                                  "name": "totalValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9388,
                                  "src": "15633:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15624:19:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15604:39:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 9476,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 9474,
                                      "name": "newSupply",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9468,
                                      "src": "15665:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "id": 9475,
                                      "name": "supply",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9464,
                                      "src": "15677:6:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "15665:18:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "45524332303a20737570706c79206f766572666c6f77",
                                    "id": 9477,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15685:24:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_555ebf03264be25a26b5120044887f13a64477e19db4facbaaee717abfa82472",
                                      "typeString": "literal_string \"ERC20: supply overflow\""
                                    },
                                    "value": "ERC20: supply overflow"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_555ebf03264be25a26b5120044887f13a64477e19db4facbaaee717abfa82472",
                                      "typeString": "literal_string \"ERC20: supply overflow\""
                                    }
                                  ],
                                  "id": 9473,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "15657:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 9478,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15657:53:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9479,
                              "nodeType": "ExpressionStatement",
                              "src": "15657:53:38"
                            },
                            {
                              "expression": {
                                "id": 9482,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9480,
                                  "name": "_totalSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8206,
                                  "src": "15724:12:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 9481,
                                  "name": "newSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9468,
                                  "src": "15739:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15724:24:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9483,
                              "nodeType": "ExpressionStatement",
                              "src": "15724:24:38"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 9487,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_batchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9372,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9368,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 9487,
                        "src": "14740:27:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9366,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "14740:7:38",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9367,
                          "nodeType": "ArrayTypeName",
                          "src": "14740:9:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9371,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 9487,
                        "src": "14769:23:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9369,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "14769:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9370,
                          "nodeType": "ArrayTypeName",
                          "src": "14769:9:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14739:54:38"
                  },
                  "returnParameters": {
                    "id": 9373,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14811:0:38"
                  },
                  "scope": 9715,
                  "src": "14720:1045:38",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9537,
                    "nodeType": "Block",
                    "src": "15832:381:38",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9494,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9491,
                            "src": "15846:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 9495,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15855:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "15846:10:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9527,
                        "nodeType": "IfStatement",
                        "src": "15842:317:38",
                        "trueBody": {
                          "id": 9526,
                          "nodeType": "Block",
                          "src": "15858:301:38",
                          "statements": [
                            {
                              "assignments": [
                                9498
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9498,
                                  "mutability": "mutable",
                                  "name": "balance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9526,
                                  "src": "15872:15:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9497,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15872:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9502,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 9499,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8198,
                                  "src": "15890:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 9501,
                                "indexExpression": {
                                  "id": 9500,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9489,
                                  "src": "15900:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15890:15:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15872:33:38"
                            },
                            {
                              "assignments": [
                                9504
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9504,
                                  "mutability": "mutable",
                                  "name": "newBalance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9526,
                                  "src": "15919:18:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9503,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15919:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9508,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9507,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9505,
                                  "name": "balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9498,
                                  "src": "15940:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 9506,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9491,
                                  "src": "15950:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15940:15:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15919:36:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 9512,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 9510,
                                      "name": "newBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9504,
                                      "src": "15977:10:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 9511,
                                      "name": "balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9498,
                                      "src": "15990:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "15977:20:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "45524332303a20696e73756666696369656e742062616c616e6365",
                                    "id": 9513,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15999:29:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_53c0a9b372dd4d10e0466e474511916fb244dbbc3766b7c40c21d1ec47086e63",
                                      "typeString": "literal_string \"ERC20: insufficient balance\""
                                    },
                                    "value": "ERC20: insufficient balance"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_53c0a9b372dd4d10e0466e474511916fb244dbbc3766b7c40c21d1ec47086e63",
                                      "typeString": "literal_string \"ERC20: insufficient balance\""
                                    }
                                  ],
                                  "id": 9509,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "15969:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 9514,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15969:60:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9515,
                              "nodeType": "ExpressionStatement",
                              "src": "15969:60:38"
                            },
                            {
                              "expression": {
                                "id": 9520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 9516,
                                    "name": "_balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8198,
                                    "src": "16043:9:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 9518,
                                  "indexExpression": {
                                    "id": 9517,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9489,
                                    "src": "16053:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "16043:15:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 9519,
                                  "name": "newBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9504,
                                  "src": "16061:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16043:28:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9521,
                              "nodeType": "ExpressionStatement",
                              "src": "16043:28:38"
                            },
                            {
                              "expression": {
                                "id": 9524,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9522,
                                  "name": "_totalSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8206,
                                  "src": "16085:12:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 9523,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9491,
                                  "src": "16101:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16085:21:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9525,
                              "nodeType": "ExpressionStatement",
                              "src": "16085:21:38"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 9529,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9489,
                              "src": "16182:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 9532,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16196:1:38",
                                  "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": 9531,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16188:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 9530,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16188:7:38",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 9533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16188:10:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 9534,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9491,
                              "src": "16200:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9528,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9881,
                            "src": "16173:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 9535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16173:33:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9536,
                        "nodeType": "EmitStatement",
                        "src": "16168:38:38"
                      }
                    ]
                  },
                  "id": 9538,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9492,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9489,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 9538,
                        "src": "15786:12:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9488,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15786:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9491,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 9538,
                        "src": "15800:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9490,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15800:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15785:29:38"
                  },
                  "returnParameters": {
                    "id": 9493,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15832:0:38"
                  },
                  "scope": 9715,
                  "src": "15771:442:38",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9566,
                    "nodeType": "Block",
                    "src": "16284:167:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9546,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9540,
                              "src": "16300:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9547,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9542,
                              "src": "16306:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9545,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9538,
                            "src": "16294:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 9548,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16294:18:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9549,
                        "nodeType": "ExpressionStatement",
                        "src": "16294:18:38"
                      },
                      {
                        "assignments": [
                          9551
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9551,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 9566,
                            "src": "16322:14:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 9550,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16322:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9554,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 9552,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "16339:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 9553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16339:12:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16322:29:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 9557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9555,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9540,
                            "src": "16365:4:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9556,
                            "name": "sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9551,
                            "src": "16373:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "16365:14:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9565,
                        "nodeType": "IfStatement",
                        "src": "16361:84:38",
                        "trueBody": {
                          "id": 9564,
                          "nodeType": "Block",
                          "src": "16381:64:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 9559,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9540,
                                    "src": "16414:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 9560,
                                    "name": "sender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9551,
                                    "src": "16420:6:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 9561,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9542,
                                    "src": "16428:5:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 9558,
                                  "name": "_decreaseAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9210,
                                  "src": "16395:18:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 9562,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16395:39:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9563,
                              "nodeType": "ExpressionStatement",
                              "src": "16395:39:38"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 9567,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9543,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9540,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 9567,
                        "src": "16238:12:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9539,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16238:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9542,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 9567,
                        "src": "16252:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9541,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16252:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16237:29:38"
                  },
                  "returnParameters": {
                    "id": 9544,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16284:0:38"
                  },
                  "scope": 9715,
                  "src": "16219:232:38",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9683,
                    "nodeType": "Block",
                    "src": "16548:1004:38",
                    "statements": [
                      {
                        "assignments": [
                          9577
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9577,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 9683,
                            "src": "16558:14:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9576,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16558:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9580,
                        "initialValue": {
                          "expression": {
                            "id": 9578,
                            "name": "owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9570,
                            "src": "16575:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 9579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "16575:13:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16558:30:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9585,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9582,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9577,
                                "src": "16606:6:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 9583,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9573,
                                  "src": "16616:6:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 9584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "16616:13:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "16606:23:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a20696e636f6e73697374656e7420617272617973",
                              "id": 9586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16631:28:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e95c96836e656718b0ff0a4d24263e8dcfd630813f94aada96d5a0c7faf0cfb5",
                                "typeString": "literal_string \"ERC20: inconsistent arrays\""
                              },
                              "value": "ERC20: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e95c96836e656718b0ff0a4d24263e8dcfd630813f94aada96d5a0c7faf0cfb5",
                                "typeString": "literal_string \"ERC20: inconsistent arrays\""
                              }
                            ],
                            "id": 9581,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "16598:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16598:62:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9588,
                        "nodeType": "ExpressionStatement",
                        "src": "16598:62:38"
                      },
                      {
                        "assignments": [
                          9590
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9590,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 9683,
                            "src": "16671:14:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 9589,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16671:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9593,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 9591,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "16688:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 9592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16688:12:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16671:29:38"
                      },
                      {
                        "assignments": [
                          9595
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9595,
                            "mutability": "mutable",
                            "name": "totalValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 9683,
                            "src": "16711:18:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9594,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16711:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9596,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16711:18:38"
                      },
                      {
                        "body": {
                          "id": 9672,
                          "nodeType": "Block",
                          "src": "16773:630:38",
                          "statements": [
                            {
                              "assignments": [
                                9607
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9607,
                                  "mutability": "mutable",
                                  "name": "from",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9672,
                                  "src": "16787:12:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 9606,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16787:7:38",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9611,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 9608,
                                  "name": "owners",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9570,
                                  "src": "16802:6:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 9610,
                                "indexExpression": {
                                  "id": 9609,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9598,
                                  "src": "16809:1:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16802:9:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16787:24:38"
                            },
                            {
                              "assignments": [
                                9613
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9613,
                                  "mutability": "mutable",
                                  "name": "value",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9672,
                                  "src": "16825:13:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9612,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16825:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9617,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 9614,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9573,
                                  "src": "16841:6:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 9616,
                                "indexExpression": {
                                  "id": 9615,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9598,
                                  "src": "16848:1:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16841:9:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16825:25:38"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9620,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9618,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9613,
                                  "src": "16868:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 9619,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16877:1:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "16868:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 9651,
                              "nodeType": "IfStatement",
                              "src": "16864:371:38",
                              "trueBody": {
                                "id": 9650,
                                "nodeType": "Block",
                                "src": "16880:355:38",
                                "statements": [
                                  {
                                    "assignments": [
                                      9622
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 9622,
                                        "mutability": "mutable",
                                        "name": "balance",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 9650,
                                        "src": "16898:15:38",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 9621,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "16898:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 9626,
                                    "initialValue": {
                                      "baseExpression": {
                                        "id": 9623,
                                        "name": "_balances",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8198,
                                        "src": "16916:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 9625,
                                      "indexExpression": {
                                        "id": 9624,
                                        "name": "from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9607,
                                        "src": "16926:4:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "16916:15:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "16898:33:38"
                                  },
                                  {
                                    "assignments": [
                                      9628
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 9628,
                                        "mutability": "mutable",
                                        "name": "newBalance",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 9650,
                                        "src": "16949:18:38",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 9627,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "16949:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 9632,
                                    "initialValue": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 9631,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 9629,
                                        "name": "balance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9622,
                                        "src": "16970:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 9630,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9613,
                                        "src": "16980:5:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "16970:15:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "16949:36:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 9636,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 9634,
                                            "name": "newBalance",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9628,
                                            "src": "17011:10:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<",
                                          "rightExpression": {
                                            "id": 9635,
                                            "name": "balance",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9622,
                                            "src": "17024:7:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "17011:20:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "45524332303a20696e73756666696369656e742062616c616e6365",
                                          "id": 9637,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17033:29:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_53c0a9b372dd4d10e0466e474511916fb244dbbc3766b7c40c21d1ec47086e63",
                                            "typeString": "literal_string \"ERC20: insufficient balance\""
                                          },
                                          "value": "ERC20: insufficient balance"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_53c0a9b372dd4d10e0466e474511916fb244dbbc3766b7c40c21d1ec47086e63",
                                            "typeString": "literal_string \"ERC20: insufficient balance\""
                                          }
                                        ],
                                        "id": 9633,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "17003:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 9638,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17003:60:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 9639,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17003:60:38"
                                  },
                                  {
                                    "expression": {
                                      "id": 9644,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 9640,
                                          "name": "_balances",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8198,
                                          "src": "17081:9:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                          }
                                        },
                                        "id": 9642,
                                        "indexExpression": {
                                          "id": 9641,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9607,
                                          "src": "17091:4:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "17081:15:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 9643,
                                        "name": "newBalance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9628,
                                        "src": "17099:10:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "17081:28:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9645,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17081:28:38"
                                  },
                                  {
                                    "expression": {
                                      "id": 9648,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 9646,
                                        "name": "totalValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9595,
                                        "src": "17127:10:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "+=",
                                      "rightHandSide": {
                                        "id": 9647,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9613,
                                        "src": "17141:5:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "17127:19:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9649,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17127:19:38"
                                  }
                                ]
                              }
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 9653,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9607,
                                    "src": "17262:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 9656,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17276:1:38",
                                        "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": 9655,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "17268:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 9654,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17268:7:38",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 9657,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17268:10:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 9658,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9613,
                                    "src": "17280:5:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 9652,
                                  "name": "Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9881,
                                  "src": "17253:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 9659,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17253:33:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9660,
                              "nodeType": "EmitStatement",
                              "src": "17248:38:38"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 9663,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9661,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9607,
                                  "src": "17305:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 9662,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9590,
                                  "src": "17313:6:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "17305:14:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 9671,
                              "nodeType": "IfStatement",
                              "src": "17301:92:38",
                              "trueBody": {
                                "id": 9670,
                                "nodeType": "Block",
                                "src": "17321:72:38",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 9665,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9607,
                                          "src": "17358:4:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 9666,
                                          "name": "sender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9590,
                                          "src": "17364:6:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 9667,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9613,
                                          "src": "17372:5:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 9664,
                                        "name": "_decreaseAllowance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9210,
                                        "src": "17339:18:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,uint256)"
                                        }
                                      },
                                      "id": 9668,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17339:39:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 9669,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17339:39:38"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9600,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9598,
                            "src": "16755:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9601,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9577,
                            "src": "16760:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16755:11:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9673,
                        "initializationExpression": {
                          "assignments": [
                            9598
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 9598,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 9673,
                              "src": "16744:9:38",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 9597,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "16744:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 9599,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "16744:9:38"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 9604,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "16768:3:38",
                            "subExpression": {
                              "id": 9603,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9598,
                              "src": "16770:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9605,
                          "nodeType": "ExpressionStatement",
                          "src": "16768:3:38"
                        },
                        "nodeType": "ForStatement",
                        "src": "16739:664:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9674,
                            "name": "totalValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9595,
                            "src": "17417:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 9675,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17431:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17417:15:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9682,
                        "nodeType": "IfStatement",
                        "src": "17413:133:38",
                        "trueBody": {
                          "id": 9681,
                          "nodeType": "Block",
                          "src": "17434:112:38",
                          "statements": [
                            {
                              "expression": {
                                "id": 9679,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9677,
                                  "name": "_totalSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8206,
                                  "src": "17448:12:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 9678,
                                  "name": "totalValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9595,
                                  "src": "17464:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17448:26:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9680,
                              "nodeType": "ExpressionStatement",
                              "src": "17448:26:38"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 9684,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9574,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9570,
                        "mutability": "mutable",
                        "name": "owners",
                        "nodeType": "VariableDeclaration",
                        "scope": 9684,
                        "src": "16481:23:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9568,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "16481:7:38",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9569,
                          "nodeType": "ArrayTypeName",
                          "src": "16481:9:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9573,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 9684,
                        "src": "16506:23:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9571,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "16506:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9572,
                          "nodeType": "ArrayTypeName",
                          "src": "16506:9:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16480:50:38"
                  },
                  "returnParameters": {
                    "id": 9575,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16548:0:38"
                  },
                  "scope": 9715,
                  "src": "16457:1095:38",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9713,
                    "nodeType": "Block",
                    "src": "17790:360:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                                      "id": 9697,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17888:84:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                        "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                      },
                                      "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                        "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                      }
                                    ],
                                    "id": 9696,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "17878:9:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 9698,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17878:95:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 9700,
                                      "name": "name_",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9688,
                                      "src": "18005:5:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 9699,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "17995:9:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 9701,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17995:16:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "31",
                                      "id": 9703,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18043:3:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                        "typeString": "literal_string \"1\""
                                      },
                                      "value": "1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                        "typeString": "literal_string \"1\""
                                      }
                                    ],
                                    "id": 9702,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "18033:9:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 9704,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18033:14:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 9705,
                                  "name": "chainId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9686,
                                  "src": "18069:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 9708,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "18106:4:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ERC20_$9715",
                                        "typeString": "contract ERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_ERC20_$9715",
                                        "typeString": "contract ERC20"
                                      }
                                    ],
                                    "id": 9707,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "18098:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 9706,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "18098:7:38",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 9709,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18098:13:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 9694,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "17846:3:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 9695,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "17846:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 9710,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17846:283:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 9693,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "17819:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 9711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17819:324:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 9692,
                        "id": 9712,
                        "nodeType": "Return",
                        "src": "17800:343:38"
                      }
                    ]
                  },
                  "id": 9714,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_calculateDomainSeparator",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9689,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9686,
                        "mutability": "mutable",
                        "name": "chainId",
                        "nodeType": "VariableDeclaration",
                        "scope": 9714,
                        "src": "17722:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9685,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17722:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9688,
                        "mutability": "mutable",
                        "name": "name_",
                        "nodeType": "VariableDeclaration",
                        "scope": 9714,
                        "src": "17739:18:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 9687,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "17739:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17721:37:38"
                  },
                  "returnParameters": {
                    "id": 9692,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9691,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9714,
                        "src": "17781:7:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 9690,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "17781:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17780:9:38"
                  },
                  "scope": 9715,
                  "src": "17687:463:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 9716,
              "src": "941:17211:38"
            }
          ],
          "src": "33:18120:38"
        },
        "id": 38
      },
      "contracts/token/ERC20/ERC20Burnable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/ERC20Burnable.sol",
          "exportedSymbols": {
            "ERC20": [
              9715
            ],
            "ERC20Burnable": [
              9824
            ],
            "IERC165": [
              218
            ],
            "IERC20Burnable": [
              10035
            ]
          },
          "id": 9825,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9717,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:39"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 9719,
              "nodeType": "ImportDirective",
              "scope": 9825,
              "sourceUnit": 219,
              "src": "66:93:39",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9718,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:7:39",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20Burnable.sol",
              "file": "./interfaces/IERC20Burnable.sol",
              "id": 9721,
              "nodeType": "ImportDirective",
              "scope": 9825,
              "sourceUnit": 10036,
              "src": "160:63:39",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9720,
                    "name": "IERC20Burnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "168:14:39",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/ERC20.sol",
              "file": "./ERC20.sol",
              "id": 9723,
              "nodeType": "ImportDirective",
              "scope": 9825,
              "sourceUnit": 9716,
              "src": "224:34:39",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9722,
                    "name": "ERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "232:5:39",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 9725,
                    "name": "ERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9715,
                    "src": "353:5:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$9715",
                      "typeString": "contract ERC20"
                    }
                  },
                  "id": 9726,
                  "nodeType": "InheritanceSpecifier",
                  "src": "353:5:39"
                },
                {
                  "baseName": {
                    "id": 9727,
                    "name": "IERC20Burnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10035,
                    "src": "360:14:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Burnable_$10035",
                      "typeString": "contract IERC20Burnable"
                    }
                  },
                  "id": 9728,
                  "nodeType": "InheritanceSpecifier",
                  "src": "360:14:39"
                }
              ],
              "contractDependencies": [
                218,
                322,
                9715,
                9947,
                9971,
                10001,
                10035,
                10057,
                10067,
                10125,
                10173
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 9724,
                "nodeType": "StructuredDocumentation",
                "src": "260:66:39",
                "text": " @title ERC20 Fungible Token Contract, Burnable version."
              },
              "fullyImplemented": true,
              "id": 9824,
              "linearizedBaseContracts": [
                9824,
                10035,
                9715,
                10125,
                10173,
                10001,
                9971,
                10067,
                10057,
                9947,
                218,
                322
              ],
              "name": "ERC20Burnable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 9742,
                    "nodeType": "Block",
                    "src": "511:2:39",
                    "statements": []
                  },
                  "id": 9743,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 9737,
                          "name": "name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9730,
                          "src": "487:4:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "id": 9738,
                          "name": "symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9732,
                          "src": "493:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "id": 9739,
                          "name": "decimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9734,
                          "src": "501:8:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "id": 9740,
                      "modifierName": {
                        "id": 9736,
                        "name": "ERC20",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9715,
                        "src": "481:5:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC20_$9715_$",
                          "typeString": "type(contract ERC20)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "481:29:39"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9735,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9730,
                        "mutability": "mutable",
                        "name": "name",
                        "nodeType": "VariableDeclaration",
                        "scope": 9743,
                        "src": "402:18:39",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 9729,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "402:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9732,
                        "mutability": "mutable",
                        "name": "symbol",
                        "nodeType": "VariableDeclaration",
                        "scope": 9743,
                        "src": "430:20:39",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 9731,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "430:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9734,
                        "mutability": "mutable",
                        "name": "decimals",
                        "nodeType": "VariableDeclaration",
                        "scope": 9743,
                        "src": "460:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 9733,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "460:5:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "392:88:39"
                  },
                  "returnParameters": {
                    "id": 9741,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "511:0:39"
                  },
                  "scope": 9824,
                  "src": "381:132:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    8312
                  ],
                  "body": {
                    "id": 9764,
                    "nodeType": "Block",
                    "src": "767:111:39",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 9762,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 9757,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 9752,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9746,
                              "src": "784:11:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 9754,
                                    "name": "IERC20Burnable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10035,
                                    "src": "804:14:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20Burnable_$10035_$",
                                      "typeString": "type(contract IERC20Burnable)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20Burnable_$10035_$",
                                      "typeString": "type(contract IERC20Burnable)"
                                    }
                                  ],
                                  "id": 9753,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "799:4:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 9755,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "799:20:39",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC20Burnable_$10035",
                                  "typeString": "type(contract IERC20Burnable)"
                                }
                              },
                              "id": 9756,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "799:32:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "784:47:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 9760,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9746,
                                "src": "859:11:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 9758,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "835:5:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_super$_ERC20Burnable_$9824",
                                  "typeString": "contract super ERC20Burnable"
                                }
                              },
                              "id": 9759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8312,
                              "src": "835:23:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 9761,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "835:36:39",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "784:87:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 9751,
                        "id": 9763,
                        "nodeType": "Return",
                        "src": "777:94:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9744,
                    "nodeType": "StructuredDocumentation",
                    "src": "648:23:39",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 9765,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9748,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "743:8:39"
                  },
                  "parameters": {
                    "id": 9747,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9746,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 9765,
                        "src": "703:18:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 9745,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "703:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "702:20:39"
                  },
                  "returnParameters": {
                    "id": 9751,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9750,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9765,
                        "src": "761:4:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9749,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "761:4:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "760:6:39"
                  },
                  "scope": 9824,
                  "src": "676:202:39",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    10012
                  ],
                  "body": {
                    "id": 9782,
                    "nodeType": "Block",
                    "src": "1119:65:39",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 9775,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "1135:10:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 9776,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1135:12:39",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 9777,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9768,
                              "src": "1149:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9774,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9538,
                            "src": "1129:5:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 9778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1129:27:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9779,
                        "nodeType": "ExpressionStatement",
                        "src": "1129:27:39"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 9780,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1173:4:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 9773,
                        "id": 9781,
                        "nodeType": "Return",
                        "src": "1166:11:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9766,
                    "nodeType": "StructuredDocumentation",
                    "src": "1013:30:39",
                    "text": "@inheritdoc IERC20Burnable"
                  },
                  "functionSelector": "42966c68",
                  "id": 9783,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9770,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1095:8:39"
                  },
                  "parameters": {
                    "id": 9769,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9768,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 9783,
                        "src": "1062:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9767,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1062:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1061:16:39"
                  },
                  "returnParameters": {
                    "id": 9773,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9772,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9783,
                        "src": "1113:4:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9771,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1113:4:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1112:6:39"
                  },
                  "scope": 9824,
                  "src": "1048:136:39",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    10022
                  ],
                  "body": {
                    "id": 9801,
                    "nodeType": "Block",
                    "src": "1313:60:39",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9795,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9786,
                              "src": "1333:4:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9796,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9788,
                              "src": "1339:5:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9794,
                            "name": "_burnFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9567,
                            "src": "1323:9:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 9797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1323:22:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9798,
                        "nodeType": "ExpressionStatement",
                        "src": "1323:22:39"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 9799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1362:4:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 9793,
                        "id": 9800,
                        "nodeType": "Return",
                        "src": "1355:11:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9784,
                    "nodeType": "StructuredDocumentation",
                    "src": "1190:30:39",
                    "text": "@inheritdoc IERC20Burnable"
                  },
                  "functionSelector": "79cc6790",
                  "id": 9802,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9790,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1289:8:39"
                  },
                  "parameters": {
                    "id": 9789,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9786,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 9802,
                        "src": "1243:12:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9785,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1243:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9788,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 9802,
                        "src": "1257:13:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9787,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1257:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1242:29:39"
                  },
                  "returnParameters": {
                    "id": 9793,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9792,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9802,
                        "src": "1307:4:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9791,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1307:4:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1306:6:39"
                  },
                  "scope": 9824,
                  "src": "1225:148:39",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    10034
                  ],
                  "body": {
                    "id": 9822,
                    "nodeType": "Block",
                    "src": "1532:68:39",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9816,
                              "name": "owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9806,
                              "src": "1557:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            {
                              "id": 9817,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9809,
                              "src": "1565:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            ],
                            "id": 9815,
                            "name": "_batchBurnFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9684,
                            "src": "1542:14:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory,uint256[] memory)"
                            }
                          },
                          "id": 9818,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1542:30:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9819,
                        "nodeType": "ExpressionStatement",
                        "src": "1542:30:39"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 9820,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1589:4:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 9814,
                        "id": 9821,
                        "nodeType": "Return",
                        "src": "1582:11:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9803,
                    "nodeType": "StructuredDocumentation",
                    "src": "1379:30:39",
                    "text": "@inheritdoc IERC20Burnable"
                  },
                  "functionSelector": "1b9a7529",
                  "id": 9823,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9811,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1508:8:39"
                  },
                  "parameters": {
                    "id": 9810,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9806,
                        "mutability": "mutable",
                        "name": "owners",
                        "nodeType": "VariableDeclaration",
                        "scope": 9823,
                        "src": "1437:25:39",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9804,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1437:7:39",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9805,
                          "nodeType": "ArrayTypeName",
                          "src": "1437:9:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9809,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 9823,
                        "src": "1464:25:39",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9807,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1464:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9808,
                          "nodeType": "ArrayTypeName",
                          "src": "1464:9:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1436:54:39"
                  },
                  "returnParameters": {
                    "id": 9814,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9813,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9823,
                        "src": "1526:4:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9812,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1526:4:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1525:6:39"
                  },
                  "scope": 9824,
                  "src": "1414:186:39",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                }
              ],
              "scope": 9825,
              "src": "327:1275:39"
            }
          ],
          "src": "33:1570:39"
        },
        "id": 39
      },
      "contracts/token/ERC20/ERC20Receiver.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/ERC20Receiver.sol",
          "exportedSymbols": {
            "ERC20Receiver": [
              9869
            ],
            "IERC165": [
              218
            ],
            "IERC20Receiver": [
              10143
            ]
          },
          "id": 9870,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9826,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:40"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 9828,
              "nodeType": "ImportDirective",
              "scope": 9870,
              "sourceUnit": 219,
              "src": "66:93:40",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9827,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:7:40",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20Receiver.sol",
              "file": "./interfaces/IERC20Receiver.sol",
              "id": 9830,
              "nodeType": "ImportDirective",
              "scope": 9870,
              "sourceUnit": 10144,
              "src": "160:63:40",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9829,
                    "name": "IERC20Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "168:14:40",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 9832,
                    "name": "IERC20Receiver",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10143,
                    "src": "433:14:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Receiver_$10143",
                      "typeString": "contract IERC20Receiver"
                    }
                  },
                  "id": 9833,
                  "nodeType": "InheritanceSpecifier",
                  "src": "433:14:40"
                },
                {
                  "baseName": {
                    "id": 9834,
                    "name": "IERC165",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 218,
                    "src": "449:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC165_$218",
                      "typeString": "contract IERC165"
                    }
                  },
                  "id": 9835,
                  "nodeType": "InheritanceSpecifier",
                  "src": "449:7:40"
                }
              ],
              "contractDependencies": [
                218,
                10143
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 9831,
                "nodeType": "StructuredDocumentation",
                "src": "225:172:40",
                "text": " @title ERC20 Safe Transfers Receiver Contract.\n @dev The function `onERC20Received(address,address,uint256,bytes)` needs to be implemented by a child contract."
              },
              "fullyImplemented": false,
              "id": 9869,
              "linearizedBaseContracts": [
                9869,
                218,
                10143
              ],
              "name": "ERC20Receiver",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 9841,
                  "mutability": "constant",
                  "name": "_ERC20_RECEIVED",
                  "nodeType": "VariableDeclaration",
                  "scope": 9869,
                  "src": "463:75:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 9836,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "463:6:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "expression": {
                      "arguments": [
                        {
                          "id": 9838,
                          "name": "IERC20Receiver",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10143,
                          "src": "511:14:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC20Receiver_$10143_$",
                            "typeString": "type(contract IERC20Receiver)"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_type$_t_contract$_IERC20Receiver_$10143_$",
                            "typeString": "type(contract IERC20Receiver)"
                          }
                        ],
                        "id": 9837,
                        "name": "type",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -27,
                        "src": "506:4:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 9839,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "506:20:40",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_meta_type_t_contract$_IERC20Receiver_$10143",
                        "typeString": "type(contract IERC20Receiver)"
                      }
                    },
                    "id": 9840,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "interfaceId",
                    "nodeType": "MemberAccess",
                    "src": "506:32:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 9844,
                  "mutability": "constant",
                  "name": "_ERC20_REJECTED",
                  "nodeType": "VariableDeclaration",
                  "scope": 9869,
                  "src": "544:53:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 9842,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "544:6:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786666666666666666",
                    "id": 9843,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "587:10:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4294967295_by_1",
                      "typeString": "int_const 4294967295"
                    },
                    "value": "0xffffffff"
                  },
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    217
                  ],
                  "body": {
                    "id": 9867,
                    "nodeType": "Block",
                    "src": "852:115:40",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 9865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 9858,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 9853,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9847,
                              "src": "869:11:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 9855,
                                    "name": "IERC165",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 218,
                                    "src": "889:7:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  ],
                                  "id": 9854,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "884:4:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 9856,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "884:13:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$218",
                                  "typeString": "type(contract IERC165)"
                                }
                              },
                              "id": 9857,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "884:25:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "869:40:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 9864,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 9859,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9847,
                              "src": "913:11:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 9861,
                                    "name": "IERC20Receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10143,
                                    "src": "933:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20Receiver_$10143_$",
                                      "typeString": "type(contract IERC20Receiver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20Receiver_$10143_$",
                                      "typeString": "type(contract IERC20Receiver)"
                                    }
                                  ],
                                  "id": 9860,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "928:4:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 9862,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "928:20:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC20Receiver_$10143",
                                  "typeString": "type(contract IERC20Receiver)"
                                }
                              },
                              "id": 9863,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "928:32:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "913:47:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "869:91:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 9852,
                        "id": 9866,
                        "nodeType": "Return",
                        "src": "862:98:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9845,
                    "nodeType": "StructuredDocumentation",
                    "src": "733:23:40",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 9868,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9849,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "828:8:40"
                  },
                  "parameters": {
                    "id": 9848,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9847,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 9868,
                        "src": "788:18:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 9846,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "788:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "787:20:40"
                  },
                  "returnParameters": {
                    "id": 9852,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9851,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9868,
                        "src": "846:4:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9850,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "846:4:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "845:6:40"
                  },
                  "scope": 9869,
                  "src": "761:206:40",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 9870,
              "src": "398:571:40"
            }
          ],
          "src": "33:937:40"
        },
        "id": 40
      },
      "contracts/token/ERC20/interfaces/IERC20.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/interfaces/IERC20.sol",
          "exportedSymbols": {
            "IERC20": [
              9947
            ]
          },
          "id": 9948,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9871,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:41"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 9872,
                "nodeType": "StructuredDocumentation",
                "src": "66:177:41",
                "text": " @title ERC20 Token Standard, basic interface.\n @dev See https://eips.ethereum.org/EIPS/eip-20\n @dev Note: The ERC-165 identifier for this interface is 0x36372b07."
              },
              "fullyImplemented": false,
              "id": 9947,
              "linearizedBaseContracts": [
                9947
              ],
              "name": "IERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 9873,
                    "nodeType": "StructuredDocumentation",
                    "src": "267:311:41",
                    "text": " @dev Emitted when tokens are transferred, including zero value transfers.\n @param _from The account where the transferred tokens are withdrawn from.\n @param _to The account where the transferred tokens are deposited to.\n @param _value The amount of tokens being transferred."
                  },
                  "id": 9881,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 9880,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9875,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 9881,
                        "src": "598:21:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9874,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "598:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9877,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 9881,
                        "src": "621:19:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9876,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "621:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9879,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 9881,
                        "src": "642:14:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9878,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "642:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "597:60:41"
                  },
                  "src": "583:75:41"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 9882,
                    "nodeType": "StructuredDocumentation",
                    "src": "664:304:41",
                    "text": " @dev Emitted when a successful call to {IERC20-approve(address,uint256)} is made.\n @param _owner The account granting an allowance to `_spender`.\n @param _spender The account being granted an allowance from `_owner`.\n @param _value The allowance amount being granted."
                  },
                  "id": 9890,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 9889,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9884,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 9890,
                        "src": "988:22:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9883,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "988:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9886,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 9890,
                        "src": "1012:24:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9885,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1012:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9888,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 9890,
                        "src": "1038:14:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9887,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1038:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "987:66:41"
                  },
                  "src": "973:81:41"
                },
                {
                  "documentation": {
                    "id": 9891,
                    "nodeType": "StructuredDocumentation",
                    "src": "1060:97:41",
                    "text": " @notice Returns the total token supply.\n @return The total token supply."
                  },
                  "functionSelector": "18160ddd",
                  "id": 9896,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9892,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1182:2:41"
                  },
                  "returnParameters": {
                    "id": 9895,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9894,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9896,
                        "src": "1208:7:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9893,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1208:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1207:9:41"
                  },
                  "scope": 9947,
                  "src": "1162:55:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 9897,
                    "nodeType": "StructuredDocumentation",
                    "src": "1223:235:41",
                    "text": " @notice Returns the account balance of another account with address `owner`.\n @param owner The account whose balance will be returned.\n @return The account balance of another account with address `owner`."
                  },
                  "functionSelector": "70a08231",
                  "id": 9904,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9900,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9899,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 9904,
                        "src": "1482:13:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9898,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1482:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1481:15:41"
                  },
                  "returnParameters": {
                    "id": 9903,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9902,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9904,
                        "src": "1520:7:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9901,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1520:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1519:9:41"
                  },
                  "scope": 9947,
                  "src": "1463:66:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 9905,
                    "nodeType": "StructuredDocumentation",
                    "src": "1535:489:41",
                    "text": " Transfers `value` amount of tokens to address `to`.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender does not have enough balance.\n @dev Emits an {IERC20-Transfer} event.\n @dev Transfers of 0 values are treated as normal transfers and fire the {IERC20-Transfer} event.\n @param to The receiver account.\n @param value The amount of tokens to transfer.\n @return True if the transfer succeeds, false otherwise."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 9914,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9910,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9907,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 9914,
                        "src": "2047:10:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9906,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2047:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9909,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 9914,
                        "src": "2059:13:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9908,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2059:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2046:27:41"
                  },
                  "returnParameters": {
                    "id": 9913,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9912,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9914,
                        "src": "2092:4:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9911,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2092:4:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2091:6:41"
                  },
                  "scope": 9947,
                  "src": "2029:69:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 9915,
                    "nodeType": "StructuredDocumentation",
                    "src": "2104:672:41",
                    "text": " @notice Transfers `value` amount of tokens from address `from` to address `to`.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if `from` does not have at least `value` of balance.\n @dev Reverts if the sender is not `from` and has not been approved by `from` for at least `value`.\n @dev Emits an {IERC20-Transfer} event.\n @dev Transfers of 0 values are treated as normal transfers and fire the {IERC20-Transfer} event.\n @param from The emitter account.\n @param to The receiver account.\n @param value The amount of tokens to transfer.\n @return True if the transfer succeeds, false otherwise."
                  },
                  "functionSelector": "23b872dd",
                  "id": 9926,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9922,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9917,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 9926,
                        "src": "2812:12:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9916,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2812:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9919,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 9926,
                        "src": "2834:10:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9918,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2834:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9921,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 9926,
                        "src": "2854:13:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9920,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2854:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2802:71:41"
                  },
                  "returnParameters": {
                    "id": 9925,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9924,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9926,
                        "src": "2892:4:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9923,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2892:4:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2891:6:41"
                  },
                  "scope": 9947,
                  "src": "2781:117:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 9927,
                    "nodeType": "StructuredDocumentation",
                    "src": "2904:795:41",
                    "text": " Sets `value` as the allowance from the caller to `spender`.\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: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n @dev Reverts if `spender` is the zero address.\n @dev Emits the {IERC20-Approval} event.\n @param spender The account being granted the allowance by the message caller.\n @param value The allowance amount to grant.\n @return True if the approval succeeds, false otherwise."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 9936,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9932,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9929,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 9936,
                        "src": "3721:15:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9928,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3721:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9931,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 9936,
                        "src": "3738:13:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9930,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3738:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3720:32:41"
                  },
                  "returnParameters": {
                    "id": 9935,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9934,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9936,
                        "src": "3771:4:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9933,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3771:4:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3770:6:41"
                  },
                  "scope": 9947,
                  "src": "3704:73:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 9937,
                    "nodeType": "StructuredDocumentation",
                    "src": "3783:331:41",
                    "text": " Returns the amount which `spender` is allowed to spend on behalf of `owner`.\n @param owner The account that has granted an allowance to `spender`.\n @param spender The account that was granted an allowance by `owner`.\n @return The amount which `spender` is allowed to spend on behalf of `owner`."
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 9946,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9942,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9939,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 9946,
                        "src": "4138:13:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9938,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4138:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9941,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 9946,
                        "src": "4153:15:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9940,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4153:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4137:32:41"
                  },
                  "returnParameters": {
                    "id": 9945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9944,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9946,
                        "src": "4193:7:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9943,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4193:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4192:9:41"
                  },
                  "scope": 9947,
                  "src": "4119:83:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 9948,
              "src": "244:3960:41"
            }
          ],
          "src": "33:4172:41"
        },
        "id": 41
      },
      "contracts/token/ERC20/interfaces/IERC20Allowance.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/interfaces/IERC20Allowance.sol",
          "exportedSymbols": {
            "IERC20Allowance": [
              9971
            ]
          },
          "id": 9972,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9949,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:42"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 9950,
                "nodeType": "StructuredDocumentation",
                "src": "66:191:42",
                "text": " @title ERC20 Token Standard, optional extension: Allowance.\n @dev See https://eips.ethereum.org/EIPS/eip-20\n @dev Note: the ERC-165 identifier for this interface is 0x9d075186."
              },
              "fullyImplemented": false,
              "id": 9971,
              "linearizedBaseContracts": [
                9971
              ],
              "name": "IERC20Allowance",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 9951,
                    "nodeType": "StructuredDocumentation",
                    "src": "290:630:42",
                    "text": " Increases the allowance granted by the sender to `spender` by `value`.\n  This is an alternative to {approve} that can be used as a mitigation for\n  problems described in {IERC20-approve}.\n @dev Reverts if `spender` is the zero address.\n @dev Reverts if `spender`'s allowance overflows.\n @dev Emits an {IERC20-Approval} event with an updated allowance for `spender`.\n @param spender The account whose allowance is being increased by the message caller.\n @param value The allowance amount increase.\n @return True if the allowance increase succeeds, false otherwise."
                  },
                  "functionSelector": "39509351",
                  "id": 9960,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "increaseAllowance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9956,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9953,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 9960,
                        "src": "952:15:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9952,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "952:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9955,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 9960,
                        "src": "969:13:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9954,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "969:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "951:32:42"
                  },
                  "returnParameters": {
                    "id": 9959,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9958,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9960,
                        "src": "1002:4:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9957,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1002:4:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1001:6:42"
                  },
                  "scope": 9971,
                  "src": "925:83:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 9961,
                    "nodeType": "StructuredDocumentation",
                    "src": "1014:671:42",
                    "text": " Decreases the allowance granted by the sender to `spender` by `value`.\n  This is an alternative to {approve} that can be used as a mitigation for\n  problems described in {IERC20-approve}.\n @dev Reverts if `spender` is the zero address.\n @dev Reverts if `spender` has an allowance with the message caller for less than `value`.\n @dev Emits an {IERC20-Approval} event with an updated allowance for `spender`.\n @param spender The account whose allowance is being decreased by the message caller.\n @param value The allowance amount decrease.\n @return True if the allowance decrease succeeds, false otherwise."
                  },
                  "functionSelector": "a457c2d7",
                  "id": 9970,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decreaseAllowance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9966,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9963,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 9970,
                        "src": "1717:15:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9962,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1717:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9965,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 9970,
                        "src": "1734:13:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9964,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1734:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1716:32:42"
                  },
                  "returnParameters": {
                    "id": 9969,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9968,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9970,
                        "src": "1767:4:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9967,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1767:4:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1766:6:42"
                  },
                  "scope": 9971,
                  "src": "1690:83:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 9972,
              "src": "258:1517:42"
            }
          ],
          "src": "33:1743:42"
        },
        "id": 42
      },
      "contracts/token/ERC20/interfaces/IERC20BatchTransfers.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/interfaces/IERC20BatchTransfers.sol",
          "exportedSymbols": {
            "IERC20BatchTransfers": [
              10001
            ]
          },
          "id": 10002,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9973,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:43"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 9974,
                "nodeType": "StructuredDocumentation",
                "src": "66:197:43",
                "text": " @title ERC20 Token Standard, optional extension: Batch Transfers.\n @dev See https://eips.ethereum.org/EIPS/eip-20\n @dev Note: the ERC-165 identifier for this interface is 0xc05327e6."
              },
              "fullyImplemented": false,
              "id": 10001,
              "linearizedBaseContracts": [
                10001
              ],
              "name": "IERC20BatchTransfers",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 9975,
                    "nodeType": "StructuredDocumentation",
                    "src": "301:608:43",
                    "text": " Moves multiple `amounts` tokens from the caller's account to each of `recipients`.\n @dev Reverts if `recipients` and `amounts` have different lengths.\n @dev Reverts if one of `recipients` is the zero address.\n @dev Reverts if the caller has an insufficient balance.\n @dev Emits an {IERC20-Transfer} event for each individual transfer.\n @param recipients the list of recipients to transfer the tokens to.\n @param amounts the amounts of tokens to transfer to each of `recipients`.\n @return a boolean value indicating whether the operation succeeded."
                  },
                  "functionSelector": "88d695b2",
                  "id": 9986,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchTransfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9982,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9978,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 9986,
                        "src": "937:29:43",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9976,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "937:7:43",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9977,
                          "nodeType": "ArrayTypeName",
                          "src": "937:9:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9981,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 9986,
                        "src": "968:26:43",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9979,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "968:7:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9980,
                          "nodeType": "ArrayTypeName",
                          "src": "968:9:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "936:59:43"
                  },
                  "returnParameters": {
                    "id": 9985,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9984,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9986,
                        "src": "1014:4:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9983,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1014:4:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1013:6:43"
                  },
                  "scope": 10001,
                  "src": "914:106:43",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 9987,
                    "nodeType": "StructuredDocumentation",
                    "src": "1026:795:43",
                    "text": " Moves multiple `amounts` tokens from an account to each of `recipients`.\n @dev Reverts if `recipients` and `amounts` have different lengths.\n @dev Reverts if one of `recipients` is the zero address.\n @dev Reverts if `from` has an insufficient balance.\n @dev Reverts if the sender is not `from` and has an insufficient allowance.\n @dev Emits an {IERC20-Transfer} event for each individual transfer.\n @dev Emits an {IERC20-Approval} event.\n @param from The address which owns the tokens to be transferred.\n @param recipients the list of recipients to transfer the tokens to.\n @param amounts the amounts of tokens to transfer to each of `recipients`.\n @return a boolean value indicating whether the operation succeeded."
                  },
                  "functionSelector": "4885b254",
                  "id": 10000,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9996,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9989,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 10000,
                        "src": "1862:12:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9988,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1862:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9992,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 10000,
                        "src": "1884:29:43",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9990,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1884:7:43",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9991,
                          "nodeType": "ArrayTypeName",
                          "src": "1884:9:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9995,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 10000,
                        "src": "1923:26:43",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9993,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1923:7:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9994,
                          "nodeType": "ArrayTypeName",
                          "src": "1923:9:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1852:103:43"
                  },
                  "returnParameters": {
                    "id": 9999,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9998,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10000,
                        "src": "1974:4:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9997,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1974:4:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1973:6:43"
                  },
                  "scope": 10001,
                  "src": "1826:154:43",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 10002,
              "src": "264:1718:43"
            }
          ],
          "src": "33:1950:43"
        },
        "id": 43
      },
      "contracts/token/ERC20/interfaces/IERC20Burnable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/interfaces/IERC20Burnable.sol",
          "exportedSymbols": {
            "IERC20Burnable": [
              10035
            ]
          },
          "id": 10036,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10003,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:44"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 10004,
                "nodeType": "StructuredDocumentation",
                "src": "66:190:44",
                "text": " @title ERC20 Token Standard, optional extension: Burnable.\n @dev See https://eips.ethereum.org/EIPS/eip-20\n @dev Note: the ERC-165 identifier for this interface is 0x3b5a0bf8."
              },
              "fullyImplemented": false,
              "id": 10035,
              "linearizedBaseContracts": [
                10035
              ],
              "name": "IERC20Burnable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 10005,
                    "nodeType": "StructuredDocumentation",
                    "src": "288:363:44",
                    "text": " Burns `value` tokens from the message sender, decreasing the total supply.\n @dev Reverts if the sender owns less than `value` tokens.\n @dev Emits a {IERC20-Transfer} event with `_to` set to the zero address.\n @param value the amount of tokens to burn.\n @return a boolean value indicating whether the operation succeeded."
                  },
                  "functionSelector": "42966c68",
                  "id": 10012,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10008,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10007,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 10012,
                        "src": "670:13:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10006,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "670:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "669:15:44"
                  },
                  "returnParameters": {
                    "id": 10011,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10010,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10012,
                        "src": "703:4:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10009,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "703:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "702:6:44"
                  },
                  "scope": 10035,
                  "src": "656:53:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 10013,
                    "nodeType": "StructuredDocumentation",
                    "src": "715:643:44",
                    "text": " Burns `value` tokens from `from`, using the allowance mechanism and decreasing the total supply.\n @dev Reverts if `from` owns less than `value` tokens.\n @dev Reverts if `from` is not the sender and the sender is not approved by `from` for at least `value` tokens.\n @dev Emits a {IERC20-Transfer} event with `_to` set to the zero address.\n @dev Emits a {IERC20-Approval} event if `from` is not the sender (non-standard).\n @param from the account to burn the tokens from.\n @param value the amount of tokens to burn.\n @return a boolean value indicating whether the operation succeeded."
                  },
                  "functionSelector": "79cc6790",
                  "id": 10022,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10018,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10015,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 10022,
                        "src": "1381:12:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10014,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1381:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10017,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 10022,
                        "src": "1395:13:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10016,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1395:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1380:29:44"
                  },
                  "returnParameters": {
                    "id": 10021,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10020,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10022,
                        "src": "1428:4:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10019,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1428:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1427:6:44"
                  },
                  "scope": 10035,
                  "src": "1363:71:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 10023,
                    "nodeType": "StructuredDocumentation",
                    "src": "1440:698:44",
                    "text": " Burns `values` tokens from `owners`, decreasing the total supply.\n @dev Reverts if one `owners` and `values` have different lengths.\n @dev Reverts if one of `owners` owns less than the corresponding `value` tokens.\n @dev Reverts if one of `owners` is not the sender and the sender is not approved the corresponding `owner` and `value`.\n @dev Emits a {IERC20-Transfer} event with `_to` set to the zero address.\n @dev Emits a {IERC20-Approval} event (non-standard).\n @param owners the accounts to burn the tokens from.\n @param values the amounts of tokens to burn.\n @return a boolean value indicating whether the operation succeeded."
                  },
                  "functionSelector": "1b9a7529",
                  "id": 10034,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10030,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10026,
                        "mutability": "mutable",
                        "name": "owners",
                        "nodeType": "VariableDeclaration",
                        "scope": 10034,
                        "src": "2166:25:44",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10024,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2166:7:44",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 10025,
                          "nodeType": "ArrayTypeName",
                          "src": "2166:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10029,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 10034,
                        "src": "2193:25:44",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10027,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2193:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10028,
                          "nodeType": "ArrayTypeName",
                          "src": "2193:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2165:54:44"
                  },
                  "returnParameters": {
                    "id": 10033,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10032,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10034,
                        "src": "2238:4:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10031,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2238:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2237:6:44"
                  },
                  "scope": 10035,
                  "src": "2143:101:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 10036,
              "src": "257:1989:44"
            }
          ],
          "src": "33:2214:44"
        },
        "id": 44
      },
      "contracts/token/ERC20/interfaces/IERC20Detailed.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/interfaces/IERC20Detailed.sol",
          "exportedSymbols": {
            "IERC20Detailed": [
              10057
            ]
          },
          "id": 10058,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10037,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:45"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 10038,
                "nodeType": "StructuredDocumentation",
                "src": "66:190:45",
                "text": " @title ERC20 Token Standard, optional extension: Detailed.\n @dev See https://eips.ethereum.org/EIPS/eip-20\n @dev Note: the ERC-165 identifier for this interface is 0xa219a025."
              },
              "fullyImplemented": false,
              "id": 10057,
              "linearizedBaseContracts": [
                10057
              ],
              "name": "IERC20Detailed",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 10039,
                    "nodeType": "StructuredDocumentation",
                    "src": "288:104:45",
                    "text": " Returns the name of the token. E.g. \"My Token\".\n @return The name of the token."
                  },
                  "functionSelector": "06fdde03",
                  "id": 10044,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10040,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "410:2:45"
                  },
                  "returnParameters": {
                    "id": 10043,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10042,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10044,
                        "src": "436:13:45",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10041,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "436:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "435:15:45"
                  },
                  "scope": 10057,
                  "src": "397:54:45",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 10045,
                    "nodeType": "StructuredDocumentation",
                    "src": "457:103:45",
                    "text": " Returns the symbol of the token. E.g. \"HIX\".\n @return The symbol of the token."
                  },
                  "functionSelector": "95d89b41",
                  "id": 10050,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10046,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "580:2:45"
                  },
                  "returnParameters": {
                    "id": 10049,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10048,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10050,
                        "src": "606:13:45",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10047,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "606:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "605:15:45"
                  },
                  "scope": 10057,
                  "src": "565:56:45",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 10051,
                    "nodeType": "StructuredDocumentation",
                    "src": "627:518:45",
                    "text": " Returns the number of decimals used to display the balances.\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 Ether and Wei.\n @dev Note: This information is only used for _display_ purposes: it does  not impact the arithmetic of the contract.\n @return The number of decimals used to display the balances."
                  },
                  "functionSelector": "313ce567",
                  "id": 10056,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10052,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1167:2:45"
                  },
                  "returnParameters": {
                    "id": 10055,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10054,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10056,
                        "src": "1193:5:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 10053,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1193:5:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1192:7:45"
                  },
                  "scope": 10057,
                  "src": "1150:50:45",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 10058,
              "src": "257:945:45"
            }
          ],
          "src": "33:1170:45"
        },
        "id": 45
      },
      "contracts/token/ERC20/interfaces/IERC20Metadata.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/interfaces/IERC20Metadata.sol",
          "exportedSymbols": {
            "IERC20Metadata": [
              10067
            ]
          },
          "id": 10068,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10059,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:46"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 10060,
                "nodeType": "StructuredDocumentation",
                "src": "66:200:46",
                "text": " @title ERC20 Token Standard, ERC1046 optional extension: Metadata.\n @dev See https://eips.ethereum.org/EIPS/eip-1046\n @dev Note: the ERC-165 identifier for this interface is 0x3c130d90."
              },
              "fullyImplemented": false,
              "id": 10067,
              "linearizedBaseContracts": [
                10067
              ],
              "name": "IERC20Metadata",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 10061,
                    "nodeType": "StructuredDocumentation",
                    "src": "298:179:46",
                    "text": " Returns a distinct Uniform Resource Identifier (URI) for the token metadata.\n @return a distinct Uniform Resource Identifier (URI) for the token metadata."
                  },
                  "functionSelector": "3c130d90",
                  "id": 10066,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10062,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "499:2:46"
                  },
                  "returnParameters": {
                    "id": 10065,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10064,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10066,
                        "src": "525:13:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10063,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "525:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "524:15:46"
                  },
                  "scope": 10067,
                  "src": "482:58:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 10068,
              "src": "267:275:46"
            }
          ],
          "src": "33:510:46"
        },
        "id": 46
      },
      "contracts/token/ERC20/interfaces/IERC20Mintable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/interfaces/IERC20Mintable.sol",
          "exportedSymbols": {
            "IERC20Mintable": [
              10089
            ]
          },
          "id": 10090,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10069,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:47"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 10070,
                "nodeType": "StructuredDocumentation",
                "src": "66:119:47",
                "text": " @title ERC20 Token Standard, optional extension: Mintable.\n @dev See https://eips.ethereum.org/EIPS/eip-20"
              },
              "fullyImplemented": false,
              "id": 10089,
              "linearizedBaseContracts": [
                10089
              ],
              "name": "IERC20Mintable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 10071,
                    "nodeType": "StructuredDocumentation",
                    "src": "217:380:47",
                    "text": " Mints `value` tokens and assigns them to `to`, increasing the total supply.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the total supply overflows.\n @dev Emits a {IERC20-Transfer} event with `from` set to the zero address.\n @param to the account to deliver the tokens to.\n @param value the amount of tokens to mint."
                  },
                  "functionSelector": "40c10f19",
                  "id": 10078,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10076,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10073,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 10078,
                        "src": "616:10:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10072,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "616:7:47",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10075,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 10078,
                        "src": "628:13:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10074,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "628:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "615:27:47"
                  },
                  "returnParameters": {
                    "id": 10077,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "651:0:47"
                  },
                  "scope": 10089,
                  "src": "602:50:47",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 10079,
                    "nodeType": "StructuredDocumentation",
                    "src": "658:532:47",
                    "text": " Mints `values` tokens and assigns them to `recipients`, increasing the total supply.\n @dev Reverts if `recipients` and `values` have different lengths.\n @dev Reverts if one of `recipients` is the zero address.\n @dev Reverts if the total supply overflows.\n @dev Emits an {IERC20-Transfer} event for each transfer with `_from` set to the zero address.\n @param recipients the accounts to deliver the tokens to.\n @param values the amounts of tokens to mint to each of `recipients`."
                  },
                  "functionSelector": "68573107",
                  "id": 10088,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10086,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10082,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 10088,
                        "src": "1214:29:47",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10080,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1214:7:47",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 10081,
                          "nodeType": "ArrayTypeName",
                          "src": "1214:9:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10085,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 10088,
                        "src": "1245:25:47",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10083,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1245:7:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10084,
                          "nodeType": "ArrayTypeName",
                          "src": "1245:9:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1213:58:47"
                  },
                  "returnParameters": {
                    "id": 10087,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1280:0:47"
                  },
                  "scope": 10089,
                  "src": "1195:86:47",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 10090,
              "src": "186:1097:47"
            }
          ],
          "src": "33:1251:47"
        },
        "id": 47
      },
      "contracts/token/ERC20/interfaces/IERC20Permit.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/interfaces/IERC20Permit.sol",
          "exportedSymbols": {
            "IERC20Permit": [
              10125
            ]
          },
          "id": 10126,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10091,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:48"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 10092,
                "nodeType": "StructuredDocumentation",
                "src": "66:309:48",
                "text": " @title ERC20 Token Standard, ERC2612 optional extension: permit – 712-signed approvals\n Interface for allowing ERC20 approvals to be made via ECDSA `secp256k1` signatures.\n @dev See https://eips.ethereum.org/EIPS/eip-2612\n @dev Note: the ERC-165 identifier for this interface is 0x9d8ff7da."
              },
              "fullyImplemented": false,
              "id": 10125,
              "linearizedBaseContracts": [
                10125
              ],
              "name": "IERC20Permit",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 10093,
                    "nodeType": "StructuredDocumentation",
                    "src": "405:950:48",
                    "text": " Sets `value` as the allowance of `spender` over the tokens of `owner`, given `owner` account's signed permit.\n @dev WARNING: The standard ERC-20 race condition for approvals applies to `permit()` as well: https://swcregistry.io/docs/SWC-114\n @dev Reverts if `owner` is the zero address.\n @dev Reverts if the current blocktime is > `deadline`.\n @dev Reverts if `r`, `s`, and `v` is not a valid `secp256k1` signature from `owner`.\n @dev Emits an {IERC20-Approval} event.\n @param owner The token owner granting the allowance to `spender`.\n @param spender The token spender being granted the allowance by `owner`.\n @param value The token amount of the allowance.\n @param deadline The deadline from which the permit signature is no longer valid.\n @param v Permit signature v parameter\n @param r Permit signature r parameter.\n @param s Permis signature s parameter."
                  },
                  "functionSelector": "d505accf",
                  "id": 10110,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10108,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10095,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 10110,
                        "src": "1385:13:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10094,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1385:7:48",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10097,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 10110,
                        "src": "1408:15:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10096,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1408:7:48",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10099,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 10110,
                        "src": "1433:13:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10098,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1433:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10101,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "scope": 10110,
                        "src": "1456:16:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10100,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1456:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10103,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "scope": 10110,
                        "src": "1482:7:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 10102,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1482:5:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10105,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "scope": 10110,
                        "src": "1499:9:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 10104,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1499:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10107,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "scope": 10110,
                        "src": "1518:9:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 10106,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1518:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1375:158:48"
                  },
                  "returnParameters": {
                    "id": 10109,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1542:0:48"
                  },
                  "scope": 10125,
                  "src": "1360:183:48",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 10111,
                    "nodeType": "StructuredDocumentation",
                    "src": "1549:170:48",
                    "text": " Returns the current permit nonce of `owner`.\n @param owner the address to check the nonce of.\n @return the current permit nonce of `owner`."
                  },
                  "functionSelector": "7ecebe00",
                  "id": 10118,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "nonces",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10114,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10113,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 10118,
                        "src": "1740:13:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10112,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1740:7:48",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1739:15:48"
                  },
                  "returnParameters": {
                    "id": 10117,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10116,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10118,
                        "src": "1778:7:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10115,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1778:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1777:9:48"
                  },
                  "scope": 10125,
                  "src": "1724:63:48",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 10119,
                    "nodeType": "StructuredDocumentation",
                    "src": "1793:932:48",
                    "text": " Returns the EIP-712 encoded hash struct of the domain-specific information for permits.\n @dev A common ERC-20 permit implementation choice for the `DOMAIN_SEPARATOR` is:\n  keccak256(\n      abi.encode(\n          keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"),\n          keccak256(bytes(name)),\n          keccak256(bytes(version)),\n          chainId,\n          address(this)))\n  where\n   - `name` (string) is the ERC-20 token name.\n   - `version` (string) refers to the ERC-20 token contract version.\n   - `chainId` (uint256) is the chain ID to which the ERC-20 token contract is deployed to.\n   - `verifyingContract` (address) is the ERC-20 token contract address.\n @return the EIP-712 encoded hash struct of the domain-specific information for permits."
                  },
                  "functionSelector": "3644e515",
                  "id": 10124,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "DOMAIN_SEPARATOR",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10120,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2808:2:48"
                  },
                  "returnParameters": {
                    "id": 10123,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10122,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10124,
                        "src": "2834:7:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 10121,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2834:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2833:9:48"
                  },
                  "scope": 10125,
                  "src": "2783:60:48",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 10126,
              "src": "376:2469:48"
            }
          ],
          "src": "33:2813:48"
        },
        "id": 48
      },
      "contracts/token/ERC20/interfaces/IERC20Receiver.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/interfaces/IERC20Receiver.sol",
          "exportedSymbols": {
            "IERC20Receiver": [
              10143
            ]
          },
          "id": 10144,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10127,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:49"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 10128,
                "nodeType": "StructuredDocumentation",
                "src": "66:295:49",
                "text": " @title ERC20 Token Standard, Tokens Receiver.\n Interface for any contract that wants to support safeTransfers from ERC20 contracts with Safe Transfers extension.\n @dev See https://eips.ethereum.org/EIPS/eip-20\n @dev Note: the ERC-165 identifier for this interface is 0x4fc35859."
              },
              "fullyImplemented": false,
              "id": 10143,
              "linearizedBaseContracts": [
                10143
              ],
              "name": "IERC20Receiver",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 10129,
                    "nodeType": "StructuredDocumentation",
                    "src": "393:384:49",
                    "text": " Handles the receipt of ERC20 tokens.\n @param sender The initiator of the transfer.\n @param from The address which transferred the tokens.\n @param value The amount of tokens transferred.\n @param data Optional additional data with no specified format.\n @return bytes4 `bytes4(keccak256(\"onERC20Received(address,address,uint256,bytes)\"))`"
                  },
                  "functionSelector": "4fc35859",
                  "id": 10142,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC20Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10138,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10131,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 10142,
                        "src": "816:14:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10130,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "816:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10133,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 10142,
                        "src": "840:12:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10132,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "840:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10135,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 10142,
                        "src": "862:13:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10134,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "862:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10137,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 10142,
                        "src": "885:19:49",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10136,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "885:5:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "806:104:49"
                  },
                  "returnParameters": {
                    "id": 10141,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10140,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10142,
                        "src": "929:6:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 10139,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "929:6:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "928:8:49"
                  },
                  "scope": 10143,
                  "src": "782:155:49",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 10144,
              "src": "362:577:49"
            }
          ],
          "src": "33:907:49"
        },
        "id": 49
      },
      "contracts/token/ERC20/interfaces/IERC20SafeTransfers.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/interfaces/IERC20SafeTransfers.sol",
          "exportedSymbols": {
            "IERC20SafeTransfers": [
              10173
            ]
          },
          "id": 10174,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10145,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:50"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 10146,
                "nodeType": "StructuredDocumentation",
                "src": "66:196:50",
                "text": " @title ERC20 Token Standard, optional extension: Safe Transfers.\n @dev See https://eips.ethereum.org/EIPS/eip-20\n @dev Note: the ERC-165 identifier for this interface is 0x53f41a97."
              },
              "fullyImplemented": false,
              "id": 10173,
              "linearizedBaseContracts": [
                10173
              ],
              "name": "IERC20SafeTransfers",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 10147,
                    "nodeType": "StructuredDocumentation",
                    "src": "299:826:50",
                    "text": " Transfers tokens from the caller to `to`. If this address is a contract, then calls `onERC20Received(address,address,uint256,bytes)` on it.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if `value` is greater than the sender's balance.\n @dev Reverts if `to` is a contract which does not implement `onERC20Received(address,address,uint256,bytes)`.\n @dev Reverts if `to` is a contract and the call to `onERC20Received(address,address,uint256,bytes)` returns a wrong value.\n @dev Emits an {IERC20-Transfer} event.\n @param to The address for the tokens to be transferred to.\n @param amount The amount of tokens to be transferred.\n @param data Optional additional data with no specified format, to be passed to the receiver contract.\n @return true."
                  },
                  "functionSelector": "eb795549",
                  "id": 10158,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10154,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10149,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 10158,
                        "src": "1161:10:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10148,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1161:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10151,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 10158,
                        "src": "1181:14:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10150,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1181:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10153,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 10158,
                        "src": "1205:19:50",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10152,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1205:5:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1151:79:50"
                  },
                  "returnParameters": {
                    "id": 10157,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10156,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10158,
                        "src": "1249:4:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10155,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1249:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1248:6:50"
                  },
                  "scope": 10173,
                  "src": "1130:125:50",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 10159,
                    "nodeType": "StructuredDocumentation",
                    "src": "1261:1026:50",
                    "text": " Transfers tokens from `from` to another address, using the allowance mechanism.\n  If this address is a contract, then calls `onERC20Received(address,address,uint256,bytes)` on it.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if `value` is greater than `from`'s balance.\n @dev Reverts if the sender does not have at least `value` allowance by `from`.\n @dev Reverts if `to` is a contract which does not implement `onERC20Received(address,address,uint256,bytes)`.\n @dev Reverts if `to` is a contract and the call to `onERC20Received(address,address,uint256,bytes)` returns a wrong value.\n @dev Emits an {IERC20-Transfer} event.\n @param from The address which owns the tokens to be transferred.\n @param to The address for the tokens to be transferred to.\n @param amount The amount of tokens to be transferred.\n @param data Optional additional data with no specified format, to be passed to the receiver contract.\n @return true."
                  },
                  "functionSelector": "b88d4fde",
                  "id": 10172,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10168,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10161,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 10172,
                        "src": "2327:12:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10160,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2327:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10163,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 10172,
                        "src": "2349:10:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10162,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2349:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10165,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 10172,
                        "src": "2369:14:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10164,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2369:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10167,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 10172,
                        "src": "2393:19:50",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10166,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2393:5:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2317:101:50"
                  },
                  "returnParameters": {
                    "id": 10171,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10170,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10172,
                        "src": "2437:4:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10169,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2437:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2436:6:50"
                  },
                  "scope": 10173,
                  "src": "2292:151:50",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 10174,
              "src": "263:2182:50"
            }
          ],
          "src": "33:2413:50"
        },
        "id": 50
      },
      "contracts/token/ERC20/mocks/ERC20BurnableMock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/mocks/ERC20BurnableMock.sol",
          "exportedSymbols": {
            "ERC20Burnable": [
              9824
            ],
            "ERC20BurnableMock": [
              10326
            ],
            "IERC20Mintable": [
              10089
            ],
            "IForwarderRegistry": [
              15006
            ],
            "ManagedIdentity": [
              322
            ],
            "MinterRole": [
              125
            ],
            "Recoverable": [
              1253
            ],
            "UsingUniversalForwarding": [
              15172
            ]
          },
          "id": 10327,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10175,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:51"
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "id": 10177,
              "nodeType": "ImportDirective",
              "scope": 10327,
              "sourceUnit": 15007,
              "src": "66:108:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10176,
                    "name": "IForwarderRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:18:51",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20Mintable.sol",
              "file": "./../interfaces/IERC20Mintable.sol",
              "id": 10179,
              "nodeType": "ImportDirective",
              "scope": 10327,
              "sourceUnit": 10090,
              "src": "175:66:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10178,
                    "name": "IERC20Mintable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "183:14:51",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 10181,
              "nodeType": "ImportDirective",
              "scope": 10327,
              "sourceUnit": 323,
              "src": "242:102:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10180,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "250:15:51",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "id": 10183,
              "nodeType": "ImportDirective",
              "scope": 10327,
              "sourceUnit": 1265,
              "src": "345:93:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10182,
                    "name": "Recoverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "353:11:51",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "id": 10185,
              "nodeType": "ImportDirective",
              "scope": 10327,
              "sourceUnit": 15173,
              "src": "439:120:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10184,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "447:24:51",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "id": 10187,
              "nodeType": "ImportDirective",
              "scope": 10327,
              "sourceUnit": 126,
              "src": "560:92:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10186,
                    "name": "MinterRole",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "568:10:51",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/ERC20Burnable.sol",
              "file": "./../ERC20Burnable.sol",
              "id": 10189,
              "nodeType": "ImportDirective",
              "scope": 10327,
              "sourceUnit": 9825,
              "src": "653:53:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10188,
                    "name": "ERC20Burnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "661:13:51",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 10191,
                    "name": "Recoverable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1253,
                    "src": "777:11:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Recoverable_$1253",
                      "typeString": "contract Recoverable"
                    }
                  },
                  "id": 10192,
                  "nodeType": "InheritanceSpecifier",
                  "src": "777:11:51"
                },
                {
                  "baseName": {
                    "id": 10193,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15172,
                    "src": "790:24:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                      "typeString": "contract UsingUniversalForwarding"
                    }
                  },
                  "id": 10194,
                  "nodeType": "InheritanceSpecifier",
                  "src": "790:24:51"
                },
                {
                  "baseName": {
                    "id": 10195,
                    "name": "ERC20Burnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9824,
                    "src": "816:13:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Burnable_$9824",
                      "typeString": "contract ERC20Burnable"
                    }
                  },
                  "id": 10196,
                  "nodeType": "InheritanceSpecifier",
                  "src": "816:13:51"
                },
                {
                  "baseName": {
                    "id": 10197,
                    "name": "IERC20Mintable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10089,
                    "src": "831:14:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Mintable_$10089",
                      "typeString": "contract IERC20Mintable"
                    }
                  },
                  "id": 10198,
                  "nodeType": "InheritanceSpecifier",
                  "src": "831:14:51"
                },
                {
                  "baseName": {
                    "id": 10199,
                    "name": "MinterRole",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 125,
                    "src": "847:10:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MinterRole_$125",
                      "typeString": "contract MinterRole"
                    }
                  },
                  "id": 10200,
                  "nodeType": "InheritanceSpecifier",
                  "src": "847:10:51"
                }
              ],
              "contractDependencies": [
                22,
                125,
                206,
                218,
                322,
                1253,
                9715,
                9824,
                9947,
                9971,
                10001,
                10035,
                10057,
                10067,
                10089,
                10125,
                10173,
                14994,
                15031,
                15172
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 10190,
                "nodeType": "StructuredDocumentation",
                "src": "708:38:51",
                "text": " @title ERC20 Burnable Mock."
              },
              "fullyImplemented": true,
              "id": 10326,
              "linearizedBaseContracts": [
                10326,
                125,
                10089,
                9824,
                10035,
                9715,
                10125,
                10173,
                10001,
                9971,
                10067,
                10057,
                9947,
                218,
                15172,
                14994,
                15031,
                1253,
                206,
                22,
                322
              ],
              "name": "ERC20BurnableMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 10231,
                    "nodeType": "Block",
                    "src": "1160:47:51",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10227,
                              "name": "recipients",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10203,
                              "src": "1181:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "id": 10228,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10206,
                              "src": "1193:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 10226,
                            "name": "_batchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9487,
                            "src": "1170:10:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory,uint256[] memory)"
                            }
                          },
                          "id": 10229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1170:30:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10230,
                        "nodeType": "ExpressionStatement",
                        "src": "1170:30:51"
                      }
                    ]
                  },
                  "id": 10232,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "hexValue": "4552433230204d6f636b",
                          "id": 10213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1048:12:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_093d5486f5a62d60044b4bd8cc56aae2734f66baac6b3b4d03f2320f55df3df9",
                            "typeString": "literal_string \"ERC20 Mock\""
                          },
                          "value": "ERC20 Mock"
                        },
                        {
                          "hexValue": "453230",
                          "id": 10214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1062:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_d8c2d14e4c96f5d5c1a0e667c4852ff6033c8833ae24b8b9573e86acb200bac7",
                            "typeString": "literal_string \"E20\""
                          },
                          "value": "E20"
                        },
                        {
                          "hexValue": "3138",
                          "id": 10215,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1069:2:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18_by_1",
                            "typeString": "int_const 18"
                          },
                          "value": "18"
                        }
                      ],
                      "id": 10216,
                      "modifierName": {
                        "id": 10212,
                        "name": "ERC20Burnable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9824,
                        "src": "1034:13:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC20Burnable_$9824_$",
                          "typeString": "type(contract ERC20Burnable)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1034:38:51"
                    },
                    {
                      "arguments": [
                        {
                          "expression": {
                            "id": 10218,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1084:3:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 10219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1084:10:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "id": 10220,
                      "modifierName": {
                        "id": 10217,
                        "name": "MinterRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 125,
                        "src": "1073:10:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MinterRole_$125_$",
                          "typeString": "type(contract MinterRole)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1073:22:51"
                    },
                    {
                      "arguments": [
                        {
                          "id": 10222,
                          "name": "forwarderRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10208,
                          "src": "1121:17:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        {
                          "id": 10223,
                          "name": "universalForwarder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10210,
                          "src": "1140:18:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 10224,
                      "modifierName": {
                        "id": 10221,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15172,
                        "src": "1096:24:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                          "typeString": "type(contract UsingUniversalForwarding)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1096:63:51"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10211,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10203,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 10232,
                        "src": "885:27:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10201,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "885:7:51",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 10202,
                          "nodeType": "ArrayTypeName",
                          "src": "885:9:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10206,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 10232,
                        "src": "922:23:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10204,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "922:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10205,
                          "nodeType": "ArrayTypeName",
                          "src": "922:9:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10208,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 10232,
                        "src": "955:36:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 10207,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15006,
                          "src": "955:18:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10210,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 10232,
                        "src": "1001:26:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10209,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1001:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "875:158:51"
                  },
                  "returnParameters": {
                    "id": 10225,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1160:0:51"
                  },
                  "scope": 10326,
                  "src": "864:343:51",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10247,
                    "nodeType": "Block",
                    "src": "1560:79:51",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 10239,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  10303
                                ],
                                "referencedDeclaration": 10303,
                                "src": "1588:10:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 10240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1588:12:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 10238,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "1570:17:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 10241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1570:31:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10242,
                        "nodeType": "ExpressionStatement",
                        "src": "1570:31:51"
                      },
                      {
                        "expression": {
                          "id": 10245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10243,
                            "name": "_tokenURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8194,
                            "src": "1611:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 10244,
                            "name": "tokenURI_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10235,
                            "src": "1623:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "1611:21:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 10246,
                        "nodeType": "ExpressionStatement",
                        "src": "1611:21:51"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10233,
                    "nodeType": "StructuredDocumentation",
                    "src": "1342:156:51",
                    "text": " Sets the token metadata URI.\n @dev Reverts if not called by the contract owner.\n @param tokenURI_ the new token metadata URI."
                  },
                  "functionSelector": "e0df5b6f",
                  "id": 10248,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setTokenURI",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10236,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10235,
                        "mutability": "mutable",
                        "name": "tokenURI_",
                        "nodeType": "VariableDeclaration",
                        "scope": 10248,
                        "src": "1524:25:51",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10234,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1524:6:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1523:27:51"
                  },
                  "returnParameters": {
                    "id": 10237,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1560:0:51"
                  },
                  "scope": 10326,
                  "src": "1503:136:51",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    10078
                  ],
                  "body": {
                    "id": 10267,
                    "nodeType": "Block",
                    "src": "1926:71:51",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 10258,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  10303
                                ],
                                "referencedDeclaration": 10303,
                                "src": "1951:10:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 10259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1951:12:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 10257,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "1936:14:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 10260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1936:28:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10261,
                        "nodeType": "ExpressionStatement",
                        "src": "1936:28:51"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10263,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10251,
                              "src": "1980:2:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10264,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10253,
                              "src": "1984:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10262,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9365,
                            "src": "1974:5:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1974:16:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10266,
                        "nodeType": "ExpressionStatement",
                        "src": "1974:16:51"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10249,
                    "nodeType": "StructuredDocumentation",
                    "src": "1774:82:51",
                    "text": "@inheritdoc IERC20Mintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "40c10f19",
                  "id": 10268,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10255,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1917:8:51"
                  },
                  "parameters": {
                    "id": 10254,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10251,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 10268,
                        "src": "1875:10:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10250,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1875:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10253,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 10268,
                        "src": "1887:13:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10252,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1887:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1874:27:51"
                  },
                  "returnParameters": {
                    "id": 10256,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1926:0:51"
                  },
                  "scope": 10326,
                  "src": "1861:136:51",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    10088
                  ],
                  "body": {
                    "id": 10289,
                    "nodeType": "Block",
                    "src": "2187:85:51",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 10280,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  10303
                                ],
                                "referencedDeclaration": 10303,
                                "src": "2212:10:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 10281,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2212:12:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 10279,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "2197:14:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 10282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2197:28:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10283,
                        "nodeType": "ExpressionStatement",
                        "src": "2197:28:51"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10285,
                              "name": "recipients",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10272,
                              "src": "2246:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "id": 10286,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10275,
                              "src": "2258:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 10284,
                            "name": "_batchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9487,
                            "src": "2235:10:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory,uint256[] memory)"
                            }
                          },
                          "id": 10287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2235:30:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10288,
                        "nodeType": "ExpressionStatement",
                        "src": "2235:30:51"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10269,
                    "nodeType": "StructuredDocumentation",
                    "src": "2003:82:51",
                    "text": "@inheritdoc IERC20Mintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "68573107",
                  "id": 10290,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10277,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2178:8:51"
                  },
                  "parameters": {
                    "id": 10276,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10272,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 10290,
                        "src": "2109:27:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10270,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2109:7:51",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 10271,
                          "nodeType": "ArrayTypeName",
                          "src": "2109:9:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10275,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 10290,
                        "src": "2138:23:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10273,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2138:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10274,
                          "nodeType": "ArrayTypeName",
                          "src": "2138:9:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2108:54:51"
                  },
                  "returnParameters": {
                    "id": 10278,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2187:0:51"
                  },
                  "scope": 10326,
                  "src": "2090:182:51",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    312,
                    15126
                  ],
                  "body": {
                    "id": 10302,
                    "nodeType": "Block",
                    "src": "2529:61:51",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10298,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "2546:24:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 10299,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgSender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15126,
                            "src": "2546:35:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 10300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2546:37:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 10297,
                        "id": 10301,
                        "nodeType": "Return",
                        "src": "2539:44:51"
                      }
                    ]
                  },
                  "id": 10303,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10294,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 10292,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "2460:15:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 10293,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "2477:24:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "2451:51:51"
                  },
                  "parameters": {
                    "id": 10291,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2426:2:51"
                  },
                  "returnParameters": {
                    "id": 10297,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10296,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10303,
                        "src": "2512:15:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 10295,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2512:15:51",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2511:17:51"
                  },
                  "scope": 10326,
                  "src": "2407:183:51",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    321,
                    15171
                  ],
                  "body": {
                    "id": 10315,
                    "nodeType": "Block",
                    "src": "2717:59:51",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10311,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "2734:24:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 10312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15171,
                            "src": "2734:33:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$",
                              "typeString": "function () view returns (bytes calldata)"
                            }
                          },
                          "id": 10313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2734:35:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 10310,
                        "id": 10314,
                        "nodeType": "Return",
                        "src": "2727:42:51"
                      }
                    ]
                  },
                  "id": 10316,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10307,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 10305,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "2647:15:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 10306,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "2664:24:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "2638:51:51"
                  },
                  "parameters": {
                    "id": 10304,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2613:2:51"
                  },
                  "returnParameters": {
                    "id": 10310,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10309,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 10316,
                        "src": "2699:16:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10308,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2699:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2698:18:51"
                  },
                  "scope": 10326,
                  "src": "2596:180:51",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10324,
                    "nodeType": "Block",
                    "src": "2971:34:51",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 10321,
                            "name": "_msgData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              10316
                            ],
                            "referencedDeclaration": 10316,
                            "src": "2988:8:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () view returns (bytes memory)"
                            }
                          },
                          "id": 10322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2988:10:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 10320,
                        "id": 10323,
                        "nodeType": "Return",
                        "src": "2981:17:51"
                      }
                    ]
                  },
                  "functionSelector": "c4c2bfdc",
                  "id": 10325,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10317,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2927:2:51"
                  },
                  "returnParameters": {
                    "id": 10320,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10319,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 10325,
                        "src": "2953:16:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10318,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2953:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2952:18:51"
                  },
                  "scope": 10326,
                  "src": "2911:94:51",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 10327,
              "src": "747:2260:51"
            }
          ],
          "src": "33:2975:51"
        },
        "id": 51
      },
      "contracts/token/ERC20/mocks/ERC20Mock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/mocks/ERC20Mock.sol",
          "exportedSymbols": {
            "ERC20": [
              9715
            ],
            "ERC20Mock": [
              10479
            ],
            "IERC20Mintable": [
              10089
            ],
            "IForwarderRegistry": [
              15006
            ],
            "ManagedIdentity": [
              322
            ],
            "MinterRole": [
              125
            ],
            "Recoverable": [
              1253
            ],
            "UsingUniversalForwarding": [
              15172
            ]
          },
          "id": 10480,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10328,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:52"
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "id": 10330,
              "nodeType": "ImportDirective",
              "scope": 10480,
              "sourceUnit": 15007,
              "src": "66:108:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10329,
                    "name": "IForwarderRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:18:52",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20Mintable.sol",
              "file": "./../interfaces/IERC20Mintable.sol",
              "id": 10332,
              "nodeType": "ImportDirective",
              "scope": 10480,
              "sourceUnit": 10090,
              "src": "175:66:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10331,
                    "name": "IERC20Mintable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "183:14:52",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 10334,
              "nodeType": "ImportDirective",
              "scope": 10480,
              "sourceUnit": 323,
              "src": "242:102:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10333,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "250:15:52",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "id": 10336,
              "nodeType": "ImportDirective",
              "scope": 10480,
              "sourceUnit": 1265,
              "src": "345:93:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10335,
                    "name": "Recoverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "353:11:52",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "id": 10338,
              "nodeType": "ImportDirective",
              "scope": 10480,
              "sourceUnit": 15173,
              "src": "439:120:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10337,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "447:24:52",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "id": 10340,
              "nodeType": "ImportDirective",
              "scope": 10480,
              "sourceUnit": 126,
              "src": "560:92:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10339,
                    "name": "MinterRole",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "568:10:52",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/ERC20.sol",
              "file": "./../ERC20.sol",
              "id": 10342,
              "nodeType": "ImportDirective",
              "scope": 10480,
              "sourceUnit": 9716,
              "src": "653:37:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10341,
                    "name": "ERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "661:5:52",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 10344,
                    "name": "Recoverable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1253,
                    "src": "744:11:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Recoverable_$1253",
                      "typeString": "contract Recoverable"
                    }
                  },
                  "id": 10345,
                  "nodeType": "InheritanceSpecifier",
                  "src": "744:11:52"
                },
                {
                  "baseName": {
                    "id": 10346,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15172,
                    "src": "757:24:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                      "typeString": "contract UsingUniversalForwarding"
                    }
                  },
                  "id": 10347,
                  "nodeType": "InheritanceSpecifier",
                  "src": "757:24:52"
                },
                {
                  "baseName": {
                    "id": 10348,
                    "name": "ERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9715,
                    "src": "783:5:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$9715",
                      "typeString": "contract ERC20"
                    }
                  },
                  "id": 10349,
                  "nodeType": "InheritanceSpecifier",
                  "src": "783:5:52"
                },
                {
                  "baseName": {
                    "id": 10350,
                    "name": "IERC20Mintable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10089,
                    "src": "790:14:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Mintable_$10089",
                      "typeString": "contract IERC20Mintable"
                    }
                  },
                  "id": 10351,
                  "nodeType": "InheritanceSpecifier",
                  "src": "790:14:52"
                },
                {
                  "baseName": {
                    "id": 10352,
                    "name": "MinterRole",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 125,
                    "src": "806:10:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MinterRole_$125",
                      "typeString": "contract MinterRole"
                    }
                  },
                  "id": 10353,
                  "nodeType": "InheritanceSpecifier",
                  "src": "806:10:52"
                }
              ],
              "contractDependencies": [
                22,
                125,
                206,
                218,
                322,
                1253,
                9715,
                9947,
                9971,
                10001,
                10057,
                10067,
                10089,
                10125,
                10173,
                14994,
                15031,
                15172
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 10343,
                "nodeType": "StructuredDocumentation",
                "src": "692:29:52",
                "text": " @title ERC20 Mock."
              },
              "fullyImplemented": true,
              "id": 10479,
              "linearizedBaseContracts": [
                10479,
                125,
                10089,
                9715,
                10125,
                10173,
                10001,
                9971,
                10067,
                10057,
                9947,
                218,
                15172,
                14994,
                15031,
                1253,
                206,
                22,
                322
              ],
              "name": "ERC20Mock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 10384,
                    "nodeType": "Block",
                    "src": "1111:47:52",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10380,
                              "name": "recipients",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10356,
                              "src": "1132:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "id": 10381,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10359,
                              "src": "1144:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 10379,
                            "name": "_batchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9487,
                            "src": "1121:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory,uint256[] memory)"
                            }
                          },
                          "id": 10382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1121:30:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10383,
                        "nodeType": "ExpressionStatement",
                        "src": "1121:30:52"
                      }
                    ]
                  },
                  "id": 10385,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "hexValue": "4552433230204d6f636b",
                          "id": 10366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "999:12:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_093d5486f5a62d60044b4bd8cc56aae2734f66baac6b3b4d03f2320f55df3df9",
                            "typeString": "literal_string \"ERC20 Mock\""
                          },
                          "value": "ERC20 Mock"
                        },
                        {
                          "hexValue": "453230",
                          "id": 10367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1013:5:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_d8c2d14e4c96f5d5c1a0e667c4852ff6033c8833ae24b8b9573e86acb200bac7",
                            "typeString": "literal_string \"E20\""
                          },
                          "value": "E20"
                        },
                        {
                          "hexValue": "3138",
                          "id": 10368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1020:2:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18_by_1",
                            "typeString": "int_const 18"
                          },
                          "value": "18"
                        }
                      ],
                      "id": 10369,
                      "modifierName": {
                        "id": 10365,
                        "name": "ERC20",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9715,
                        "src": "993:5:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC20_$9715_$",
                          "typeString": "type(contract ERC20)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "993:30:52"
                    },
                    {
                      "arguments": [
                        {
                          "expression": {
                            "id": 10371,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1035:3:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 10372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1035:10:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "id": 10373,
                      "modifierName": {
                        "id": 10370,
                        "name": "MinterRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 125,
                        "src": "1024:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MinterRole_$125_$",
                          "typeString": "type(contract MinterRole)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1024:22:52"
                    },
                    {
                      "arguments": [
                        {
                          "id": 10375,
                          "name": "forwarderRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10361,
                          "src": "1072:17:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        {
                          "id": 10376,
                          "name": "universalForwarder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10363,
                          "src": "1091:18:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 10377,
                      "modifierName": {
                        "id": 10374,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15172,
                        "src": "1047:24:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                          "typeString": "type(contract UsingUniversalForwarding)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1047:63:52"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10364,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10356,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 10385,
                        "src": "844:27:52",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10354,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "844:7:52",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 10355,
                          "nodeType": "ArrayTypeName",
                          "src": "844:9:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10359,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 10385,
                        "src": "881:23:52",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10357,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "881:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10358,
                          "nodeType": "ArrayTypeName",
                          "src": "881:9:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10361,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 10385,
                        "src": "914:36:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 10360,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15006,
                          "src": "914:18:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10363,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 10385,
                        "src": "960:26:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10362,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "960:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "834:158:52"
                  },
                  "returnParameters": {
                    "id": 10378,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1111:0:52"
                  },
                  "scope": 10479,
                  "src": "823:335:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10400,
                    "nodeType": "Block",
                    "src": "1511:79:52",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 10392,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  10456
                                ],
                                "referencedDeclaration": 10456,
                                "src": "1539:10:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 10393,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1539:12:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 10391,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "1521:17:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 10394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1521:31:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10395,
                        "nodeType": "ExpressionStatement",
                        "src": "1521:31:52"
                      },
                      {
                        "expression": {
                          "id": 10398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10396,
                            "name": "_tokenURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8194,
                            "src": "1562:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 10397,
                            "name": "tokenURI_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10388,
                            "src": "1574:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "1562:21:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 10399,
                        "nodeType": "ExpressionStatement",
                        "src": "1562:21:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10386,
                    "nodeType": "StructuredDocumentation",
                    "src": "1293:156:52",
                    "text": " Sets the token metadata URI.\n @dev Reverts if not called by the contract owner.\n @param tokenURI_ the new token metadata URI."
                  },
                  "functionSelector": "e0df5b6f",
                  "id": 10401,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setTokenURI",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10389,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10388,
                        "mutability": "mutable",
                        "name": "tokenURI_",
                        "nodeType": "VariableDeclaration",
                        "scope": 10401,
                        "src": "1475:25:52",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10387,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1475:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1474:27:52"
                  },
                  "returnParameters": {
                    "id": 10390,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1511:0:52"
                  },
                  "scope": 10479,
                  "src": "1454:136:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    10078
                  ],
                  "body": {
                    "id": 10420,
                    "nodeType": "Block",
                    "src": "1877:71:52",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 10411,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  10456
                                ],
                                "referencedDeclaration": 10456,
                                "src": "1902:10:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 10412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1902:12:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 10410,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "1887:14:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 10413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1887:28:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10414,
                        "nodeType": "ExpressionStatement",
                        "src": "1887:28:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10416,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10404,
                              "src": "1931:2:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10417,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10406,
                              "src": "1935:5:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10415,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9365,
                            "src": "1925:5:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1925:16:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10419,
                        "nodeType": "ExpressionStatement",
                        "src": "1925:16:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10402,
                    "nodeType": "StructuredDocumentation",
                    "src": "1725:82:52",
                    "text": "@inheritdoc IERC20Mintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "40c10f19",
                  "id": 10421,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10408,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1868:8:52"
                  },
                  "parameters": {
                    "id": 10407,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10404,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 10421,
                        "src": "1826:10:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10403,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1826:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10406,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 10421,
                        "src": "1838:13:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10405,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1838:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1825:27:52"
                  },
                  "returnParameters": {
                    "id": 10409,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1877:0:52"
                  },
                  "scope": 10479,
                  "src": "1812:136:52",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    10088
                  ],
                  "body": {
                    "id": 10442,
                    "nodeType": "Block",
                    "src": "2138:85:52",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 10433,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  10456
                                ],
                                "referencedDeclaration": 10456,
                                "src": "2163:10:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 10434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2163:12:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 10432,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "2148:14:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 10435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2148:28:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10436,
                        "nodeType": "ExpressionStatement",
                        "src": "2148:28:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10438,
                              "name": "recipients",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10425,
                              "src": "2197:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "id": 10439,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10428,
                              "src": "2209:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 10437,
                            "name": "_batchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9487,
                            "src": "2186:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory,uint256[] memory)"
                            }
                          },
                          "id": 10440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2186:30:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10441,
                        "nodeType": "ExpressionStatement",
                        "src": "2186:30:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10422,
                    "nodeType": "StructuredDocumentation",
                    "src": "1954:82:52",
                    "text": "@inheritdoc IERC20Mintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "68573107",
                  "id": 10443,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10430,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2129:8:52"
                  },
                  "parameters": {
                    "id": 10429,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10425,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 10443,
                        "src": "2060:27:52",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10423,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2060:7:52",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 10424,
                          "nodeType": "ArrayTypeName",
                          "src": "2060:9:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10428,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 10443,
                        "src": "2089:23:52",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10426,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2089:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10427,
                          "nodeType": "ArrayTypeName",
                          "src": "2089:9:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2059:54:52"
                  },
                  "returnParameters": {
                    "id": 10431,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2138:0:52"
                  },
                  "scope": 10479,
                  "src": "2041:182:52",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    312,
                    15126
                  ],
                  "body": {
                    "id": 10455,
                    "nodeType": "Block",
                    "src": "2480:61:52",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10451,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "2497:24:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 10452,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgSender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15126,
                            "src": "2497:35:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 10453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2497:37:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 10450,
                        "id": 10454,
                        "nodeType": "Return",
                        "src": "2490:44:52"
                      }
                    ]
                  },
                  "id": 10456,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10447,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 10445,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "2411:15:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 10446,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "2428:24:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "2402:51:52"
                  },
                  "parameters": {
                    "id": 10444,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2377:2:52"
                  },
                  "returnParameters": {
                    "id": 10450,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10449,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10456,
                        "src": "2463:15:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 10448,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2463:15:52",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2462:17:52"
                  },
                  "scope": 10479,
                  "src": "2358:183:52",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    321,
                    15171
                  ],
                  "body": {
                    "id": 10468,
                    "nodeType": "Block",
                    "src": "2668:59:52",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10464,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "2685:24:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 10465,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15171,
                            "src": "2685:33:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$",
                              "typeString": "function () view returns (bytes calldata)"
                            }
                          },
                          "id": 10466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2685:35:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 10463,
                        "id": 10467,
                        "nodeType": "Return",
                        "src": "2678:42:52"
                      }
                    ]
                  },
                  "id": 10469,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10460,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 10458,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "2598:15:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 10459,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "2615:24:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "2589:51:52"
                  },
                  "parameters": {
                    "id": 10457,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2564:2:52"
                  },
                  "returnParameters": {
                    "id": 10463,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10462,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 10469,
                        "src": "2650:16:52",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10461,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2650:5:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2649:18:52"
                  },
                  "scope": 10479,
                  "src": "2547:180:52",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10477,
                    "nodeType": "Block",
                    "src": "2922:34:52",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 10474,
                            "name": "_msgData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              10469
                            ],
                            "referencedDeclaration": 10469,
                            "src": "2939:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () view returns (bytes memory)"
                            }
                          },
                          "id": 10475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2939:10:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 10473,
                        "id": 10476,
                        "nodeType": "Return",
                        "src": "2932:17:52"
                      }
                    ]
                  },
                  "functionSelector": "c4c2bfdc",
                  "id": 10478,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10470,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2878:2:52"
                  },
                  "returnParameters": {
                    "id": 10473,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10472,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 10478,
                        "src": "2904:16:52",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10471,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2904:5:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2903:18:52"
                  },
                  "scope": 10479,
                  "src": "2862:94:52",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 10480,
              "src": "722:2236:52"
            }
          ],
          "src": "33:2926:52"
        },
        "id": 52
      },
      "contracts/token/ERC20/mocks/ERC20ReceiverMock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/mocks/ERC20ReceiverMock.sol",
          "exportedSymbols": {
            "ERC20Receiver": [
              9869
            ],
            "ERC20ReceiverMock": [
              10562
            ],
            "IERC20Receiver": [
              10143
            ]
          },
          "id": 10563,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10481,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:53"
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20Receiver.sol",
              "file": "./../interfaces/IERC20Receiver.sol",
              "id": 10483,
              "nodeType": "ImportDirective",
              "scope": 10563,
              "sourceUnit": 10144,
              "src": "66:66:53",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10482,
                    "name": "IERC20Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:14:53",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/ERC20Receiver.sol",
              "file": "./../ERC20Receiver.sol",
              "id": 10485,
              "nodeType": "ImportDirective",
              "scope": 10563,
              "sourceUnit": 9870,
              "src": "133:53:53",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10484,
                    "name": "ERC20Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "141:13:53",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 10487,
                    "name": "ERC20Receiver",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9869,
                    "src": "257:13:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Receiver_$9869",
                      "typeString": "contract ERC20Receiver"
                    }
                  },
                  "id": 10488,
                  "nodeType": "InheritanceSpecifier",
                  "src": "257:13:53"
                }
              ],
              "contractDependencies": [
                218,
                9869,
                10143
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 10486,
                "nodeType": "StructuredDocumentation",
                "src": "188:38:53",
                "text": " @title ERC20 Receiver Mock."
              },
              "fullyImplemented": true,
              "id": 10562,
              "linearizedBaseContracts": [
                10562,
                9869,
                218,
                10143
              ],
              "name": "ERC20ReceiverMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 10500,
                  "name": "ERC20Received",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 10499,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10490,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 10500,
                        "src": "297:14:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10489,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "297:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10492,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 10500,
                        "src": "313:12:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10491,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "313:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10494,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 10500,
                        "src": "327:13:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10493,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "327:7:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10496,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 10500,
                        "src": "342:10:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10495,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "342:5:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10498,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "gas",
                        "nodeType": "VariableDeclaration",
                        "scope": 10500,
                        "src": "354:11:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10497,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "354:7:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "296:70:53"
                  },
                  "src": "277:90:53"
                },
                {
                  "constant": false,
                  "id": 10502,
                  "mutability": "immutable",
                  "name": "_accept",
                  "nodeType": "VariableDeclaration",
                  "scope": 10562,
                  "src": "373:31:53",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10501,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "373:4:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10504,
                  "mutability": "immutable",
                  "name": "_tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 10562,
                  "src": "410:40:53",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10503,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "410:7:53",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10519,
                    "nodeType": "Block",
                    "src": "504:71:53",
                    "statements": [
                      {
                        "expression": {
                          "id": 10513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10511,
                            "name": "_accept",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10502,
                            "src": "514:7:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 10512,
                            "name": "accept",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10506,
                            "src": "524:6:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "514:16:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10514,
                        "nodeType": "ExpressionStatement",
                        "src": "514:16:53"
                      },
                      {
                        "expression": {
                          "id": 10517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10515,
                            "name": "_tokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10504,
                            "src": "540:13:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 10516,
                            "name": "tokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10508,
                            "src": "556:12:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "540:28:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 10518,
                        "nodeType": "ExpressionStatement",
                        "src": "540:28:53"
                      }
                    ]
                  },
                  "id": 10520,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10509,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10506,
                        "mutability": "mutable",
                        "name": "accept",
                        "nodeType": "VariableDeclaration",
                        "scope": 10520,
                        "src": "469:11:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10505,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "469:4:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10508,
                        "mutability": "mutable",
                        "name": "tokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 10520,
                        "src": "482:20:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10507,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "482:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "468:35:53"
                  },
                  "returnParameters": {
                    "id": 10510,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "504:0:53"
                  },
                  "scope": 10562,
                  "src": "457:118:53",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    10142
                  ],
                  "body": {
                    "id": 10560,
                    "nodeType": "Block",
                    "src": "913:275:53",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 10539,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 10536,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "931:3:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 10537,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "931:10:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 10538,
                                "name": "_tokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10504,
                                "src": "945:13:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "931:27:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243323052656365697665723a2077726f6e6720746f6b656e",
                              "id": 10540,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "960:28:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ba7854d2b488fdae33a48fd488fbcd0aa3ed196dc242c859890df37ac3294c25",
                                "typeString": "literal_string \"ERC20Receiver: wrong token\""
                              },
                              "value": "ERC20Receiver: wrong token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ba7854d2b488fdae33a48fd488fbcd0aa3ed196dc242c859890df37ac3294c25",
                                "typeString": "literal_string \"ERC20Receiver: wrong token\""
                              }
                            ],
                            "id": 10535,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "923:7:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "923:66:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10542,
                        "nodeType": "ExpressionStatement",
                        "src": "923:66:53"
                      },
                      {
                        "condition": {
                          "id": 10543,
                          "name": "_accept",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10502,
                          "src": "1003:7:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 10558,
                          "nodeType": "Block",
                          "src": "1135:47:53",
                          "statements": [
                            {
                              "expression": {
                                "id": 10556,
                                "name": "_ERC20_REJECTED",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9844,
                                "src": "1156:15:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "functionReturnParameters": 10534,
                              "id": 10557,
                              "nodeType": "Return",
                              "src": "1149:22:53"
                            }
                          ]
                        },
                        "id": 10559,
                        "nodeType": "IfStatement",
                        "src": "999:183:53",
                        "trueBody": {
                          "id": 10555,
                          "nodeType": "Block",
                          "src": "1012:117:53",
                          "statements": [
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 10545,
                                    "name": "sender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10523,
                                    "src": "1045:6:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 10546,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10525,
                                    "src": "1053:4:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 10547,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10527,
                                    "src": "1059:5:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 10548,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10529,
                                    "src": "1066:4:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 10549,
                                      "name": "gasleft",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -7,
                                      "src": "1072:7:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                        "typeString": "function () view returns (uint256)"
                                      }
                                    },
                                    "id": 10550,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1072:9:53",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "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"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10544,
                                  "name": "ERC20Received",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10500,
                                  "src": "1031:13:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256,bytes memory,uint256)"
                                  }
                                },
                                "id": 10551,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1031:51:53",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10552,
                              "nodeType": "EmitStatement",
                              "src": "1026:56:53"
                            },
                            {
                              "expression": {
                                "id": 10553,
                                "name": "_ERC20_RECEIVED",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9841,
                                "src": "1103:15:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "functionReturnParameters": 10534,
                              "id": 10554,
                              "nodeType": "Return",
                              "src": "1096:22:53"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10521,
                    "nodeType": "StructuredDocumentation",
                    "src": "710:30:53",
                    "text": "@inheritdoc IERC20Receiver"
                  },
                  "functionSelector": "4fc35859",
                  "id": 10561,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC20Received",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10531,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "887:8:53"
                  },
                  "parameters": {
                    "id": 10530,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10523,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 10561,
                        "src": "779:14:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10522,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "779:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10525,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 10561,
                        "src": "803:12:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10524,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "803:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10527,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 10561,
                        "src": "825:13:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10526,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "825:7:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10529,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 10561,
                        "src": "848:17:53",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10528,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "848:5:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "769:102:53"
                  },
                  "returnParameters": {
                    "id": 10534,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10533,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10561,
                        "src": "905:6:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 10532,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "905:6:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "904:8:53"
                  },
                  "scope": 10562,
                  "src": "745:443:53",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 10563,
              "src": "227:963:53"
            }
          ],
          "src": "33:1158:53"
        },
        "id": 53
      },
      "contracts/token/ERC20/polygon/child/PolygonChildERC20.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/polygon/child/PolygonChildERC20.sol",
          "exportedSymbols": {
            "ERC20": [
              9715
            ],
            "ERC20Receiver": [
              9869
            ],
            "IERC165": [
              218
            ],
            "IERC20Receiver": [
              10143
            ],
            "PolygonChildERC20": [
              10716
            ],
            "PolygonChildERC20Base": [
              10762
            ]
          },
          "id": 10717,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10564,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:54"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 10566,
              "nodeType": "ImportDirective",
              "scope": 10717,
              "sourceUnit": 219,
              "src": "66:93:54",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10565,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:7:54",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20Receiver.sol",
              "file": "./../../interfaces/IERC20Receiver.sol",
              "id": 10568,
              "nodeType": "ImportDirective",
              "scope": 10717,
              "sourceUnit": 10144,
              "src": "160:69:54",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10567,
                    "name": "IERC20Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "168:14:54",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/polygon/child/PolygonChildERC20Base.sol",
              "file": "./PolygonChildERC20Base.sol",
              "id": 10571,
              "nodeType": "ImportDirective",
              "scope": 10717,
              "sourceUnit": 10763,
              "src": "230:81:54",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10569,
                    "name": "ERC20Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "238:13:54",
                    "typeDescriptions": {}
                  }
                },
                {
                  "foreign": {
                    "id": 10570,
                    "name": "PolygonChildERC20Base",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "253:21:54",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/ERC20.sol",
              "file": "./../../ERC20.sol",
              "id": 10573,
              "nodeType": "ImportDirective",
              "scope": 10717,
              "sourceUnit": 9716,
              "src": "312:40:54",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10572,
                    "name": "ERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "320:5:54",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 10575,
                    "name": "ERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9715,
                    "src": "666:5:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$9715",
                      "typeString": "contract ERC20"
                    }
                  },
                  "id": 10576,
                  "nodeType": "InheritanceSpecifier",
                  "src": "666:5:54"
                },
                {
                  "baseName": {
                    "id": 10577,
                    "name": "PolygonChildERC20Base",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10762,
                    "src": "673:21:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PolygonChildERC20Base_$10762",
                      "typeString": "contract PolygonChildERC20Base"
                    }
                  },
                  "id": 10578,
                  "nodeType": "InheritanceSpecifier",
                  "src": "673:21:54"
                }
              ],
              "contractDependencies": [
                218,
                322,
                9715,
                9869,
                9947,
                9971,
                10001,
                10057,
                10067,
                10125,
                10143,
                10173,
                10762,
                14652
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 10574,
                "nodeType": "StructuredDocumentation",
                "src": "354:281:54",
                "text": " @title ERC20 Fungible Token Contract, Child version (for Polygon).\n Polygon bridging ERC20 child token which escrows the token and emits a `Withdrawn(address account, uint256 value)` event on exit.\n @dev This contract should be deployed on the Child Chain (Polygon)."
              },
              "fullyImplemented": true,
              "id": 10716,
              "linearizedBaseContracts": [
                10716,
                10762,
                9869,
                9715,
                10125,
                10173,
                10001,
                9971,
                10067,
                10057,
                9947,
                218,
                10143,
                14652,
                322
              ],
              "name": "PolygonChildERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 10597,
                    "nodeType": "Block",
                    "src": "913:2:54",
                    "statements": []
                  },
                  "id": 10598,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 10589,
                          "name": "name_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10580,
                          "src": "845:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "id": 10590,
                          "name": "symbol_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10582,
                          "src": "852:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "id": 10591,
                          "name": "decimals_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10584,
                          "src": "861:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "id": 10592,
                      "modifierName": {
                        "id": 10588,
                        "name": "ERC20",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9715,
                        "src": "839:5:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC20_$9715_$",
                          "typeString": "type(contract ERC20)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "839:32:54"
                    },
                    {
                      "arguments": [
                        {
                          "id": 10594,
                          "name": "childChainManager",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10586,
                          "src": "894:17:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 10595,
                      "modifierName": {
                        "id": 10593,
                        "name": "PolygonChildERC20Base",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10762,
                        "src": "872:21:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_PolygonChildERC20Base_$10762_$",
                          "typeString": "type(contract PolygonChildERC20Base)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "872:40:54"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10587,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10580,
                        "mutability": "mutable",
                        "name": "name_",
                        "nodeType": "VariableDeclaration",
                        "scope": 10598,
                        "src": "722:19:54",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10579,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "722:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10582,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nodeType": "VariableDeclaration",
                        "scope": 10598,
                        "src": "751:21:54",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10581,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "751:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10584,
                        "mutability": "mutable",
                        "name": "decimals_",
                        "nodeType": "VariableDeclaration",
                        "scope": 10598,
                        "src": "782:15:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 10583,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "782:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10586,
                        "mutability": "mutable",
                        "name": "childChainManager",
                        "nodeType": "VariableDeclaration",
                        "scope": 10598,
                        "src": "807:25:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10585,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "807:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "712:126:54"
                  },
                  "returnParameters": {
                    "id": 10596,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "913:0:54"
                  },
                  "scope": 10716,
                  "src": "701:214:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    8312,
                    9868
                  ],
                  "body": {
                    "id": 10619,
                    "nodeType": "Block",
                    "src": "1191:108:54",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 10617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 10611,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10601,
                                "src": "1232:11:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 10609,
                                "name": "ERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9715,
                                "src": "1208:5:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC20_$9715_$",
                                  "typeString": "type(contract ERC20)"
                                }
                              },
                              "id": 10610,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8312,
                              "src": "1208:23:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 10612,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1208:36:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 10615,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10601,
                                "src": "1280:11:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 10613,
                                "name": "ERC20Receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9869,
                                "src": "1248:13:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC20Receiver_$9869_$",
                                  "typeString": "type(contract ERC20Receiver)"
                                }
                              },
                              "id": 10614,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9868,
                              "src": "1248:31:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 10616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1248:44:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1208:84:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 10608,
                        "id": 10618,
                        "nodeType": "Return",
                        "src": "1201:91:54"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10599,
                    "nodeType": "StructuredDocumentation",
                    "src": "1050:23:54",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 10620,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10605,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 10603,
                        "name": "ERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9715,
                        "src": "1154:5:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$9715",
                          "typeString": "contract ERC20"
                        }
                      },
                      {
                        "id": 10604,
                        "name": "ERC20Receiver",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9869,
                        "src": "1161:13:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20Receiver_$9869",
                          "typeString": "contract ERC20Receiver"
                        }
                      }
                    ],
                    "src": "1145:30:54"
                  },
                  "parameters": {
                    "id": 10602,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10601,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 10620,
                        "src": "1105:18:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 10600,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1105:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1104:20:54"
                  },
                  "returnParameters": {
                    "id": 10608,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10607,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10620,
                        "src": "1185:4:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10606,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1185:4:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1184:6:54"
                  },
                  "scope": 10716,
                  "src": "1078:221:54",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    14651
                  ],
                  "body": {
                    "id": 10653,
                    "nodeType": "Block",
                    "src": "1853:161:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 10630,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "1885:10:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 10631,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1885:12:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 10629,
                            "name": "_requireDepositorRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10761,
                            "src": "1863:21:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 10632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1863:35:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10633,
                        "nodeType": "ExpressionStatement",
                        "src": "1863:35:54"
                      },
                      {
                        "assignments": [
                          10635
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10635,
                            "mutability": "mutable",
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 10653,
                            "src": "1908:14:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10634,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1908:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10643,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10638,
                              "name": "depositData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10625,
                              "src": "1936:11:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 10640,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1950:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 10639,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1950:7:54",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 10641,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1949:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              }
                            ],
                            "expression": {
                              "id": 10636,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "1925:3:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 10637,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "1925:10:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 10642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1925:34:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1908:51:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10647,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "1987:4:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_PolygonChildERC20_$10716",
                                    "typeString": "contract PolygonChildERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_PolygonChildERC20_$10716",
                                    "typeString": "contract PolygonChildERC20"
                                  }
                                ],
                                "id": 10646,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1979:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10645,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1979:7:54",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10648,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1979:13:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10649,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10623,
                              "src": "1994:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10650,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10635,
                              "src": "2000:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10644,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9277,
                            "src": "1969:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 10651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1969:38:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10652,
                        "nodeType": "ExpressionStatement",
                        "src": "1969:38:54"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10621,
                    "nodeType": "StructuredDocumentation",
                    "src": "1434:331:54",
                    "text": " Called when tokens have been deposited on the root chain.\n @dev Should handle deposit by un-escrowing the required amount for user.\n @dev Reverts if not sent by the depositor (ChildChainManager).\n @param user address for whom deposit has been done.\n @param depositData abi encoded amount."
                  },
                  "functionSelector": "cf2c52cb",
                  "id": 10654,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10627,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1844:8:54"
                  },
                  "parameters": {
                    "id": 10626,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10623,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 10654,
                        "src": "1787:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10622,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1787:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10625,
                        "mutability": "mutable",
                        "name": "depositData",
                        "nodeType": "VariableDeclaration",
                        "scope": 10654,
                        "src": "1801:26:54",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10624,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1801:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1786:42:54"
                  },
                  "returnParameters": {
                    "id": 10628,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1853:0:54"
                  },
                  "scope": 10716,
                  "src": "1770:244:54",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10680,
                    "nodeType": "Block",
                    "src": "2351:148:54",
                    "statements": [
                      {
                        "assignments": [
                          10661
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10661,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 10680,
                            "src": "2361:14:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 10660,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2361:7:54",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10664,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 10662,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "2378:10:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 10663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2378:12:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2361:29:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10666,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10661,
                              "src": "2414:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10667,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10661,
                              "src": "2422:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 10670,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "2438:4:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_PolygonChildERC20_$10716",
                                    "typeString": "contract PolygonChildERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_PolygonChildERC20_$10716",
                                    "typeString": "contract PolygonChildERC20"
                                  }
                                ],
                                "id": 10669,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2430:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10668,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2430:7:54",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10671,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2430:13:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10672,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10657,
                              "src": "2445:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10665,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9306,
                            "src": "2400:13:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 10673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2400:52:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10674,
                        "nodeType": "ExpressionStatement",
                        "src": "2400:52:54"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 10676,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10661,
                              "src": "2477:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10677,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10657,
                              "src": "2485:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10675,
                            "name": "Withdrawn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10735,
                            "src": "2467:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10678,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2467:25:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10679,
                        "nodeType": "EmitStatement",
                        "src": "2462:30:54"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10655,
                    "nodeType": "StructuredDocumentation",
                    "src": "2020:277:54",
                    "text": " Called when user wants to withdraw tokens back to the root chain.\n @dev Should escrow user's tokens. This transaction will be verified when exiting on root chain.\n @dev Emits a {Withdrawn} event.\n @param amount amount of tokens to withdraw."
                  },
                  "functionSelector": "2e1a7d4d",
                  "id": 10681,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10658,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10657,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 10681,
                        "src": "2320:14:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10656,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2320:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2319:16:54"
                  },
                  "returnParameters": {
                    "id": 10659,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2351:0:54"
                  },
                  "scope": 10716,
                  "src": "2302:197:54",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    10142
                  ],
                  "body": {
                    "id": 10714,
                    "nodeType": "Block",
                    "src": "3163:151:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 10703,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 10697,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3181:3:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 10698,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "3181:10:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 10701,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "3203:4:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_PolygonChildERC20_$10716",
                                      "typeString": "contract PolygonChildERC20"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_PolygonChildERC20_$10716",
                                      "typeString": "contract PolygonChildERC20"
                                    }
                                  ],
                                  "id": 10700,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3195:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10699,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3195:7:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 10702,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3195:13:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3181:27:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4368696c6445524332303a2077726f6e672073656e646572",
                              "id": 10704,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3210:26:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6699f127a6bd20e5f83db72bd06fef9469873a90aae291234a7345c9003f908b",
                                "typeString": "literal_string \"ChildERC20: wrong sender\""
                              },
                              "value": "ChildERC20: wrong sender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6699f127a6bd20e5f83db72bd06fef9469873a90aae291234a7345c9003f908b",
                                "typeString": "literal_string \"ChildERC20: wrong sender\""
                              }
                            ],
                            "id": 10696,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3173:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10705,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3173:64:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10706,
                        "nodeType": "ExpressionStatement",
                        "src": "3173:64:54"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 10708,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10686,
                              "src": "3262:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10709,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10688,
                              "src": "3268:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10707,
                            "name": "Withdrawn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10735,
                            "src": "3252:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3252:23:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10711,
                        "nodeType": "EmitStatement",
                        "src": "3247:28:54"
                      },
                      {
                        "expression": {
                          "id": 10712,
                          "name": "_ERC20_RECEIVED",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9841,
                          "src": "3292:15:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 10695,
                        "id": 10713,
                        "nodeType": "Return",
                        "src": "3285:22:54"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10682,
                    "nodeType": "StructuredDocumentation",
                    "src": "2634:343:54",
                    "text": " Called when user wants to withdraw tokens back to the root chain (no pre-approval required).\n @dev Should escrow user's tokens. This transaction will be verified when exiting on root chain.\n @dev Reverts if the sender is not this contract.\n @dev Emits a {Withdrawn} event.\n @inheritdoc IERC20Receiver"
                  },
                  "functionSelector": "4fc35859",
                  "id": 10715,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC20Received",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10692,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3137:8:54"
                  },
                  "parameters": {
                    "id": 10691,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10684,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10715,
                        "src": "3016:7:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10683,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3016:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10686,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 10715,
                        "src": "3046:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10685,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3046:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10688,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 10715,
                        "src": "3068:14:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10687,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3068:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10690,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10715,
                        "src": "3092:14:54",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10689,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3092:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3006:115:54"
                  },
                  "returnParameters": {
                    "id": 10695,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10694,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10715,
                        "src": "3155:6:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 10693,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "3155:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3154:8:54"
                  },
                  "scope": 10716,
                  "src": "2982:332:54",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 10717,
              "src": "636:2680:54"
            }
          ],
          "src": "33:3284:54"
        },
        "id": 54
      },
      "contracts/token/ERC20/polygon/child/PolygonChildERC20Base.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/polygon/child/PolygonChildERC20Base.sol",
          "exportedSymbols": {
            "ERC20Receiver": [
              9869
            ],
            "IERC20Receiver": [
              10143
            ],
            "IPolygonChildToken": [
              14652
            ],
            "PolygonChildERC20Base": [
              10762
            ]
          },
          "id": 10763,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10718,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:55"
            },
            {
              "absolutePath": "contracts/token/common/polygon/interfaces/IPolygonChildToken.sol",
              "file": "../../../common/polygon/interfaces/IPolygonChildToken.sol",
              "id": 10720,
              "nodeType": "ImportDirective",
              "scope": 10763,
              "sourceUnit": 14653,
              "src": "66:93:55",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10719,
                    "name": "IPolygonChildToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:18:55",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20Receiver.sol",
              "file": "./../../interfaces/IERC20Receiver.sol",
              "id": 10722,
              "nodeType": "ImportDirective",
              "scope": 10763,
              "sourceUnit": 10144,
              "src": "160:69:55",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10721,
                    "name": "IERC20Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "168:14:55",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/ERC20Receiver.sol",
              "file": "./../../ERC20Receiver.sol",
              "id": 10724,
              "nodeType": "ImportDirective",
              "scope": 10763,
              "sourceUnit": 9870,
              "src": "230:56:55",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10723,
                    "name": "ERC20Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "238:13:55",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 10726,
                    "name": "IPolygonChildToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14652,
                    "src": "787:18:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPolygonChildToken_$14652",
                      "typeString": "contract IPolygonChildToken"
                    }
                  },
                  "id": 10727,
                  "nodeType": "InheritanceSpecifier",
                  "src": "787:18:55"
                },
                {
                  "baseName": {
                    "id": 10728,
                    "name": "ERC20Receiver",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9869,
                    "src": "807:13:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Receiver_$9869",
                      "typeString": "contract ERC20Receiver"
                    }
                  },
                  "id": 10729,
                  "nodeType": "InheritanceSpecifier",
                  "src": "807:13:55"
                }
              ],
              "contractDependencies": [
                218,
                9869,
                10143,
                14652
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 10725,
                "nodeType": "StructuredDocumentation",
                "src": "288:455:55",
                "text": " @title ERC20 Child Token Base (for Polygon).\n Polygon bridging ERC20 child token which emits a `Withdrawn(address account, uint256 value)` event on exit.\n @dev This contract should be deployed on the Child Chain (Polygon).\n @dev The function `deposit(address,bytes)` needs to be implemented by a child contract.\n @dev A function `withdraw(uint256)` can be implemented by a child contract to better integrate with Polygon bridge website."
              },
              "fullyImplemented": false,
              "id": 10762,
              "linearizedBaseContracts": [
                10762,
                9869,
                218,
                10143,
                14652
              ],
              "name": "PolygonChildERC20Base",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 10735,
                  "name": "Withdrawn",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 10734,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10731,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 10735,
                        "src": "843:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10730,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "843:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10733,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 10735,
                        "src": "860:13:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10732,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "860:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "842:32:55"
                  },
                  "src": "827:48:55"
                },
                {
                  "constant": false,
                  "functionSelector": "c8291d84",
                  "id": 10737,
                  "mutability": "mutable",
                  "name": "childChainManager",
                  "nodeType": "VariableDeclaration",
                  "scope": 10762,
                  "src": "1003:32:55",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10736,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1003:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10747,
                    "nodeType": "Block",
                    "src": "1201:55:55",
                    "statements": [
                      {
                        "expression": {
                          "id": 10745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10743,
                            "name": "childChainManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10737,
                            "src": "1211:17:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 10744,
                            "name": "childChainManager_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10740,
                            "src": "1231:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1211:38:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 10746,
                        "nodeType": "ExpressionStatement",
                        "src": "1211:38:55"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10738,
                    "nodeType": "StructuredDocumentation",
                    "src": "1042:114:55",
                    "text": " Constructor\n @param childChainManager_ the Polygon/MATIC ChildChainManager proxy address."
                  },
                  "id": 10748,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10741,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10740,
                        "mutability": "mutable",
                        "name": "childChainManager_",
                        "nodeType": "VariableDeclaration",
                        "scope": 10748,
                        "src": "1173:26:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10739,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1173:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1172:28:55"
                  },
                  "returnParameters": {
                    "id": 10742,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1201:0:55"
                  },
                  "scope": 10762,
                  "src": "1161:95:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10760,
                    "nodeType": "Block",
                    "src": "1453:84:55",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 10756,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10754,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10750,
                                "src": "1471:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 10755,
                                "name": "childChainManager",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10737,
                                "src": "1482:17:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1471:28:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4368696c6445524332303a206f6e6c79206465706f7369746f72",
                              "id": 10757,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1501:28:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fa82f43e05ec6a51113778aae26466a2b91e20642643ac80a7decb3a38966c9c",
                                "typeString": "literal_string \"ChildERC20: only depositor\""
                              },
                              "value": "ChildERC20: only depositor"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fa82f43e05ec6a51113778aae26466a2b91e20642643ac80a7decb3a38966c9c",
                                "typeString": "literal_string \"ChildERC20: only depositor\""
                              }
                            ],
                            "id": 10753,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1463:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1463:67:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10759,
                        "nodeType": "ExpressionStatement",
                        "src": "1463:67:55"
                      }
                    ]
                  },
                  "id": 10761,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_requireDepositorRole",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10751,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10750,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 10761,
                        "src": "1422:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10749,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1422:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1421:17:55"
                  },
                  "returnParameters": {
                    "id": 10752,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1453:0:55"
                  },
                  "scope": 10762,
                  "src": "1391:146:55",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 10763,
              "src": "744:795:55"
            }
          ],
          "src": "33:1507:55"
        },
        "id": 55
      },
      "contracts/token/ERC20/polygon/child/PolygonChildERC20Burnable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/polygon/child/PolygonChildERC20Burnable.sol",
          "exportedSymbols": {
            "ERC20Burnable": [
              9824
            ],
            "ERC20Receiver": [
              9869
            ],
            "IERC165": [
              218
            ],
            "IERC20Receiver": [
              10143
            ],
            "PolygonChildERC20Base": [
              10762
            ],
            "PolygonChildERC20Burnable": [
              10915
            ]
          },
          "id": 10916,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10764,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:56"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 10766,
              "nodeType": "ImportDirective",
              "scope": 10916,
              "sourceUnit": 219,
              "src": "66:93:56",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10765,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:7:56",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20Receiver.sol",
              "file": "./../../interfaces/IERC20Receiver.sol",
              "id": 10768,
              "nodeType": "ImportDirective",
              "scope": 10916,
              "sourceUnit": 10144,
              "src": "160:69:56",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10767,
                    "name": "IERC20Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "168:14:56",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/polygon/child/PolygonChildERC20Base.sol",
              "file": "./PolygonChildERC20Base.sol",
              "id": 10771,
              "nodeType": "ImportDirective",
              "scope": 10916,
              "sourceUnit": 10763,
              "src": "230:81:56",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10769,
                    "name": "ERC20Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "238:13:56",
                    "typeDescriptions": {}
                  }
                },
                {
                  "foreign": {
                    "id": 10770,
                    "name": "PolygonChildERC20Base",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "253:21:56",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/ERC20Burnable.sol",
              "file": "./../../ERC20Burnable.sol",
              "id": 10773,
              "nodeType": "ImportDirective",
              "scope": 10916,
              "sourceUnit": 9825,
              "src": "312:56:56",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10772,
                    "name": "ERC20Burnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "320:13:56",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 10775,
                    "name": "ERC20Burnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9824,
                    "src": "697:13:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Burnable_$9824",
                      "typeString": "contract ERC20Burnable"
                    }
                  },
                  "id": 10776,
                  "nodeType": "InheritanceSpecifier",
                  "src": "697:13:56"
                },
                {
                  "baseName": {
                    "id": 10777,
                    "name": "PolygonChildERC20Base",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10762,
                    "src": "712:21:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PolygonChildERC20Base_$10762",
                      "typeString": "contract PolygonChildERC20Base"
                    }
                  },
                  "id": 10778,
                  "nodeType": "InheritanceSpecifier",
                  "src": "712:21:56"
                }
              ],
              "contractDependencies": [
                218,
                322,
                9715,
                9824,
                9869,
                9947,
                9971,
                10001,
                10035,
                10057,
                10067,
                10125,
                10143,
                10173,
                10762,
                14652
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 10774,
                "nodeType": "StructuredDocumentation",
                "src": "370:288:56",
                "text": " @title ERC20 Fungible Token Contract, Child Burnable version (for Polygon).\n Polygon bridging ERC20 child token which burns the token and emits a `Withdrawn(address account, uint256 value)` event on exit.\n @dev This contract should be deployed on the Child Chain (Polygon)."
              },
              "fullyImplemented": true,
              "id": 10915,
              "linearizedBaseContracts": [
                10915,
                10762,
                9869,
                9824,
                10035,
                9715,
                10125,
                10173,
                10001,
                9971,
                10067,
                10057,
                9947,
                218,
                10143,
                14652,
                322
              ],
              "name": "PolygonChildERC20Burnable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 10797,
                    "nodeType": "Block",
                    "src": "960:2:56",
                    "statements": []
                  },
                  "id": 10798,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 10789,
                          "name": "name_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10780,
                          "src": "892:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "id": 10790,
                          "name": "symbol_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10782,
                          "src": "899:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "id": 10791,
                          "name": "decimals_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10784,
                          "src": "908:9:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "id": 10792,
                      "modifierName": {
                        "id": 10788,
                        "name": "ERC20Burnable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9824,
                        "src": "878:13:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC20Burnable_$9824_$",
                          "typeString": "type(contract ERC20Burnable)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "878:40:56"
                    },
                    {
                      "arguments": [
                        {
                          "id": 10794,
                          "name": "childChainManager",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10786,
                          "src": "941:17:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 10795,
                      "modifierName": {
                        "id": 10793,
                        "name": "PolygonChildERC20Base",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10762,
                        "src": "919:21:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_PolygonChildERC20Base_$10762_$",
                          "typeString": "type(contract PolygonChildERC20Base)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "919:40:56"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10787,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10780,
                        "mutability": "mutable",
                        "name": "name_",
                        "nodeType": "VariableDeclaration",
                        "scope": 10798,
                        "src": "761:19:56",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10779,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "761:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10782,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nodeType": "VariableDeclaration",
                        "scope": 10798,
                        "src": "790:21:56",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10781,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "790:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10784,
                        "mutability": "mutable",
                        "name": "decimals_",
                        "nodeType": "VariableDeclaration",
                        "scope": 10798,
                        "src": "821:15:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 10783,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "821:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10786,
                        "mutability": "mutable",
                        "name": "childChainManager",
                        "nodeType": "VariableDeclaration",
                        "scope": 10798,
                        "src": "846:25:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10785,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "846:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "751:126:56"
                  },
                  "returnParameters": {
                    "id": 10796,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "960:0:56"
                  },
                  "scope": 10915,
                  "src": "740:222:56",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    9765,
                    9868
                  ],
                  "body": {
                    "id": 10819,
                    "nodeType": "Block",
                    "src": "1246:116:56",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 10817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 10811,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10801,
                                "src": "1295:11:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 10809,
                                "name": "ERC20Burnable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9824,
                                "src": "1263:13:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC20Burnable_$9824_$",
                                  "typeString": "type(contract ERC20Burnable)"
                                }
                              },
                              "id": 10810,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9765,
                              "src": "1263:31:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 10812,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1263:44:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 10815,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10801,
                                "src": "1343:11:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 10813,
                                "name": "ERC20Receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9869,
                                "src": "1311:13:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC20Receiver_$9869_$",
                                  "typeString": "type(contract ERC20Receiver)"
                                }
                              },
                              "id": 10814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9868,
                              "src": "1311:31:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 10816,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1311:44:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1263:92:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 10808,
                        "id": 10818,
                        "nodeType": "Return",
                        "src": "1256:99:56"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10799,
                    "nodeType": "StructuredDocumentation",
                    "src": "1097:23:56",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 10820,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10805,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 10803,
                        "name": "ERC20Burnable",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9824,
                        "src": "1201:13:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20Burnable_$9824",
                          "typeString": "contract ERC20Burnable"
                        }
                      },
                      {
                        "id": 10804,
                        "name": "ERC20Receiver",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9869,
                        "src": "1216:13:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20Receiver_$9869",
                          "typeString": "contract ERC20Receiver"
                        }
                      }
                    ],
                    "src": "1192:38:56"
                  },
                  "parameters": {
                    "id": 10802,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10801,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 10820,
                        "src": "1152:18:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 10800,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1152:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1151:20:56"
                  },
                  "returnParameters": {
                    "id": 10808,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10807,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10820,
                        "src": "1240:4:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10806,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1240:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1239:6:56"
                  },
                  "scope": 10915,
                  "src": "1125:237:56",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    14651
                  ],
                  "body": {
                    "id": 10849,
                    "nodeType": "Block",
                    "src": "1905:142:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 10830,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "1937:10:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 10831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1937:12:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 10829,
                            "name": "_requireDepositorRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10761,
                            "src": "1915:21:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 10832,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1915:35:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10833,
                        "nodeType": "ExpressionStatement",
                        "src": "1915:35:56"
                      },
                      {
                        "assignments": [
                          10835
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10835,
                            "mutability": "mutable",
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 10849,
                            "src": "1960:14:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10834,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1960:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10843,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10838,
                              "name": "depositData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10825,
                              "src": "1988:11:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 10840,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2002:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 10839,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2002:7:56",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 10841,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2001:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              }
                            ],
                            "expression": {
                              "id": 10836,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "1977:3:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 10837,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "1977:10:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 10842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1977:34:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1960:51:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10845,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10823,
                              "src": "2027:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10846,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10835,
                              "src": "2033:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10844,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9365,
                            "src": "2021:5:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10847,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2021:19:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10848,
                        "nodeType": "ExpressionStatement",
                        "src": "2021:19:56"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10821,
                    "nodeType": "StructuredDocumentation",
                    "src": "1497:326:56",
                    "text": " Called when tokens have been deposited on the root chain.\n @dev Should handle deposit by minting the required amount for user.\n @dev Reverts if not sent by the depositor (ChildChainManager).\n @param user address for whom deposit has been done.\n @param depositData abi encoded amount."
                  },
                  "functionSelector": "cf2c52cb",
                  "id": 10850,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10827,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1896:8:56"
                  },
                  "parameters": {
                    "id": 10826,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10823,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 10850,
                        "src": "1845:12:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10822,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1845:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10825,
                        "mutability": "mutable",
                        "name": "depositData",
                        "nodeType": "VariableDeclaration",
                        "scope": 10850,
                        "src": "1859:26:56",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10824,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1859:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1844:42:56"
                  },
                  "returnParameters": {
                    "id": 10828,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1905:0:56"
                  },
                  "scope": 10915,
                  "src": "1828:219:56",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 10871,
                    "nodeType": "Block",
                    "src": "2379:121:56",
                    "statements": [
                      {
                        "assignments": [
                          10857
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10857,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 10871,
                            "src": "2389:14:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 10856,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2389:7:56",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10860,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 10858,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "2406:10:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 10859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2406:12:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2389:29:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10862,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10857,
                              "src": "2438:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10863,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10853,
                              "src": "2446:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10861,
                            "name": "_burnFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9567,
                            "src": "2428:9:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2428:25:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10865,
                        "nodeType": "ExpressionStatement",
                        "src": "2428:25:56"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 10867,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10857,
                              "src": "2478:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10868,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10853,
                              "src": "2486:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10866,
                            "name": "Withdrawn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10735,
                            "src": "2468:9:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2468:25:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10870,
                        "nodeType": "EmitStatement",
                        "src": "2463:30:56"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10851,
                    "nodeType": "StructuredDocumentation",
                    "src": "2053:278:56",
                    "text": " Called when user wants to withdraw tokens back to the root chain.\n @dev Should burn user's tokens. This transaction will be verified when exiting on the root chain.\n @dev Emits a {Withdrawn} event.\n @param amount amount of tokens to withdraw"
                  },
                  "functionSelector": "2e1a7d4d",
                  "id": 10872,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10854,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10853,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 10872,
                        "src": "2354:14:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10852,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2354:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2353:16:56"
                  },
                  "returnParameters": {
                    "id": 10855,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2379:0:56"
                  },
                  "scope": 10915,
                  "src": "2336:164:56",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    10142
                  ],
                  "body": {
                    "id": 10913,
                    "nodeType": "Block",
                    "src": "3164:189:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 10894,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 10888,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3182:3:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 10889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "3182:10:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 10892,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "3204:4:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_PolygonChildERC20Burnable_$10915",
                                      "typeString": "contract PolygonChildERC20Burnable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_PolygonChildERC20Burnable_$10915",
                                      "typeString": "contract PolygonChildERC20Burnable"
                                    }
                                  ],
                                  "id": 10891,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3196:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10890,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3196:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 10893,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3196:13:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3182:27:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4368696c6445524332303a2077726f6e672073656e646572",
                              "id": 10895,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3211:26:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6699f127a6bd20e5f83db72bd06fef9469873a90aae291234a7345c9003f908b",
                                "typeString": "literal_string \"ChildERC20: wrong sender\""
                              },
                              "value": "ChildERC20: wrong sender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6699f127a6bd20e5f83db72bd06fef9469873a90aae291234a7345c9003f908b",
                                "typeString": "literal_string \"ChildERC20: wrong sender\""
                              }
                            ],
                            "id": 10887,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3174:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10896,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3174:64:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10897,
                        "nodeType": "ExpressionStatement",
                        "src": "3174:64:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10901,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3262:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_PolygonChildERC20Burnable_$10915",
                                    "typeString": "contract PolygonChildERC20Burnable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_PolygonChildERC20Burnable_$10915",
                                    "typeString": "contract PolygonChildERC20Burnable"
                                  }
                                ],
                                "id": 10900,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3254:7:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10899,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3254:7:56",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10902,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3254:13:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10903,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10879,
                              "src": "3269:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10898,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9538,
                            "src": "3248:5:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3248:28:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10905,
                        "nodeType": "ExpressionStatement",
                        "src": "3248:28:56"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 10907,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10877,
                              "src": "3301:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10908,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10879,
                              "src": "3307:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10906,
                            "name": "Withdrawn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10735,
                            "src": "3291:9:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3291:23:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10910,
                        "nodeType": "EmitStatement",
                        "src": "3286:28:56"
                      },
                      {
                        "expression": {
                          "id": 10911,
                          "name": "_ERC20_RECEIVED",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9841,
                          "src": "3331:15:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 10886,
                        "id": 10912,
                        "nodeType": "Return",
                        "src": "3324:22:56"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10873,
                    "nodeType": "StructuredDocumentation",
                    "src": "2635:341:56",
                    "text": " Called when user wants to withdraw tokens back to the root chain (no pre-approval required).\n @dev Should burn user's tokens. This transaction will be verified when exiting on root chain.\n @dev Reverts if the sender is not this contract.\n @dev Emits a {Withdrawn} event.\n @inheritdoc IERC20Receiver"
                  },
                  "functionSelector": "4fc35859",
                  "id": 10914,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC20Received",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10883,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3138:8:56"
                  },
                  "parameters": {
                    "id": 10882,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10875,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10914,
                        "src": "3015:7:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10874,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3015:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10877,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 10914,
                        "src": "3045:12:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10876,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3045:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10879,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 10914,
                        "src": "3067:14:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10878,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3067:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10881,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10914,
                        "src": "3091:14:56",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10880,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3091:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3005:115:56"
                  },
                  "returnParameters": {
                    "id": 10886,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10885,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10914,
                        "src": "3156:6:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 10884,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "3156:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3155:8:56"
                  },
                  "scope": 10915,
                  "src": "2981:372:56",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                }
              ],
              "scope": 10916,
              "src": "659:2696:56"
            }
          ],
          "src": "33:3323:56"
        },
        "id": 56
      },
      "contracts/token/ERC20/polygon/child/mocks/PolygonChildERC20BurnableMock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/polygon/child/mocks/PolygonChildERC20BurnableMock.sol",
          "exportedSymbols": {
            "IERC20Mintable": [
              10089
            ],
            "IForwarderRegistry": [
              15006
            ],
            "ManagedIdentity": [
              322
            ],
            "MinterRole": [
              125
            ],
            "PolygonChildERC20Burnable": [
              10915
            ],
            "PolygonChildERC20BurnableMock": [
              11071
            ],
            "Recoverable": [
              1253
            ],
            "UsingUniversalForwarding": [
              15172
            ]
          },
          "id": 11072,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10917,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:57"
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "id": 10919,
              "nodeType": "ImportDirective",
              "scope": 11072,
              "sourceUnit": 15007,
              "src": "66:108:57",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10918,
                    "name": "IForwarderRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:18:57",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20Mintable.sol",
              "file": "./../../../interfaces/IERC20Mintable.sol",
              "id": 10921,
              "nodeType": "ImportDirective",
              "scope": 11072,
              "sourceUnit": 10090,
              "src": "175:72:57",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10920,
                    "name": "IERC20Mintable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "183:14:57",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 10923,
              "nodeType": "ImportDirective",
              "scope": 11072,
              "sourceUnit": 323,
              "src": "248:102:57",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10922,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "256:15:57",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "id": 10925,
              "nodeType": "ImportDirective",
              "scope": 11072,
              "sourceUnit": 1265,
              "src": "351:93:57",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10924,
                    "name": "Recoverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "359:11:57",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "id": 10927,
              "nodeType": "ImportDirective",
              "scope": 11072,
              "sourceUnit": 15173,
              "src": "445:120:57",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10926,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "453:24:57",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "id": 10929,
              "nodeType": "ImportDirective",
              "scope": 11072,
              "sourceUnit": 126,
              "src": "566:92:57",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10928,
                    "name": "MinterRole",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "574:10:57",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/polygon/child/PolygonChildERC20Burnable.sol",
              "file": "./../PolygonChildERC20Burnable.sol",
              "id": 10931,
              "nodeType": "ImportDirective",
              "scope": 11072,
              "sourceUnit": 10916,
              "src": "659:77:57",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10930,
                    "name": "PolygonChildERC20Burnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "667:25:57",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 10933,
                    "name": "Recoverable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1253,
                    "src": "825:11:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Recoverable_$1253",
                      "typeString": "contract Recoverable"
                    }
                  },
                  "id": 10934,
                  "nodeType": "InheritanceSpecifier",
                  "src": "825:11:57"
                },
                {
                  "baseName": {
                    "id": 10935,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15172,
                    "src": "838:24:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                      "typeString": "contract UsingUniversalForwarding"
                    }
                  },
                  "id": 10936,
                  "nodeType": "InheritanceSpecifier",
                  "src": "838:24:57"
                },
                {
                  "baseName": {
                    "id": 10937,
                    "name": "PolygonChildERC20Burnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10915,
                    "src": "864:25:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PolygonChildERC20Burnable_$10915",
                      "typeString": "contract PolygonChildERC20Burnable"
                    }
                  },
                  "id": 10938,
                  "nodeType": "InheritanceSpecifier",
                  "src": "864:25:57"
                },
                {
                  "baseName": {
                    "id": 10939,
                    "name": "IERC20Mintable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10089,
                    "src": "891:14:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Mintable_$10089",
                      "typeString": "contract IERC20Mintable"
                    }
                  },
                  "id": 10940,
                  "nodeType": "InheritanceSpecifier",
                  "src": "891:14:57"
                },
                {
                  "baseName": {
                    "id": 10941,
                    "name": "MinterRole",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 125,
                    "src": "907:10:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MinterRole_$125",
                      "typeString": "contract MinterRole"
                    }
                  },
                  "id": 10942,
                  "nodeType": "InheritanceSpecifier",
                  "src": "907:10:57"
                }
              ],
              "contractDependencies": [
                22,
                125,
                206,
                218,
                322,
                1253,
                9715,
                9824,
                9869,
                9947,
                9971,
                10001,
                10035,
                10057,
                10067,
                10089,
                10125,
                10143,
                10173,
                10762,
                10915,
                14652,
                14994,
                15031,
                15172
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 10932,
                "nodeType": "StructuredDocumentation",
                "src": "738:44:57",
                "text": " @title Child ERC20 Burnable Mock."
              },
              "fullyImplemented": true,
              "id": 11071,
              "linearizedBaseContracts": [
                11071,
                125,
                10089,
                10915,
                10762,
                9869,
                9824,
                10035,
                9715,
                10125,
                10173,
                10001,
                9971,
                10067,
                10057,
                9947,
                218,
                10143,
                14652,
                15172,
                14994,
                15031,
                1253,
                206,
                22,
                322
              ],
              "name": "PolygonChildERC20BurnableMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 10976,
                    "nodeType": "Block",
                    "src": "1321:47:57",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10972,
                              "name": "recipients",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10945,
                              "src": "1342:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "id": 10973,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10948,
                              "src": "1354:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 10971,
                            "name": "_batchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9487,
                            "src": "1331:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory,uint256[] memory)"
                            }
                          },
                          "id": 10974,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1331:30:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10975,
                        "nodeType": "ExpressionStatement",
                        "src": "1331:30:57"
                      }
                    ]
                  },
                  "id": 10977,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "hexValue": "4368696c64204552433230204d6f636b",
                          "id": 10957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1163:18:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_98032d38820d4073e2f38f4c3159d6cc04ae853e32e3582ef726ad6e7b092ad6",
                            "typeString": "literal_string \"Child ERC20 Mock\""
                          },
                          "value": "Child ERC20 Mock"
                        },
                        {
                          "hexValue": "43453230",
                          "id": 10958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1183:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_7ccb43aa1226c45c2bd51238b9b61769ab2f737ada1ae7b4d2dc6aa47437d8d4",
                            "typeString": "literal_string \"CE20\""
                          },
                          "value": "CE20"
                        },
                        {
                          "hexValue": "3138",
                          "id": 10959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1191:2:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18_by_1",
                            "typeString": "int_const 18"
                          },
                          "value": "18"
                        },
                        {
                          "id": 10960,
                          "name": "childChainManager",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10950,
                          "src": "1195:17:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 10961,
                      "modifierName": {
                        "id": 10956,
                        "name": "PolygonChildERC20Burnable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10915,
                        "src": "1137:25:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_PolygonChildERC20Burnable_$10915_$",
                          "typeString": "type(contract PolygonChildERC20Burnable)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1137:76:57"
                    },
                    {
                      "arguments": [
                        {
                          "expression": {
                            "id": 10963,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1233:3:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 10964,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1233:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "id": 10965,
                      "modifierName": {
                        "id": 10962,
                        "name": "MinterRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 125,
                        "src": "1222:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MinterRole_$125_$",
                          "typeString": "type(contract MinterRole)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1222:22:57"
                    },
                    {
                      "arguments": [
                        {
                          "id": 10967,
                          "name": "forwarderRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10952,
                          "src": "1278:17:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        {
                          "id": 10968,
                          "name": "universalForwarder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10954,
                          "src": "1297:18:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 10969,
                      "modifierName": {
                        "id": 10966,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15172,
                        "src": "1253:24:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                          "typeString": "type(contract UsingUniversalForwarding)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1253:63:57"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10955,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10945,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 10977,
                        "src": "945:27:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10943,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "945:7:57",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 10944,
                          "nodeType": "ArrayTypeName",
                          "src": "945:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10948,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 10977,
                        "src": "982:23:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10946,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "982:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10947,
                          "nodeType": "ArrayTypeName",
                          "src": "982:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10950,
                        "mutability": "mutable",
                        "name": "childChainManager",
                        "nodeType": "VariableDeclaration",
                        "scope": 10977,
                        "src": "1015:25:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10949,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1015:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10952,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 10977,
                        "src": "1050:36:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 10951,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15006,
                          "src": "1050:18:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10954,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 10977,
                        "src": "1096:26:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10953,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1096:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "935:193:57"
                  },
                  "returnParameters": {
                    "id": 10970,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1321:0:57"
                  },
                  "scope": 11071,
                  "src": "924:444:57",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10992,
                    "nodeType": "Block",
                    "src": "1721:79:57",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 10984,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  11048
                                ],
                                "referencedDeclaration": 11048,
                                "src": "1749:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 10985,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1749:12:57",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 10983,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "1731:17:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 10986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1731:31:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10987,
                        "nodeType": "ExpressionStatement",
                        "src": "1731:31:57"
                      },
                      {
                        "expression": {
                          "id": 10990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10988,
                            "name": "_tokenURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8194,
                            "src": "1772:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 10989,
                            "name": "tokenURI_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10980,
                            "src": "1784:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "1772:21:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 10991,
                        "nodeType": "ExpressionStatement",
                        "src": "1772:21:57"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10978,
                    "nodeType": "StructuredDocumentation",
                    "src": "1503:156:57",
                    "text": " Sets the token metadata URI.\n @dev Reverts if not called by the contract owner.\n @param tokenURI_ the new token metadata URI."
                  },
                  "functionSelector": "e0df5b6f",
                  "id": 10993,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setTokenURI",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10981,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10980,
                        "mutability": "mutable",
                        "name": "tokenURI_",
                        "nodeType": "VariableDeclaration",
                        "scope": 10993,
                        "src": "1685:25:57",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10979,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1685:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1684:27:57"
                  },
                  "returnParameters": {
                    "id": 10982,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1721:0:57"
                  },
                  "scope": 11071,
                  "src": "1664:136:57",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    10078
                  ],
                  "body": {
                    "id": 11012,
                    "nodeType": "Block",
                    "src": "2087:71:57",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 11003,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  11048
                                ],
                                "referencedDeclaration": 11048,
                                "src": "2112:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 11004,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2112:12:57",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 11002,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "2097:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 11005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2097:28:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11006,
                        "nodeType": "ExpressionStatement",
                        "src": "2097:28:57"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11008,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10996,
                              "src": "2141:2:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 11009,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10998,
                              "src": "2145:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11007,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9365,
                            "src": "2135:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 11010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2135:16:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11011,
                        "nodeType": "ExpressionStatement",
                        "src": "2135:16:57"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10994,
                    "nodeType": "StructuredDocumentation",
                    "src": "1935:82:57",
                    "text": "@inheritdoc IERC20Mintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "40c10f19",
                  "id": 11013,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11000,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2078:8:57"
                  },
                  "parameters": {
                    "id": 10999,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10996,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 11013,
                        "src": "2036:10:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10995,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2036:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10998,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 11013,
                        "src": "2048:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10997,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2048:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2035:27:57"
                  },
                  "returnParameters": {
                    "id": 11001,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2087:0:57"
                  },
                  "scope": 11071,
                  "src": "2022:136:57",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    10088
                  ],
                  "body": {
                    "id": 11034,
                    "nodeType": "Block",
                    "src": "2348:85:57",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 11025,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  11048
                                ],
                                "referencedDeclaration": 11048,
                                "src": "2373:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 11026,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2373:12:57",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 11024,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "2358:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 11027,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2358:28:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11028,
                        "nodeType": "ExpressionStatement",
                        "src": "2358:28:57"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11030,
                              "name": "recipients",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11017,
                              "src": "2407:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "id": 11031,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11020,
                              "src": "2419:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 11029,
                            "name": "_batchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9487,
                            "src": "2396:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory,uint256[] memory)"
                            }
                          },
                          "id": 11032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2396:30:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11033,
                        "nodeType": "ExpressionStatement",
                        "src": "2396:30:57"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11014,
                    "nodeType": "StructuredDocumentation",
                    "src": "2164:82:57",
                    "text": "@inheritdoc IERC20Mintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "68573107",
                  "id": 11035,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11022,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2339:8:57"
                  },
                  "parameters": {
                    "id": 11021,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11017,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 11035,
                        "src": "2270:27:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11015,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2270:7:57",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 11016,
                          "nodeType": "ArrayTypeName",
                          "src": "2270:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11020,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 11035,
                        "src": "2299:23:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11018,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2299:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11019,
                          "nodeType": "ArrayTypeName",
                          "src": "2299:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2269:54:57"
                  },
                  "returnParameters": {
                    "id": 11023,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2348:0:57"
                  },
                  "scope": 11071,
                  "src": "2251:182:57",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    312,
                    15126
                  ],
                  "body": {
                    "id": 11047,
                    "nodeType": "Block",
                    "src": "2690:61:57",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 11043,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "2707:24:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 11044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgSender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15126,
                            "src": "2707:35:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 11045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2707:37:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 11042,
                        "id": 11046,
                        "nodeType": "Return",
                        "src": "2700:44:57"
                      }
                    ]
                  },
                  "id": 11048,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11039,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 11037,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "2621:15:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 11038,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "2638:24:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "2612:51:57"
                  },
                  "parameters": {
                    "id": 11036,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2587:2:57"
                  },
                  "returnParameters": {
                    "id": 11042,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11041,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11048,
                        "src": "2673:15:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 11040,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2673:15:57",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2672:17:57"
                  },
                  "scope": 11071,
                  "src": "2568:183:57",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    321,
                    15171
                  ],
                  "body": {
                    "id": 11060,
                    "nodeType": "Block",
                    "src": "2878:59:57",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 11056,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "2895:24:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 11057,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15171,
                            "src": "2895:33:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$",
                              "typeString": "function () view returns (bytes calldata)"
                            }
                          },
                          "id": 11058,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2895:35:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 11055,
                        "id": 11059,
                        "nodeType": "Return",
                        "src": "2888:42:57"
                      }
                    ]
                  },
                  "id": 11061,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11052,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 11050,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "2808:15:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 11051,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "2825:24:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "2799:51:57"
                  },
                  "parameters": {
                    "id": 11049,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2774:2:57"
                  },
                  "returnParameters": {
                    "id": 11055,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11054,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 11061,
                        "src": "2860:16:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 11053,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2860:5:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2859:18:57"
                  },
                  "scope": 11071,
                  "src": "2757:180:57",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11069,
                    "nodeType": "Block",
                    "src": "3132:34:57",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 11066,
                            "name": "_msgData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              11061
                            ],
                            "referencedDeclaration": 11061,
                            "src": "3149:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () view returns (bytes memory)"
                            }
                          },
                          "id": 11067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3149:10:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 11065,
                        "id": 11068,
                        "nodeType": "Return",
                        "src": "3142:17:57"
                      }
                    ]
                  },
                  "functionSelector": "c4c2bfdc",
                  "id": 11070,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11062,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3088:2:57"
                  },
                  "returnParameters": {
                    "id": 11065,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11064,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 11070,
                        "src": "3114:16:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 11063,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3114:5:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3113:18:57"
                  },
                  "scope": 11071,
                  "src": "3072:94:57",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 11072,
              "src": "783:2385:57"
            }
          ],
          "src": "33:3136:57"
        },
        "id": 57
      },
      "contracts/token/ERC20/polygon/child/mocks/PolygonChildERC20Mock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/polygon/child/mocks/PolygonChildERC20Mock.sol",
          "exportedSymbols": {
            "ERC20Wrapper": [
              463
            ],
            "IERC20Mintable": [
              10089
            ],
            "IForwarderRegistry": [
              15006
            ],
            "IWrappedERC20": [
              493
            ],
            "ManagedIdentity": [
              322
            ],
            "MinterRole": [
              125
            ],
            "PolygonChildERC20": [
              10716
            ],
            "PolygonChildERC20Mock": [
              11406
            ],
            "Recoverable": [
              1253
            ],
            "UsingUniversalForwarding": [
              15172
            ]
          },
          "id": 11407,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11073,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:58"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol",
              "id": 11076,
              "nodeType": "ImportDirective",
              "scope": 11407,
              "sourceUnit": 494,
              "src": "66:110:58",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11074,
                    "name": "IWrappedERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:13:58",
                    "typeDescriptions": {}
                  }
                },
                {
                  "foreign": {
                    "id": 11075,
                    "name": "ERC20Wrapper",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "89:12:58",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "id": 11078,
              "nodeType": "ImportDirective",
              "scope": 11407,
              "sourceUnit": 15007,
              "src": "177:108:58",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11077,
                    "name": "IForwarderRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "185:18:58",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/interfaces/IERC20Mintable.sol",
              "file": "./../../../interfaces/IERC20Mintable.sol",
              "id": 11080,
              "nodeType": "ImportDirective",
              "scope": 11407,
              "sourceUnit": 10090,
              "src": "286:72:58",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11079,
                    "name": "IERC20Mintable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "294:14:58",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 11082,
              "nodeType": "ImportDirective",
              "scope": 11407,
              "sourceUnit": 323,
              "src": "359:102:58",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11081,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "367:15:58",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "id": 11084,
              "nodeType": "ImportDirective",
              "scope": 11407,
              "sourceUnit": 1265,
              "src": "462:93:58",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11083,
                    "name": "Recoverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "470:11:58",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "id": 11086,
              "nodeType": "ImportDirective",
              "scope": 11407,
              "sourceUnit": 15173,
              "src": "556:120:58",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11085,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "564:24:58",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "id": 11088,
              "nodeType": "ImportDirective",
              "scope": 11407,
              "sourceUnit": 126,
              "src": "677:92:58",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11087,
                    "name": "MinterRole",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "685:10:58",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/polygon/child/PolygonChildERC20.sol",
              "file": "./../PolygonChildERC20.sol",
              "id": 11090,
              "nodeType": "ImportDirective",
              "scope": 11407,
              "sourceUnit": 10717,
              "src": "770:61:58",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11089,
                    "name": "PolygonChildERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "778:17:58",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 11092,
                    "name": "Recoverable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1253,
                    "src": "903:11:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Recoverable_$1253",
                      "typeString": "contract Recoverable"
                    }
                  },
                  "id": 11093,
                  "nodeType": "InheritanceSpecifier",
                  "src": "903:11:58"
                },
                {
                  "baseName": {
                    "id": 11094,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15172,
                    "src": "916:24:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                      "typeString": "contract UsingUniversalForwarding"
                    }
                  },
                  "id": 11095,
                  "nodeType": "InheritanceSpecifier",
                  "src": "916:24:58"
                },
                {
                  "baseName": {
                    "id": 11096,
                    "name": "PolygonChildERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10716,
                    "src": "942:17:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PolygonChildERC20_$10716",
                      "typeString": "contract PolygonChildERC20"
                    }
                  },
                  "id": 11097,
                  "nodeType": "InheritanceSpecifier",
                  "src": "942:17:58"
                },
                {
                  "baseName": {
                    "id": 11098,
                    "name": "IERC20Mintable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10089,
                    "src": "961:14:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Mintable_$10089",
                      "typeString": "contract IERC20Mintable"
                    }
                  },
                  "id": 11099,
                  "nodeType": "InheritanceSpecifier",
                  "src": "961:14:58"
                },
                {
                  "baseName": {
                    "id": 11100,
                    "name": "MinterRole",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 125,
                    "src": "977:10:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MinterRole_$125",
                      "typeString": "contract MinterRole"
                    }
                  },
                  "id": 11101,
                  "nodeType": "InheritanceSpecifier",
                  "src": "977:10:58"
                }
              ],
              "contractDependencies": [
                22,
                125,
                206,
                218,
                322,
                1253,
                9715,
                9869,
                9947,
                9971,
                10001,
                10057,
                10067,
                10089,
                10125,
                10143,
                10173,
                10716,
                10762,
                14652,
                14994,
                15031,
                15172
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 11091,
                "nodeType": "StructuredDocumentation",
                "src": "833:35:58",
                "text": " @title Child ERC20 Mock."
              },
              "fullyImplemented": true,
              "id": 11406,
              "linearizedBaseContracts": [
                11406,
                125,
                10089,
                10716,
                10762,
                9869,
                9715,
                10125,
                10173,
                10001,
                9971,
                10067,
                10057,
                9947,
                218,
                10143,
                14652,
                15172,
                14994,
                15031,
                1253,
                206,
                22,
                322
              ],
              "name": "PolygonChildERC20Mock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 11104,
                  "libraryName": {
                    "id": 11102,
                    "name": "ERC20Wrapper",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 463,
                    "src": "1000:12:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Wrapper_$463",
                      "typeString": "library ERC20Wrapper"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "994:37:58",
                  "typeName": {
                    "id": 11103,
                    "name": "IWrappedERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 493,
                    "src": "1017:13:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                      "typeString": "contract IWrappedERC20"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 11106,
                  "mutability": "mutable",
                  "name": "_inEscrow",
                  "nodeType": "VariableDeclaration",
                  "scope": 11406,
                  "src": "1037:26:58",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11105,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1037:7:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11140,
                    "nodeType": "Block",
                    "src": "1459:47:58",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11136,
                              "name": "recipients",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11109,
                              "src": "1480:10:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "id": 11137,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11112,
                              "src": "1492:6:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 11135,
                            "name": "_batchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9487,
                            "src": "1469:10:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory,uint256[] memory)"
                            }
                          },
                          "id": 11138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1469:30:58",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11139,
                        "nodeType": "ExpressionStatement",
                        "src": "1469:30:58"
                      }
                    ]
                  },
                  "id": 11141,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "hexValue": "4368696c64204552433230204d6f636b",
                          "id": 11121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1301:18:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_98032d38820d4073e2f38f4c3159d6cc04ae853e32e3582ef726ad6e7b092ad6",
                            "typeString": "literal_string \"Child ERC20 Mock\""
                          },
                          "value": "Child ERC20 Mock"
                        },
                        {
                          "hexValue": "43453230",
                          "id": 11122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1321:6:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_7ccb43aa1226c45c2bd51238b9b61769ab2f737ada1ae7b4d2dc6aa47437d8d4",
                            "typeString": "literal_string \"CE20\""
                          },
                          "value": "CE20"
                        },
                        {
                          "hexValue": "3138",
                          "id": 11123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1329:2:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18_by_1",
                            "typeString": "int_const 18"
                          },
                          "value": "18"
                        },
                        {
                          "id": 11124,
                          "name": "childChainManager",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11114,
                          "src": "1333:17:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 11125,
                      "modifierName": {
                        "id": 11120,
                        "name": "PolygonChildERC20",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10716,
                        "src": "1283:17:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_PolygonChildERC20_$10716_$",
                          "typeString": "type(contract PolygonChildERC20)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1283:68:58"
                    },
                    {
                      "arguments": [
                        {
                          "expression": {
                            "id": 11127,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1371:3:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 11128,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1371:10:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "id": 11129,
                      "modifierName": {
                        "id": 11126,
                        "name": "MinterRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 125,
                        "src": "1360:10:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MinterRole_$125_$",
                          "typeString": "type(contract MinterRole)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1360:22:58"
                    },
                    {
                      "arguments": [
                        {
                          "id": 11131,
                          "name": "forwarderRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11116,
                          "src": "1416:17:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        {
                          "id": 11132,
                          "name": "universalForwarder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11118,
                          "src": "1435:18:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 11133,
                      "modifierName": {
                        "id": 11130,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15172,
                        "src": "1391:24:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                          "typeString": "type(contract UsingUniversalForwarding)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1391:63:58"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11119,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11109,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 11141,
                        "src": "1091:27:58",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11107,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1091:7:58",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 11108,
                          "nodeType": "ArrayTypeName",
                          "src": "1091:9:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11112,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 11141,
                        "src": "1128:23:58",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11110,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1128:7:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11111,
                          "nodeType": "ArrayTypeName",
                          "src": "1128:9:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11114,
                        "mutability": "mutable",
                        "name": "childChainManager",
                        "nodeType": "VariableDeclaration",
                        "scope": 11141,
                        "src": "1161:25:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11113,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1161:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11116,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 11141,
                        "src": "1196:36:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 11115,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15006,
                          "src": "1196:18:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11118,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 11141,
                        "src": "1242:26:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11117,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1242:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1081:193:58"
                  },
                  "returnParameters": {
                    "id": 11134,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1459:0:58"
                  },
                  "scope": 11406,
                  "src": "1070:436:58",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11156,
                    "nodeType": "Block",
                    "src": "1859:79:58",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 11148,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  11383
                                ],
                                "referencedDeclaration": 11383,
                                "src": "1887:10:58",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 11149,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1887:12:58",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 11147,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "1869:17:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 11150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1869:31:58",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11151,
                        "nodeType": "ExpressionStatement",
                        "src": "1869:31:58"
                      },
                      {
                        "expression": {
                          "id": 11154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11152,
                            "name": "_tokenURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8194,
                            "src": "1910:9:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 11153,
                            "name": "tokenURI_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11144,
                            "src": "1922:9:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "1910:21:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 11155,
                        "nodeType": "ExpressionStatement",
                        "src": "1910:21:58"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11142,
                    "nodeType": "StructuredDocumentation",
                    "src": "1641:156:58",
                    "text": " Sets the token metadata URI.\n @dev Reverts if not called by the contract owner.\n @param tokenURI_ the new token metadata URI."
                  },
                  "functionSelector": "e0df5b6f",
                  "id": 11157,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setTokenURI",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11145,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11144,
                        "mutability": "mutable",
                        "name": "tokenURI_",
                        "nodeType": "VariableDeclaration",
                        "scope": 11157,
                        "src": "1823:25:58",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11143,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1823:6:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1822:27:58"
                  },
                  "returnParameters": {
                    "id": 11146,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1859:0:58"
                  },
                  "scope": 11406,
                  "src": "1802:136:58",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    10078
                  ],
                  "body": {
                    "id": 11176,
                    "nodeType": "Block",
                    "src": "2225:71:58",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 11167,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  11383
                                ],
                                "referencedDeclaration": 11383,
                                "src": "2250:10:58",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 11168,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2250:12:58",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 11166,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "2235:14:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 11169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2235:28:58",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11170,
                        "nodeType": "ExpressionStatement",
                        "src": "2235:28:58"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11172,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11160,
                              "src": "2279:2:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 11173,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11162,
                              "src": "2283:5:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11171,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9365,
                            "src": "2273:5:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 11174,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2273:16:58",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11175,
                        "nodeType": "ExpressionStatement",
                        "src": "2273:16:58"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11158,
                    "nodeType": "StructuredDocumentation",
                    "src": "2073:82:58",
                    "text": "@inheritdoc IERC20Mintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "40c10f19",
                  "id": 11177,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11164,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2216:8:58"
                  },
                  "parameters": {
                    "id": 11163,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11160,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 11177,
                        "src": "2174:10:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11159,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2174:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11162,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 11177,
                        "src": "2186:13:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11161,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2186:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2173:27:58"
                  },
                  "returnParameters": {
                    "id": 11165,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2225:0:58"
                  },
                  "scope": 11406,
                  "src": "2160:136:58",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    10088
                  ],
                  "body": {
                    "id": 11198,
                    "nodeType": "Block",
                    "src": "2486:85:58",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 11189,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  11383
                                ],
                                "referencedDeclaration": 11383,
                                "src": "2511:10:58",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 11190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2511:12:58",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 11188,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "2496:14:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 11191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2496:28:58",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11192,
                        "nodeType": "ExpressionStatement",
                        "src": "2496:28:58"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11194,
                              "name": "recipients",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11181,
                              "src": "2545:10:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "id": 11195,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11184,
                              "src": "2557:6:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 11193,
                            "name": "_batchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9487,
                            "src": "2534:10:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory,uint256[] memory)"
                            }
                          },
                          "id": 11196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2534:30:58",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11197,
                        "nodeType": "ExpressionStatement",
                        "src": "2534:30:58"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11178,
                    "nodeType": "StructuredDocumentation",
                    "src": "2302:82:58",
                    "text": "@inheritdoc IERC20Mintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "68573107",
                  "id": 11199,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11186,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2477:8:58"
                  },
                  "parameters": {
                    "id": 11185,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11181,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 11199,
                        "src": "2408:27:58",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11179,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2408:7:58",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 11180,
                          "nodeType": "ArrayTypeName",
                          "src": "2408:9:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11184,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 11199,
                        "src": "2437:23:58",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11182,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2437:7:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11183,
                          "nodeType": "ArrayTypeName",
                          "src": "2437:9:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2407:54:58"
                  },
                  "returnParameters": {
                    "id": 11187,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2486:0:58"
                  },
                  "scope": 11406,
                  "src": "2389:182:58",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    10654
                  ],
                  "body": {
                    "id": 11225,
                    "nodeType": "Block",
                    "src": "2827:106:58",
                    "statements": [
                      {
                        "expression": {
                          "id": 11216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11208,
                            "name": "_inEscrow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11106,
                            "src": "2837:9:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 11211,
                                "name": "depositData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11204,
                                "src": "2861:11:58",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 11213,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2875:7:58",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 11212,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2875:7:58",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 11214,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2874:9:58",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "expression": {
                                "id": 11209,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2850:3:58",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 11210,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "2850:10:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 11215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2850:34:58",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2837:47:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11217,
                        "nodeType": "ExpressionStatement",
                        "src": "2837:47:58"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11221,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11202,
                              "src": "2908:4:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 11222,
                              "name": "depositData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11204,
                              "src": "2914:11:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "id": 11218,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "2894:5:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_PolygonChildERC20Mock_$11406",
                                "typeString": "contract super PolygonChildERC20Mock"
                              }
                            },
                            "id": 11220,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10654,
                            "src": "2894:13:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_calldata_ptr_$returns$__$",
                              "typeString": "function (address,bytes calldata)"
                            }
                          },
                          "id": 11223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2894:32:58",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11224,
                        "nodeType": "ExpressionStatement",
                        "src": "2894:32:58"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11200,
                    "nodeType": "StructuredDocumentation",
                    "src": "2706:33:58",
                    "text": "@inheritdoc PolygonChildERC20"
                  },
                  "functionSelector": "cf2c52cb",
                  "id": 11226,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11206,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2818:8:58"
                  },
                  "parameters": {
                    "id": 11205,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11202,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 11226,
                        "src": "2761:12:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11201,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2761:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11204,
                        "mutability": "mutable",
                        "name": "depositData",
                        "nodeType": "VariableDeclaration",
                        "scope": 11226,
                        "src": "2775:26:58",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 11203,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2775:5:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2760:42:58"
                  },
                  "returnParameters": {
                    "id": 11207,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2827:0:58"
                  },
                  "scope": 11406,
                  "src": "2744:189:58",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    10681
                  ],
                  "body": {
                    "id": 11243,
                    "nodeType": "Block",
                    "src": "3035:68:58",
                    "statements": [
                      {
                        "expression": {
                          "id": 11235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11233,
                            "name": "_inEscrow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11106,
                            "src": "3045:9:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 11234,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11229,
                            "src": "3058:6:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3045:19:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11236,
                        "nodeType": "ExpressionStatement",
                        "src": "3045:19:58"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11240,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11229,
                              "src": "3089:6:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 11237,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "3074:5:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_PolygonChildERC20Mock_$11406",
                                "typeString": "contract super PolygonChildERC20Mock"
                              }
                            },
                            "id": 11239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "withdraw",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10681,
                            "src": "3074:14:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 11241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3074:22:58",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11242,
                        "nodeType": "ExpressionStatement",
                        "src": "3074:22:58"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11227,
                    "nodeType": "StructuredDocumentation",
                    "src": "2939:33:58",
                    "text": "@inheritdoc PolygonChildERC20"
                  },
                  "functionSelector": "2e1a7d4d",
                  "id": 11244,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11231,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3026:8:58"
                  },
                  "parameters": {
                    "id": 11230,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11229,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 11244,
                        "src": "2995:14:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11228,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2995:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2994:16:58"
                  },
                  "returnParameters": {
                    "id": 11232,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3035:0:58"
                  },
                  "scope": 11406,
                  "src": "2977:126:58",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    10715
                  ],
                  "body": {
                    "id": 11271,
                    "nodeType": "Block",
                    "src": "3320:104:58",
                    "statements": [
                      {
                        "expression": {
                          "id": 11261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11259,
                            "name": "_inEscrow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11106,
                            "src": "3330:9:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 11260,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11251,
                            "src": "3343:6:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3330:19:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11262,
                        "nodeType": "ExpressionStatement",
                        "src": "3330:19:58"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11265,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11247,
                              "src": "3388:8:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 11266,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11249,
                              "src": "3398:4:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 11267,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11251,
                              "src": "3404:6:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 11268,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11253,
                              "src": "3412:4:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "id": 11263,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "3366:5:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_PolygonChildERC20Mock_$11406",
                                "typeString": "contract super PolygonChildERC20Mock"
                              }
                            },
                            "id": 11264,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "onERC20Received",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10715,
                            "src": "3366:21:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (address,address,uint256,bytes calldata) returns (bytes4)"
                            }
                          },
                          "id": 11269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3366:51:58",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 11258,
                        "id": 11270,
                        "nodeType": "Return",
                        "src": "3359:58:58"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11245,
                    "nodeType": "StructuredDocumentation",
                    "src": "3109:33:58",
                    "text": "@inheritdoc PolygonChildERC20"
                  },
                  "functionSelector": "4fc35859",
                  "id": 11272,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC20Received",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11255,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3294:8:58"
                  },
                  "parameters": {
                    "id": 11254,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11247,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 11272,
                        "src": "3181:16:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11246,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3181:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11249,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 11272,
                        "src": "3207:12:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11248,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3207:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11251,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 11272,
                        "src": "3229:14:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11250,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3229:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11253,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 11272,
                        "src": "3253:19:58",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 11252,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3253:5:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3171:107:58"
                  },
                  "returnParameters": {
                    "id": 11258,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11257,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11272,
                        "src": "3312:6:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 11256,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "3312:6:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3311:8:58"
                  },
                  "scope": 11406,
                  "src": "3147:277:58",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1185
                  ],
                  "body": {
                    "id": 11369,
                    "nodeType": "Block",
                    "src": "3890:610:58",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 11287,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  11383
                                ],
                                "referencedDeclaration": 11383,
                                "src": "3918:10:58",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 11288,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3918:12:58",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 11286,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "3900:17:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 11289,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3900:31:58",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11290,
                        "nodeType": "ExpressionStatement",
                        "src": "3900:31:58"
                      },
                      {
                        "assignments": [
                          11292
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11292,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 11369,
                            "src": "3941:14:58",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11291,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3941:7:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11295,
                        "initialValue": {
                          "expression": {
                            "id": 11293,
                            "name": "accounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11276,
                            "src": "3958:8:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 11294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "3958:15:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3941:32:58"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 11305,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11300,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11297,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11292,
                                  "src": "3991:6:58",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 11298,
                                    "name": "tokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11279,
                                    "src": "4001:6:58",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 11299,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "4001:13:58",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3991:23:58",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11301,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11292,
                                  "src": "4018:6:58",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 11302,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11282,
                                    "src": "4028:7:58",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 11303,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "4028:14:58",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4018:24:58",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3991:51:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5265636f763a20696e636f6e73697374656e7420617272617973",
                              "id": 11306,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4044:28:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_94fd14b31909e8a28766c62160ac56dbfb2493c47530b1850f5c284b271cf34e",
                                "typeString": "literal_string \"Recov: inconsistent arrays\""
                              },
                              "value": "Recov: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_94fd14b31909e8a28766c62160ac56dbfb2493c47530b1850f5c284b271cf34e",
                                "typeString": "literal_string \"Recov: inconsistent arrays\""
                              }
                            ],
                            "id": 11296,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3983:7:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3983:90:58",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11308,
                        "nodeType": "ExpressionStatement",
                        "src": "3983:90:58"
                      },
                      {
                        "body": {
                          "id": 11367,
                          "nodeType": "Block",
                          "src": "4121:373:58",
                          "statements": [
                            {
                              "assignments": [
                                11320
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11320,
                                  "mutability": "mutable",
                                  "name": "token",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 11367,
                                  "src": "4135:13:58",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 11319,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4135:7:58",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11324,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 11321,
                                  "name": "tokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11279,
                                  "src": "4151:6:58",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 11323,
                                "indexExpression": {
                                  "id": 11322,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11310,
                                  "src": "4158:1:58",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4151:9:58",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4135:25:58"
                            },
                            {
                              "assignments": [
                                11326
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11326,
                                  "mutability": "mutable",
                                  "name": "amount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 11367,
                                  "src": "4174:14:58",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 11325,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4174:7:58",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11330,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 11327,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11282,
                                  "src": "4191:7:58",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 11329,
                                "indexExpression": {
                                  "id": 11328,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11310,
                                  "src": "4199:1:58",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4191:10:58",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4174:27:58"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 11336,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11331,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11320,
                                  "src": "4219:5:58",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 11334,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "4236:4:58",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_PolygonChildERC20Mock_$11406",
                                        "typeString": "contract PolygonChildERC20Mock"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_PolygonChildERC20Mock_$11406",
                                        "typeString": "contract PolygonChildERC20Mock"
                                      }
                                    ],
                                    "id": 11333,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4228:7:58",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 11332,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4228:7:58",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 11335,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4228:13:58",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4219:22:58",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 11356,
                              "nodeType": "IfStatement",
                              "src": "4215:198:58",
                              "trueBody": {
                                "id": 11355,
                                "nodeType": "Block",
                                "src": "4243:170:58",
                                "statements": [
                                  {
                                    "assignments": [
                                      11338
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 11338,
                                        "mutability": "mutable",
                                        "name": "recoverable",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 11355,
                                        "src": "4261:19:58",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 11337,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "4261:7:58",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 11347,
                                    "initialValue": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 11346,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "baseExpression": {
                                          "id": 11339,
                                          "name": "_balances",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8198,
                                          "src": "4283:9:58",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                          }
                                        },
                                        "id": 11344,
                                        "indexExpression": {
                                          "arguments": [
                                            {
                                              "id": 11342,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -28,
                                              "src": "4301:4:58",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_PolygonChildERC20Mock_$11406",
                                                "typeString": "contract PolygonChildERC20Mock"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_PolygonChildERC20Mock_$11406",
                                                "typeString": "contract PolygonChildERC20Mock"
                                              }
                                            ],
                                            "id": 11341,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "4293:7:58",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 11340,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "4293:7:58",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 11343,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4293:13:58",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4283:24:58",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 11345,
                                        "name": "_inEscrow",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11106,
                                        "src": "4310:9:58",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4283:36:58",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4261:58:58"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 11351,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 11349,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 11326,
                                            "src": "4345:6:58",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<=",
                                          "rightExpression": {
                                            "id": 11350,
                                            "name": "recoverable",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 11338,
                                            "src": "4355:11:58",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "4345:21:58",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "5265636f763a20696e73756666696369656e742062616c616e6365",
                                          "id": 11352,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4368:29:58",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_2fe4a6afffff47124f16b11a2844c43d8e8ec798283fd1af4b7088da431f421f",
                                            "typeString": "literal_string \"Recov: insufficient balance\""
                                          },
                                          "value": "Recov: insufficient balance"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_2fe4a6afffff47124f16b11a2844c43d8e8ec798283fd1af4b7088da431f421f",
                                            "typeString": "literal_string \"Recov: insufficient balance\""
                                          }
                                        ],
                                        "id": 11348,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "4337:7:58",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 11353,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4337:61:58",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 11354,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4337:61:58"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 11361,
                                      "name": "accounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11276,
                                      "src": "4463:8:58",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 11363,
                                    "indexExpression": {
                                      "id": 11362,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11310,
                                      "src": "4472:1:58",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4463:11:58",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 11364,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11326,
                                    "src": "4476:6:58",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 11358,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11320,
                                        "src": "4440:5:58",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 11357,
                                      "name": "IWrappedERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 493,
                                      "src": "4426:13:58",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IWrappedERC20_$493_$",
                                        "typeString": "type(contract IWrappedERC20)"
                                      }
                                    },
                                    "id": 11359,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4426:20:58",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                      "typeString": "contract IWrappedERC20"
                                    }
                                  },
                                  "id": 11360,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "wrappedTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 352,
                                  "src": "4426:36:58",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IWrappedERC20_$493_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IWrappedERC20_$493_$",
                                    "typeString": "function (contract IWrappedERC20,address,uint256)"
                                  }
                                },
                                "id": 11365,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4426:57:58",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 11366,
                              "nodeType": "ExpressionStatement",
                              "src": "4426:57:58"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11313,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11310,
                            "src": "4103:1:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 11314,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11292,
                            "src": "4108:6:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4103:11:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11368,
                        "initializationExpression": {
                          "assignments": [
                            11310
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 11310,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 11368,
                              "src": "4088:9:58",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 11309,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4088:7:58",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 11312,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 11311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4100:1:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4088:13:58"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 11317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "4116:3:58",
                            "subExpression": {
                              "id": 11316,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11310,
                              "src": "4118:1:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11318,
                          "nodeType": "ExpressionStatement",
                          "src": "4116:3:58"
                        },
                        "nodeType": "ForStatement",
                        "src": "4083:411:58"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11273,
                    "nodeType": "StructuredDocumentation",
                    "src": "3559:163:58",
                    "text": "@inheritdoc Recoverable\n @dev Reverts if one of `tokens` is this contract and if the amount being recovered corresponds to escrowed tokens for bridging."
                  },
                  "functionSelector": "73c8a958",
                  "id": 11370,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recoverERC20s",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11284,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3881:8:58"
                  },
                  "parameters": {
                    "id": 11283,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11276,
                        "mutability": "mutable",
                        "name": "accounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 11370,
                        "src": "3759:27:58",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11274,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3759:7:58",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 11275,
                          "nodeType": "ArrayTypeName",
                          "src": "3759:9:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11279,
                        "mutability": "mutable",
                        "name": "tokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 11370,
                        "src": "3796:25:58",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11277,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3796:7:58",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 11278,
                          "nodeType": "ArrayTypeName",
                          "src": "3796:9:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11282,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 11370,
                        "src": "3831:26:58",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11280,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3831:7:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11281,
                          "nodeType": "ArrayTypeName",
                          "src": "3831:9:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3749:114:58"
                  },
                  "returnParameters": {
                    "id": 11285,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3890:0:58"
                  },
                  "scope": 11406,
                  "src": "3727:773:58",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    312,
                    15126
                  ],
                  "body": {
                    "id": 11382,
                    "nodeType": "Block",
                    "src": "4757:61:58",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 11378,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "4774:24:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 11379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgSender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15126,
                            "src": "4774:35:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 11380,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4774:37:58",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 11377,
                        "id": 11381,
                        "nodeType": "Return",
                        "src": "4767:44:58"
                      }
                    ]
                  },
                  "id": 11383,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11374,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 11372,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "4688:15:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 11373,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "4705:24:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "4679:51:58"
                  },
                  "parameters": {
                    "id": 11371,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4654:2:58"
                  },
                  "returnParameters": {
                    "id": 11377,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11376,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11383,
                        "src": "4740:15:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 11375,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4740:15:58",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4739:17:58"
                  },
                  "scope": 11406,
                  "src": "4635:183:58",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    321,
                    15171
                  ],
                  "body": {
                    "id": 11395,
                    "nodeType": "Block",
                    "src": "4945:59:58",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 11391,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "4962:24:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 11392,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15171,
                            "src": "4962:33:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$",
                              "typeString": "function () view returns (bytes calldata)"
                            }
                          },
                          "id": 11393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4962:35:58",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 11390,
                        "id": 11394,
                        "nodeType": "Return",
                        "src": "4955:42:58"
                      }
                    ]
                  },
                  "id": 11396,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11387,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 11385,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "4875:15:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 11386,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "4892:24:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "4866:51:58"
                  },
                  "parameters": {
                    "id": 11384,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4841:2:58"
                  },
                  "returnParameters": {
                    "id": 11390,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11389,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 11396,
                        "src": "4927:16:58",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 11388,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4927:5:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4926:18:58"
                  },
                  "scope": 11406,
                  "src": "4824:180:58",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11404,
                    "nodeType": "Block",
                    "src": "5199:34:58",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 11401,
                            "name": "_msgData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              11396
                            ],
                            "referencedDeclaration": 11396,
                            "src": "5216:8:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () view returns (bytes memory)"
                            }
                          },
                          "id": 11402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5216:10:58",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 11400,
                        "id": 11403,
                        "nodeType": "Return",
                        "src": "5209:17:58"
                      }
                    ]
                  },
                  "functionSelector": "c4c2bfdc",
                  "id": 11405,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11397,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5155:2:58"
                  },
                  "returnParameters": {
                    "id": 11400,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11399,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 11405,
                        "src": "5181:16:58",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 11398,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5181:5:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5180:18:58"
                  },
                  "scope": 11406,
                  "src": "5139:94:58",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 11407,
              "src": "869:4366:58"
            }
          ],
          "src": "33:5203:58"
        },
        "id": 58
      },
      "contracts/token/ERC20/polygon/predicate/PolygonERC20EscrowPredicate.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/polygon/predicate/PolygonERC20EscrowPredicate.sol",
          "exportedSymbols": {
            "ERC20Wrapper": [
              463
            ],
            "IWrappedERC20": [
              493
            ],
            "ManagedIdentity": [
              322
            ],
            "PolygonERC20EscrowPredicate": [
              11514
            ],
            "PolygonERC20PredicateBase": [
              11755
            ]
          },
          "id": 11515,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11408,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:59"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol",
              "id": 11411,
              "nodeType": "ImportDirective",
              "scope": 11515,
              "sourceUnit": 494,
              "src": "66:110:59",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11409,
                    "name": "IWrappedERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:13:59",
                    "typeDescriptions": {}
                  }
                },
                {
                  "foreign": {
                    "id": 11410,
                    "name": "ERC20Wrapper",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "89:12:59",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 11413,
              "nodeType": "ImportDirective",
              "scope": 11515,
              "sourceUnit": 323,
              "src": "177:102:59",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11412,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "185:15:59",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/polygon/predicate/PolygonERC20PredicateBase.sol",
              "file": "./PolygonERC20PredicateBase.sol",
              "id": 11415,
              "nodeType": "ImportDirective",
              "scope": 11515,
              "sourceUnit": 11756,
              "src": "280:74:59",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11414,
                    "name": "PolygonERC20PredicateBase",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "288:25:59",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 11417,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 322,
                    "src": "639:15:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 11418,
                  "nodeType": "InheritanceSpecifier",
                  "src": "639:15:59"
                },
                {
                  "baseName": {
                    "id": 11419,
                    "name": "PolygonERC20PredicateBase",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11755,
                    "src": "656:25:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PolygonERC20PredicateBase_$11755",
                      "typeString": "contract PolygonERC20PredicateBase"
                    }
                  },
                  "id": 11420,
                  "nodeType": "InheritanceSpecifier",
                  "src": "656:25:59"
                }
              ],
              "contractDependencies": [
                322,
                11755,
                14678
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 11416,
                "nodeType": "StructuredDocumentation",
                "src": "356:242:59",
                "text": " @title ERC20 Escrow Predicate (for Polygon).\n Polygon bridging ERC20 escrowing predicate which works with a `Withdrawn(address account, uint256 value)` event.\n @dev This contract should be deployed on the Root Chain (Ethereum)."
              },
              "fullyImplemented": true,
              "id": 11514,
              "linearizedBaseContracts": [
                11514,
                11755,
                14678,
                322
              ],
              "name": "PolygonERC20EscrowPredicate",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 11423,
                  "libraryName": {
                    "id": 11421,
                    "name": "ERC20Wrapper",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 463,
                    "src": "694:12:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Wrapper_$463",
                      "typeString": "library ERC20Wrapper"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "688:37:59",
                  "typeName": {
                    "id": 11422,
                    "name": "IWrappedERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 493,
                    "src": "711:13:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                      "typeString": "contract IWrappedERC20"
                    }
                  }
                },
                {
                  "body": {
                    "id": 11431,
                    "nodeType": "Block",
                    "src": "860:2:59",
                    "statements": []
                  },
                  "id": 11432,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 11428,
                          "name": "rootChainManager_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11425,
                          "src": "841:17:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 11429,
                      "modifierName": {
                        "id": 11427,
                        "name": "PolygonERC20PredicateBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11755,
                        "src": "815:25:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_PolygonERC20PredicateBase_$11755_$",
                          "typeString": "type(contract PolygonERC20PredicateBase)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "815:44:59"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11426,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11425,
                        "mutability": "mutable",
                        "name": "rootChainManager_",
                        "nodeType": "VariableDeclaration",
                        "scope": 11432,
                        "src": "788:25:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11424,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "788:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "787:27:59"
                  },
                  "returnParameters": {
                    "id": 11430,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "860:0:59"
                  },
                  "scope": 11514,
                  "src": "776:86:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    14667
                  ],
                  "body": {
                    "id": 11479,
                    "nodeType": "Block",
                    "src": "1539:272:59",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 11446,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "1569:10:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 11447,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1569:12:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 11445,
                            "name": "_requireManagerRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11686,
                            "src": "1549:19:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 11448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1549:33:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11449,
                        "nodeType": "ExpressionStatement",
                        "src": "1549:33:59"
                      },
                      {
                        "assignments": [
                          11451
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11451,
                            "mutability": "mutable",
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 11479,
                            "src": "1592:14:59",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11450,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1592:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11459,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11454,
                              "name": "depositData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11441,
                              "src": "1620:11:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 11456,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1634:7:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 11455,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1634:7:59",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 11457,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1633:9:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              }
                            ],
                            "expression": {
                              "id": 11452,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "1609:3:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 11453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "1609:10:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 11458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1609:34:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1592:51:59"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 11461,
                              "name": "depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11435,
                              "src": "1670:9:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 11462,
                              "name": "depositReceiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11437,
                              "src": "1681:15:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 11463,
                              "name": "rootToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11439,
                              "src": "1698:9:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 11464,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11451,
                              "src": "1709:6:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11460,
                            "name": "LockedERC20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11657,
                            "src": "1658:11:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 11465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1658:58:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11466,
                        "nodeType": "EmitStatement",
                        "src": "1653:63:59"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11471,
                              "name": "depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11435,
                              "src": "1771:9:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 11474,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "1790:4:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_PolygonERC20EscrowPredicate_$11514",
                                    "typeString": "contract PolygonERC20EscrowPredicate"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_PolygonERC20EscrowPredicate_$11514",
                                    "typeString": "contract PolygonERC20EscrowPredicate"
                                  }
                                ],
                                "id": 11473,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1782:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 11472,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1782:7:59",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 11475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1782:13:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 11476,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11451,
                              "src": "1797:6:59",
                              "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": 11468,
                                  "name": "rootToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11439,
                                  "src": "1740:9:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 11467,
                                "name": "IWrappedERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 493,
                                "src": "1726:13:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWrappedERC20_$493_$",
                                  "typeString": "type(contract IWrappedERC20)"
                                }
                              },
                              "id": 11469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1726:24:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              }
                            },
                            "id": 11470,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "wrappedTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 377,
                            "src": "1726:44:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IWrappedERC20_$493_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IWrappedERC20_$493_$",
                              "typeString": "function (contract IWrappedERC20,address,address,uint256)"
                            }
                          },
                          "id": 11477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1726:78:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11478,
                        "nodeType": "ExpressionStatement",
                        "src": "1726:78:59"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11433,
                    "nodeType": "StructuredDocumentation",
                    "src": "997:370:59",
                    "text": " Locks ERC20 tokens for deposit.\n @dev Reverts if not called by the manager (RootChainManager).\n @param depositor Address who wants to deposit tokens.\n @param depositReceiver Address (address) who wants to receive tokens on child chain.\n @param rootToken Token which gets deposited.\n @param depositData ABI encoded amount."
                  },
                  "functionSelector": "e375b64e",
                  "id": 11480,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "lockTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11443,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1530:8:59"
                  },
                  "parameters": {
                    "id": 11442,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11435,
                        "mutability": "mutable",
                        "name": "depositor",
                        "nodeType": "VariableDeclaration",
                        "scope": 11480,
                        "src": "1401:17:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11434,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1401:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11437,
                        "mutability": "mutable",
                        "name": "depositReceiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 11480,
                        "src": "1428:23:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11436,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1428:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11439,
                        "mutability": "mutable",
                        "name": "rootToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 11480,
                        "src": "1461:17:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11438,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1461:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11441,
                        "mutability": "mutable",
                        "name": "depositData",
                        "nodeType": "VariableDeclaration",
                        "scope": 11480,
                        "src": "1488:26:59",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 11440,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1488:5:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1391:129:59"
                  },
                  "returnParameters": {
                    "id": 11444,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1539:0:59"
                  },
                  "scope": 11514,
                  "src": "1372:439:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    14677
                  ],
                  "body": {
                    "id": 11512,
                    "nodeType": "Block",
                    "src": "2221:194:59",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 11492,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "2251:10:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 11493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2251:12:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 11491,
                            "name": "_requireManagerRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11686,
                            "src": "2231:19:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 11494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2231:33:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11495,
                        "nodeType": "ExpressionStatement",
                        "src": "2231:33:59"
                      },
                      {
                        "assignments": [
                          11497,
                          11499
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11497,
                            "mutability": "mutable",
                            "name": "withdrawer",
                            "nodeType": "VariableDeclaration",
                            "scope": 11512,
                            "src": "2275:18:59",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 11496,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2275:7:59",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 11499,
                            "mutability": "mutable",
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 11512,
                            "src": "2295:14:59",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11498,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2295:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11503,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11501,
                              "name": "log",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11487,
                              "src": "2334:3:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 11500,
                            "name": "_verifyWithdrawalLog",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11754,
                            "src": "2313:20:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_uint256_$",
                              "typeString": "function (bytes memory) pure returns (address,uint256)"
                            }
                          },
                          "id": 11502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2313:25:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                            "typeString": "tuple(address,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2274:64:59"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11508,
                              "name": "withdrawer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11497,
                              "src": "2389:10:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 11509,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11499,
                              "src": "2401:6:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 11505,
                                  "name": "rootToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11485,
                                  "src": "2362:9:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 11504,
                                "name": "IWrappedERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 493,
                                "src": "2348:13:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWrappedERC20_$493_$",
                                  "typeString": "type(contract IWrappedERC20)"
                                }
                              },
                              "id": 11506,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2348:24:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              }
                            },
                            "id": 11507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "wrappedTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 352,
                            "src": "2348:40:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IWrappedERC20_$493_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IWrappedERC20_$493_$",
                              "typeString": "function (contract IWrappedERC20,address,uint256)"
                            }
                          },
                          "id": 11510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2348:60:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11511,
                        "nodeType": "ExpressionStatement",
                        "src": "2348:60:59"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11481,
                    "nodeType": "StructuredDocumentation",
                    "src": "1817:287:59",
                    "text": " Validates the {Withdrawn} log signature, then sends the correct amount to withdrawer.\n @dev Reverts if not called only by the manager (RootChainManager).\n @param rootToken Token which gets withdrawn.\n @param log Valid ERC20 burn log from child chain."
                  },
                  "functionSelector": "8274664f",
                  "id": 11513,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "exitTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11489,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2212:8:59"
                  },
                  "parameters": {
                    "id": 11488,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11483,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11513,
                        "src": "2138:7:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11482,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2138:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11485,
                        "mutability": "mutable",
                        "name": "rootToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 11513,
                        "src": "2155:17:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11484,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2155:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11487,
                        "mutability": "mutable",
                        "name": "log",
                        "nodeType": "VariableDeclaration",
                        "scope": 11513,
                        "src": "2182:16:59",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 11486,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2182:5:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2128:76:59"
                  },
                  "returnParameters": {
                    "id": 11490,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2221:0:59"
                  },
                  "scope": 11514,
                  "src": "2109:306:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 11515,
              "src": "599:1818:59"
            }
          ],
          "src": "33:2385:59"
        },
        "id": 59
      },
      "contracts/token/ERC20/polygon/predicate/PolygonERC20MintBurnPredicate.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/polygon/predicate/PolygonERC20MintBurnPredicate.sol",
          "exportedSymbols": {
            "IERC20BurnableMintable": [
              11632
            ],
            "ManagedIdentity": [
              322
            ],
            "PolygonERC20MintBurnPredicate": [
              11615
            ],
            "PolygonERC20PredicateBase": [
              11755
            ]
          },
          "id": 11633,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11516,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:60"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 11518,
              "nodeType": "ImportDirective",
              "scope": 11633,
              "sourceUnit": 323,
              "src": "66:102:60",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11517,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:15:60",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC20/polygon/predicate/PolygonERC20PredicateBase.sol",
              "file": "./PolygonERC20PredicateBase.sol",
              "id": 11520,
              "nodeType": "ImportDirective",
              "scope": 11633,
              "sourceUnit": 11756,
              "src": "169:74:60",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11519,
                    "name": "PolygonERC20PredicateBase",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "177:25:60",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 11522,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 322,
                    "src": "623:15:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 11523,
                  "nodeType": "InheritanceSpecifier",
                  "src": "623:15:60"
                },
                {
                  "baseName": {
                    "id": 11524,
                    "name": "PolygonERC20PredicateBase",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11755,
                    "src": "640:25:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PolygonERC20PredicateBase_$11755",
                      "typeString": "contract PolygonERC20PredicateBase"
                    }
                  },
                  "id": 11525,
                  "nodeType": "InheritanceSpecifier",
                  "src": "640:25:60"
                }
              ],
              "contractDependencies": [
                322,
                11755,
                14678
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 11521,
                "nodeType": "StructuredDocumentation",
                "src": "245:335:60",
                "text": " @title ERC20 Mint/Burn Predicate (for Polygon).\n Polygon bridging ERC20 minting/burning predicate which works with a `Withdrawn(address account, uint256 value)` event.\n @dev This contract should be deployed on the Root Chain (Ethereum).\n @dev Warning: this predicate must be used only for mintable and burnable tokens."
              },
              "fullyImplemented": true,
              "id": 11615,
              "linearizedBaseContracts": [
                11615,
                11755,
                14678,
                322
              ],
              "name": "PolygonERC20MintBurnPredicate",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 11533,
                    "nodeType": "Block",
                    "src": "801:2:60",
                    "statements": []
                  },
                  "id": 11534,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 11530,
                          "name": "rootChainManager_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11527,
                          "src": "782:17:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 11531,
                      "modifierName": {
                        "id": 11529,
                        "name": "PolygonERC20PredicateBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11755,
                        "src": "756:25:60",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_PolygonERC20PredicateBase_$11755_$",
                          "typeString": "type(contract PolygonERC20PredicateBase)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "756:44:60"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11528,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11527,
                        "mutability": "mutable",
                        "name": "rootChainManager_",
                        "nodeType": "VariableDeclaration",
                        "scope": 11534,
                        "src": "729:25:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11526,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "729:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "728:27:60"
                  },
                  "returnParameters": {
                    "id": 11532,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "801:0:60"
                  },
                  "scope": 11615,
                  "src": "717:86:60",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    14667
                  ],
                  "body": {
                    "id": 11580,
                    "nodeType": "Block",
                    "src": "1480:290:60",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 11548,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "1510:10:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 11549,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1510:12:60",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 11547,
                            "name": "_requireManagerRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11686,
                            "src": "1490:19:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 11550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1490:33:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11551,
                        "nodeType": "ExpressionStatement",
                        "src": "1490:33:60"
                      },
                      {
                        "assignments": [
                          11553
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11553,
                            "mutability": "mutable",
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 11580,
                            "src": "1533:14:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11552,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1533:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11561,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11556,
                              "name": "depositData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11543,
                              "src": "1561:11:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 11558,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1575:7:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 11557,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1575:7:60",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 11559,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1574:9:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              }
                            ],
                            "expression": {
                              "id": 11554,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "1550:3:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 11555,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "1550:10:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 11560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1550:34:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1533:51:60"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 11563,
                              "name": "depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11537,
                              "src": "1611:9:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 11564,
                              "name": "depositReceiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11539,
                              "src": "1622:15:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 11565,
                              "name": "rootToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11541,
                              "src": "1639:9:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 11566,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11553,
                              "src": "1650:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11562,
                            "name": "LockedERC20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11657,
                            "src": "1599:11:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 11567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1599:58:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11568,
                        "nodeType": "EmitStatement",
                        "src": "1594:63:60"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 11574,
                                  "name": "depositor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11537,
                                  "src": "1718:9:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 11575,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11553,
                                  "src": "1729:6:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 11571,
                                      "name": "rootToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11541,
                                      "src": "1698:9:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 11570,
                                    "name": "IERC20BurnableMintable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11632,
                                    "src": "1675:22:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20BurnableMintable_$11632_$",
                                      "typeString": "type(contract IERC20BurnableMintable)"
                                    }
                                  },
                                  "id": 11572,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1675:33:60",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20BurnableMintable_$11632",
                                    "typeString": "contract IERC20BurnableMintable"
                                  }
                                },
                                "id": 11573,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "burnFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11624,
                                "src": "1675:42:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 11576,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1675:61:60",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5072656469636174653a206275726e206661696c6564",
                              "id": 11577,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1738:24:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8f69f99495b80aa6bb58138c9b5b2ea2cdde6f708f9c98886f6f15d0ad97a86d",
                                "typeString": "literal_string \"Predicate: burn failed\""
                              },
                              "value": "Predicate: burn failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8f69f99495b80aa6bb58138c9b5b2ea2cdde6f708f9c98886f6f15d0ad97a86d",
                                "typeString": "literal_string \"Predicate: burn failed\""
                              }
                            ],
                            "id": 11569,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1667:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1667:96:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11579,
                        "nodeType": "ExpressionStatement",
                        "src": "1667:96:60"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11535,
                    "nodeType": "StructuredDocumentation",
                    "src": "938:370:60",
                    "text": " Burns ERC20 tokens for deposit.\n @dev Reverts if not called by the manager (RootChainManager).\n @param depositor Address who wants to deposit tokens.\n @param depositReceiver Address (address) who wants to receive tokens on child chain.\n @param rootToken Token which gets deposited.\n @param depositData ABI encoded amount."
                  },
                  "functionSelector": "e375b64e",
                  "id": 11581,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "lockTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11545,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1471:8:60"
                  },
                  "parameters": {
                    "id": 11544,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11537,
                        "mutability": "mutable",
                        "name": "depositor",
                        "nodeType": "VariableDeclaration",
                        "scope": 11581,
                        "src": "1342:17:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11536,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1342:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11539,
                        "mutability": "mutable",
                        "name": "depositReceiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 11581,
                        "src": "1369:23:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11538,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1369:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11541,
                        "mutability": "mutable",
                        "name": "rootToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 11581,
                        "src": "1402:17:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11540,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1402:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11543,
                        "mutability": "mutable",
                        "name": "depositData",
                        "nodeType": "VariableDeclaration",
                        "scope": 11581,
                        "src": "1429:26:60",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 11542,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1429:5:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1332:129:60"
                  },
                  "returnParameters": {
                    "id": 11546,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1480:0:60"
                  },
                  "scope": 11615,
                  "src": "1313:457:60",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    14677
                  ],
                  "body": {
                    "id": 11613,
                    "nodeType": "Block",
                    "src": "2178:192:60",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 11593,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "2208:10:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 11594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2208:12:60",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 11592,
                            "name": "_requireManagerRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11686,
                            "src": "2188:19:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 11595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2188:33:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11596,
                        "nodeType": "ExpressionStatement",
                        "src": "2188:33:60"
                      },
                      {
                        "assignments": [
                          11598,
                          11600
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11598,
                            "mutability": "mutable",
                            "name": "withdrawer",
                            "nodeType": "VariableDeclaration",
                            "scope": 11613,
                            "src": "2232:18:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 11597,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2232:7:60",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 11600,
                            "mutability": "mutable",
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 11613,
                            "src": "2252:14:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11599,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2252:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11604,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11602,
                              "name": "log",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11588,
                              "src": "2291:3:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 11601,
                            "name": "_verifyWithdrawalLog",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11754,
                            "src": "2270:20:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_uint256_$",
                              "typeString": "function (bytes memory) pure returns (address,uint256)"
                            }
                          },
                          "id": 11603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2270:25:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                            "typeString": "tuple(address,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2231:64:60"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11609,
                              "name": "withdrawer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11598,
                              "src": "2344:10:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 11610,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11600,
                              "src": "2356:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 11606,
                                  "name": "rootToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11586,
                                  "src": "2328:9:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 11605,
                                "name": "IERC20BurnableMintable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11632,
                                "src": "2305:22:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20BurnableMintable_$11632_$",
                                  "typeString": "type(contract IERC20BurnableMintable)"
                                }
                              },
                              "id": 11607,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2305:33:60",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20BurnableMintable_$11632",
                                "typeString": "contract IERC20BurnableMintable"
                              }
                            },
                            "id": 11608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11631,
                            "src": "2305:38:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 11611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2305:58:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11612,
                        "nodeType": "ExpressionStatement",
                        "src": "2305:58:60"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11582,
                    "nodeType": "StructuredDocumentation",
                    "src": "1776:285:60",
                    "text": " Validates the {Withdrawn} log signature, then mints the correct amount to withdrawer.\n @dev Reverts if not called only by the manager (RootChainManager).\n @param rootToken Token which gets withdrawn\n @param log Valid ERC20 burn log from child chain"
                  },
                  "functionSelector": "8274664f",
                  "id": 11614,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "exitTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11590,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2169:8:60"
                  },
                  "parameters": {
                    "id": 11589,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11584,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11614,
                        "src": "2095:7:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11583,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2095:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11586,
                        "mutability": "mutable",
                        "name": "rootToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 11614,
                        "src": "2112:17:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11585,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2112:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11588,
                        "mutability": "mutable",
                        "name": "log",
                        "nodeType": "VariableDeclaration",
                        "scope": 11614,
                        "src": "2139:16:60",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 11587,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2139:5:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2085:76:60"
                  },
                  "returnParameters": {
                    "id": 11591,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2178:0:60"
                  },
                  "scope": 11615,
                  "src": "2066:304:60",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 11633,
              "src": "581:1791:60"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 11632,
              "linearizedBaseContracts": [
                11632
              ],
              "name": "IERC20BurnableMintable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "79cc6790",
                  "id": 11624,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11620,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11617,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 11624,
                        "src": "2431:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11616,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2431:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11619,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 11624,
                        "src": "2445:13:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11618,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2445:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2430:29:60"
                  },
                  "returnParameters": {
                    "id": 11623,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11622,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11624,
                        "src": "2478:4:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 11621,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2478:4:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2477:6:60"
                  },
                  "scope": 11632,
                  "src": "2413:71:60",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "40c10f19",
                  "id": 11631,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11629,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11626,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 11631,
                        "src": "2504:10:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11625,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2504:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11628,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 11631,
                        "src": "2516:13:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11627,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2516:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2503:27:60"
                  },
                  "returnParameters": {
                    "id": 11630,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2539:0:60"
                  },
                  "scope": 11632,
                  "src": "2490:50:60",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 11633,
              "src": "2374:168:60"
            }
          ],
          "src": "33:2510:60"
        },
        "id": 60
      },
      "contracts/token/ERC20/polygon/predicate/PolygonERC20PredicateBase.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC20/polygon/predicate/PolygonERC20PredicateBase.sol",
          "exportedSymbols": {
            "IPolygonTokenPredicate": [
              14678
            ],
            "PolygonERC20PredicateBase": [
              11755
            ],
            "RLPReader": [
              1106
            ]
          },
          "id": 11756,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11634,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:61"
            },
            {
              "absolutePath": "contracts/token/common/polygon/interfaces/IPolygonTokenPredicate.sol",
              "file": "../../../common/polygon/interfaces/IPolygonTokenPredicate.sol",
              "id": 11636,
              "nodeType": "ImportDirective",
              "scope": 11756,
              "sourceUnit": 14679,
              "src": "66:101:61",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11635,
                    "name": "IPolygonTokenPredicate",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:22:61",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/RLPReader.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/RLPReader.sol",
              "id": 11638,
              "nodeType": "ImportDirective",
              "scope": 11756,
              "sourceUnit": 1107,
              "src": "168:89:61",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11637,
                    "name": "RLPReader",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "176:9:61",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 11640,
                    "name": "IPolygonTokenPredicate",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14678,
                    "src": "686:22:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPolygonTokenPredicate_$14678",
                      "typeString": "contract IPolygonTokenPredicate"
                    }
                  },
                  "id": 11641,
                  "nodeType": "InheritanceSpecifier",
                  "src": "686:22:61"
                }
              ],
              "contractDependencies": [
                14678
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 11639,
                "nodeType": "StructuredDocumentation",
                "src": "259:379:61",
                "text": " @title ERC20 Predicate Base (for Polygon).\n Polygon bridging ERC20 predicate which works with a `Withdrawn(address account, uint256 value)` event.\n @dev This contract should be deployed on the Root Chain (Ethereum).\n @dev The functions `lockTokens(address,address,address,bytes)` and `exitTokens(address,address,byte)` need to be implemented by a child contract."
              },
              "fullyImplemented": false,
              "id": 11755,
              "linearizedBaseContracts": [
                11755,
                14678
              ],
              "name": "PolygonERC20PredicateBase",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 11644,
                  "libraryName": {
                    "id": 11642,
                    "name": "RLPReader",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1106,
                    "src": "721:9:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_RLPReader_$1106",
                      "typeString": "library RLPReader"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "715:26:61",
                  "typeName": {
                    "id": 11643,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "735:5:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                {
                  "id": 11647,
                  "libraryName": {
                    "id": 11645,
                    "name": "RLPReader",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1106,
                    "src": "752:9:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_RLPReader_$1106",
                      "typeString": "library RLPReader"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "746:38:61",
                  "typeName": {
                    "id": 11646,
                    "name": "RLPReader.RLPItem",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 515,
                    "src": "766:17:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RLPItem_$515_storage_ptr",
                      "typeString": "struct RLPReader.RLPItem"
                    }
                  }
                },
                {
                  "anonymous": false,
                  "id": 11657,
                  "name": "LockedERC20",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11656,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11649,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "depositor",
                        "nodeType": "VariableDeclaration",
                        "scope": 11657,
                        "src": "808:25:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11648,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "808:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11651,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "depositReceiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 11657,
                        "src": "835:31:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11650,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "835:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11653,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "rootToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 11657,
                        "src": "868:25:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11652,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "868:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11655,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 11657,
                        "src": "895:14:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11654,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "895:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "807:103:61"
                  },
                  "src": "790:121:61"
                },
                {
                  "constant": true,
                  "functionSelector": "206efea4",
                  "id": 11660,
                  "mutability": "constant",
                  "name": "WITHDRAWN_EVENT_SIG",
                  "nodeType": "VariableDeclaration",
                  "scope": 11755,
                  "src": "980:112:61",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11658,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "980:7:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307837303834663534373636313864386536306231316566306437643366303639313436353561646238373933653238666637663031386434633736643530356435",
                    "id": 11659,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1026:66:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_50893955706639834605299804440155310915055312867673792774376955235295819007445_by_1",
                      "typeString": "int_const 5089...(69 digits omitted)...7445"
                    },
                    "value": "0x7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "bd07018d",
                  "id": 11662,
                  "mutability": "mutable",
                  "name": "rootChainManager",
                  "nodeType": "VariableDeclaration",
                  "scope": 11755,
                  "src": "1218:31:61",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11661,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1218:7:61",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11672,
                    "nodeType": "Block",
                    "src": "1412:53:61",
                    "statements": [
                      {
                        "expression": {
                          "id": 11670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11668,
                            "name": "rootChainManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11662,
                            "src": "1422:16:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 11669,
                            "name": "rootChainManager_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11665,
                            "src": "1441:17:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1422:36:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11671,
                        "nodeType": "ExpressionStatement",
                        "src": "1422:36:61"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11663,
                    "nodeType": "StructuredDocumentation",
                    "src": "1256:112:61",
                    "text": " Constructor\n @param rootChainManager_ the Polygon/MATIC RootChainManager proxy address."
                  },
                  "id": 11673,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11666,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11665,
                        "mutability": "mutable",
                        "name": "rootChainManager_",
                        "nodeType": "VariableDeclaration",
                        "scope": 11673,
                        "src": "1385:25:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11664,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1385:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1384:27:61"
                  },
                  "returnParameters": {
                    "id": 11667,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1412:0:61"
                  },
                  "scope": 11755,
                  "src": "1373:92:61",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11685,
                    "nodeType": "Block",
                    "src": "1660:80:61",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 11681,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11679,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11675,
                                "src": "1678:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 11680,
                                "name": "rootChainManager",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11662,
                                "src": "1689:16:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1678:27:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5072656469636174653a206f6e6c79206d616e61676572",
                              "id": 11682,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1707:25:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b700844e061cc9c8de416cab7a2bbc0788355b1fe7fbf4bb744f0d54f5f06d7b",
                                "typeString": "literal_string \"Predicate: only manager\""
                              },
                              "value": "Predicate: only manager"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b700844e061cc9c8de416cab7a2bbc0788355b1fe7fbf4bb744f0d54f5f06d7b",
                                "typeString": "literal_string \"Predicate: only manager\""
                              }
                            ],
                            "id": 11678,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1670:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1670:63:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11684,
                        "nodeType": "ExpressionStatement",
                        "src": "1670:63:61"
                      }
                    ]
                  },
                  "id": 11686,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_requireManagerRole",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11676,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11675,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 11686,
                        "src": "1629:15:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11674,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1629:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1628:17:61"
                  },
                  "returnParameters": {
                    "id": 11677,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1660:0:61"
                  },
                  "scope": 11755,
                  "src": "1600:140:61",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11753,
                    "nodeType": "Block",
                    "src": "1853:465:61",
                    "statements": [
                      {
                        "assignments": [
                          11699
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11699,
                            "mutability": "mutable",
                            "name": "logRLPList",
                            "nodeType": "VariableDeclaration",
                            "scope": 11753,
                            "src": "1863:37:61",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_RLPItem_$515_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct RLPReader.RLPItem[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 11697,
                                "name": "RLPReader.RLPItem",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 515,
                                "src": "1863:17:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RLPItem_$515_storage_ptr",
                                  "typeString": "struct RLPReader.RLPItem"
                                }
                              },
                              "id": 11698,
                              "nodeType": "ArrayTypeName",
                              "src": "1863:19:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_RLPItem_$515_storage_$dyn_storage_ptr",
                                "typeString": "struct RLPReader.RLPItem[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11705,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 11700,
                                  "name": "log",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11688,
                                  "src": "1903:3:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 11701,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toRlpItem",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 541,
                                "src": "1903:13:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_RLPItem_$515_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory) pure returns (struct RLPReader.RLPItem memory)"
                                }
                              },
                              "id": 11702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1903:15:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                "typeString": "struct RLPReader.RLPItem memory"
                              }
                            },
                            "id": 11703,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toList",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 636,
                            "src": "1903:22:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$515_memory_ptr_$returns$_t_array$_t_struct$_RLPItem_$515_memory_ptr_$dyn_memory_ptr_$bound_to$_t_struct$_RLPItem_$515_memory_ptr_$",
                              "typeString": "function (struct RLPReader.RLPItem memory) pure returns (struct RLPReader.RLPItem memory[] memory)"
                            }
                          },
                          "id": 11704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1903:24:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$515_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct RLPReader.RLPItem memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1863:64:61"
                      },
                      {
                        "assignments": [
                          11710
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11710,
                            "mutability": "mutable",
                            "name": "logTopicRLPList",
                            "nodeType": "VariableDeclaration",
                            "scope": 11753,
                            "src": "1937:42:61",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_RLPItem_$515_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct RLPReader.RLPItem[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 11708,
                                "name": "RLPReader.RLPItem",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 515,
                                "src": "1937:17:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RLPItem_$515_storage_ptr",
                                  "typeString": "struct RLPReader.RLPItem"
                                }
                              },
                              "id": 11709,
                              "nodeType": "ArrayTypeName",
                              "src": "1937:19:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_RLPItem_$515_storage_$dyn_storage_ptr",
                                "typeString": "struct RLPReader.RLPItem[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11716,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "baseExpression": {
                                "id": 11711,
                                "name": "logRLPList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11699,
                                "src": "1982:10:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_RLPItem_$515_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct RLPReader.RLPItem memory[] memory"
                                }
                              },
                              "id": 11713,
                              "indexExpression": {
                                "hexValue": "31",
                                "id": 11712,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1993:1:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1982:13:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                "typeString": "struct RLPReader.RLPItem memory"
                              }
                            },
                            "id": 11714,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toList",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 636,
                            "src": "1982:20:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$515_memory_ptr_$returns$_t_array$_t_struct$_RLPItem_$515_memory_ptr_$dyn_memory_ptr_$bound_to$_t_struct$_RLPItem_$515_memory_ptr_$",
                              "typeString": "function (struct RLPReader.RLPItem memory) pure returns (struct RLPReader.RLPItem memory[] memory)"
                            }
                          },
                          "id": 11715,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1982:22:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$515_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct RLPReader.RLPItem memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1937:67:61"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 11727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "baseExpression": {
                                          "id": 11720,
                                          "name": "logTopicRLPList",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11710,
                                          "src": "2054:15:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$515_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct RLPReader.RLPItem memory[] memory"
                                          }
                                        },
                                        "id": 11722,
                                        "indexExpression": {
                                          "hexValue": "30",
                                          "id": 11721,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2070:1:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2054:18:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                          "typeString": "struct RLPReader.RLPItem memory"
                                        }
                                      },
                                      "id": 11723,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "toUint",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 789,
                                      "src": "2054:25:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$515_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_RLPItem_$515_memory_ptr_$",
                                        "typeString": "function (struct RLPReader.RLPItem memory) pure returns (uint256)"
                                      }
                                    },
                                    "id": 11724,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2054:27:61",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 11719,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2046:7:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 11718,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2046:7:61",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 11725,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2046:36:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 11726,
                                "name": "WITHDRAWN_EVENT_SIG",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11660,
                                "src": "2086:19:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "2046:59:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5072656469636174653a20696e76616c6964207369676e6174757265",
                              "id": 11728,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2142:30:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b00044f7c8bc29d5a14a5bedd102cb81ea50a12a641e0d07efcf24817fa0b241",
                                "typeString": "literal_string \"Predicate: invalid signature\""
                              },
                              "value": "Predicate: invalid signature"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b00044f7c8bc29d5a14a5bedd102cb81ea50a12a641e0d07efcf24817fa0b241",
                                "typeString": "literal_string \"Predicate: invalid signature\""
                              }
                            ],
                            "id": 11717,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2025:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2025:157:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11730,
                        "nodeType": "ExpressionStatement",
                        "src": "2025:157:61"
                      },
                      {
                        "assignments": [
                          11732
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11732,
                            "mutability": "mutable",
                            "name": "logData",
                            "nodeType": "VariableDeclaration",
                            "scope": 11753,
                            "src": "2193:20:61",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 11731,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2193:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11738,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "baseExpression": {
                                "id": 11733,
                                "name": "logRLPList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11699,
                                "src": "2216:10:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_RLPItem_$515_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct RLPReader.RLPItem memory[] memory"
                                }
                              },
                              "id": 11735,
                              "indexExpression": {
                                "hexValue": "32",
                                "id": 11734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2227:1:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2216:13:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RLPItem_$515_memory_ptr",
                                "typeString": "struct RLPReader.RLPItem memory"
                              }
                            },
                            "id": 11736,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toBytes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 892,
                            "src": "2216:21:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$515_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RLPItem_$515_memory_ptr_$",
                              "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 11737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2216:23:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2193:46:61"
                      },
                      {
                        "expression": {
                          "id": 11751,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 11739,
                                "name": "withdrawer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11691,
                                "src": "2250:10:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 11740,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11693,
                                "src": "2262:6:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 11741,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "2249:20:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                              "typeString": "tuple(address,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 11744,
                                "name": "logData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11732,
                                "src": "2283:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 11746,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2293:7:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 11745,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2293:7:61",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  {
                                    "id": 11748,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2302:7:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 11747,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2302:7:61",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 11749,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2292:18:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                  "typeString": "tuple(type(address),type(uint256))"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                  "typeString": "tuple(type(address),type(uint256))"
                                }
                              ],
                              "expression": {
                                "id": 11742,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2272:3:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 11743,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "2272:10:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 11750,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2272:39:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$",
                              "typeString": "tuple(address payable,uint256)"
                            }
                          },
                          "src": "2249:62:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11752,
                        "nodeType": "ExpressionStatement",
                        "src": "2249:62:61"
                      }
                    ]
                  },
                  "id": 11754,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_verifyWithdrawalLog",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11689,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11688,
                        "mutability": "mutable",
                        "name": "log",
                        "nodeType": "VariableDeclaration",
                        "scope": 11754,
                        "src": "1776:16:61",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 11687,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1776:5:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1775:18:61"
                  },
                  "returnParameters": {
                    "id": 11694,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11691,
                        "mutability": "mutable",
                        "name": "withdrawer",
                        "nodeType": "VariableDeclaration",
                        "scope": 11754,
                        "src": "1817:18:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11690,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1817:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11693,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 11754,
                        "src": "1837:14:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11692,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1837:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1816:36:61"
                  },
                  "scope": 11755,
                  "src": "1746:572:61",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 11756,
              "src": "639:1681:61"
            }
          ],
          "src": "33:2288:61"
        },
        "id": 61
      },
      "contracts/token/ERC721/ERC721.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/ERC721.sol",
          "exportedSymbols": {
            "AddressIsContract": [
              1285
            ],
            "ERC721": [
              12685
            ],
            "ERC721Simple": [
              13616
            ],
            "IERC165": [
              218
            ],
            "IERC721": [
              13702
            ],
            "IERC721BatchTransfer": [
              13717
            ],
            "IERC721Events": [
              13766
            ],
            "IERC721Metadata": [
              13790
            ],
            "IERC721Receiver": [
              13839
            ],
            "ManagedIdentity": [
              322
            ]
          },
          "id": 12686,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11757,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:62"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
              "id": 11759,
              "nodeType": "ImportDirective",
              "scope": 12686,
              "sourceUnit": 1286,
              "src": "66:111:62",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11758,
                    "name": "AddressIsContract",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:17:62",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 11761,
              "nodeType": "ImportDirective",
              "scope": 12686,
              "sourceUnit": 219,
              "src": "178:93:62",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11760,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "186:7:62",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721.sol",
              "file": "./interfaces/IERC721.sol",
              "id": 11763,
              "nodeType": "ImportDirective",
              "scope": 12686,
              "sourceUnit": 13703,
              "src": "272:49:62",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11762,
                    "name": "IERC721",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "280:7:62",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Events.sol",
              "file": "./interfaces/IERC721Events.sol",
              "id": 11765,
              "nodeType": "ImportDirective",
              "scope": 12686,
              "sourceUnit": 13767,
              "src": "322:61:62",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11764,
                    "name": "IERC721Events",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "330:13:62",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Receiver.sol",
              "file": "./interfaces/IERC721Receiver.sol",
              "id": 11767,
              "nodeType": "ImportDirective",
              "scope": 12686,
              "sourceUnit": 13840,
              "src": "384:65:62",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11766,
                    "name": "IERC721Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "392:15:62",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Metadata.sol",
              "file": "./interfaces/IERC721Metadata.sol",
              "id": 11769,
              "nodeType": "ImportDirective",
              "scope": 12686,
              "sourceUnit": 13791,
              "src": "450:65:62",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11768,
                    "name": "IERC721Metadata",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "458:15:62",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol",
              "file": "./interfaces/IERC721BatchTransfer.sol",
              "id": 11771,
              "nodeType": "ImportDirective",
              "scope": 12686,
              "sourceUnit": 13718,
              "src": "516:75:62",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11770,
                    "name": "IERC721BatchTransfer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "524:20:62",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 11773,
              "nodeType": "ImportDirective",
              "scope": 12686,
              "sourceUnit": 323,
              "src": "592:102:62",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11772,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "600:15:62",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/ERC721Simple.sol",
              "file": "./ERC721Simple.sol",
              "id": 11775,
              "nodeType": "ImportDirective",
              "scope": 12686,
              "sourceUnit": 13617,
              "src": "695:48:62",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11774,
                    "name": "ERC721Simple",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "703:12:62",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 11777,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 322,
                    "src": "964:15:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 11778,
                  "nodeType": "InheritanceSpecifier",
                  "src": "964:15:62"
                },
                {
                  "baseName": {
                    "id": 11779,
                    "name": "IERC165",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 218,
                    "src": "981:7:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC165_$218",
                      "typeString": "contract IERC165"
                    }
                  },
                  "id": 11780,
                  "nodeType": "InheritanceSpecifier",
                  "src": "981:7:62"
                },
                {
                  "baseName": {
                    "id": 11781,
                    "name": "IERC721",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13702,
                    "src": "990:7:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721_$13702",
                      "typeString": "contract IERC721"
                    }
                  },
                  "id": 11782,
                  "nodeType": "InheritanceSpecifier",
                  "src": "990:7:62"
                },
                {
                  "baseName": {
                    "id": 11783,
                    "name": "IERC721Events",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13766,
                    "src": "999:13:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721Events_$13766",
                      "typeString": "contract IERC721Events"
                    }
                  },
                  "id": 11784,
                  "nodeType": "InheritanceSpecifier",
                  "src": "999:13:62"
                },
                {
                  "baseName": {
                    "id": 11785,
                    "name": "IERC721Metadata",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13790,
                    "src": "1014:15:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721Metadata_$13790",
                      "typeString": "contract IERC721Metadata"
                    }
                  },
                  "id": 11786,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1014:15:62"
                },
                {
                  "baseName": {
                    "id": 11787,
                    "name": "IERC721BatchTransfer",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13717,
                    "src": "1031:20:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721BatchTransfer_$13717",
                      "typeString": "contract IERC721BatchTransfer"
                    }
                  },
                  "id": 11788,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1031:20:62"
                }
              ],
              "contractDependencies": [
                218,
                322,
                13702,
                13717,
                13766,
                13790
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 11776,
                "nodeType": "StructuredDocumentation",
                "src": "745:190:62",
                "text": " @title ERC721 Non Fungible Token Contract.\n @dev The function `tokenURI(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`."
              },
              "fullyImplemented": false,
              "id": 12685,
              "linearizedBaseContracts": [
                12685,
                13717,
                13790,
                13766,
                13702,
                218,
                322
              ],
              "name": "ERC721",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 11791,
                  "libraryName": {
                    "id": 11789,
                    "name": "AddressIsContract",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1285,
                    "src": "1064:17:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddressIsContract_$1285",
                      "typeString": "library AddressIsContract"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1058:36:62",
                  "typeName": {
                    "id": 11790,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1086:7:62",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 11797,
                  "mutability": "constant",
                  "name": "_ERC721_RECEIVED",
                  "nodeType": "VariableDeclaration",
                  "scope": 12685,
                  "src": "1100:77:62",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 11792,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1100:6:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "expression": {
                      "arguments": [
                        {
                          "id": 11794,
                          "name": "IERC721Receiver",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13839,
                          "src": "1149:15:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$13839_$",
                            "typeString": "type(contract IERC721Receiver)"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$13839_$",
                            "typeString": "type(contract IERC721Receiver)"
                          }
                        ],
                        "id": 11793,
                        "name": "type",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -27,
                        "src": "1144:4:62",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 11795,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1144:21:62",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Receiver_$13839",
                        "typeString": "type(contract IERC721Receiver)"
                      }
                    },
                    "id": 11796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "interfaceId",
                    "nodeType": "MemberAccess",
                    "src": "1144:33:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 11802,
                  "mutability": "constant",
                  "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                  "nodeType": "VariableDeclaration",
                  "scope": 12685,
                  "src": "1184:63:62",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11798,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1184:7:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542976_by_1",
                      "typeString": "int_const 1461...(41 digits omitted)...2976"
                    },
                    "id": 11801,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "31",
                      "id": 11799,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1239:1:62",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<<",
                    "rightExpression": {
                      "hexValue": "313630",
                      "id": 11800,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1244:3:62",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_160_by_1",
                        "typeString": "int_const 160"
                      },
                      "value": "160"
                    },
                    "src": "1239:8:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542976_by_1",
                      "typeString": "int_const 1461...(41 digits omitted)...2976"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 11805,
                  "mutability": "constant",
                  "name": "_BURNT_NFT_OWNER",
                  "nodeType": "VariableDeclaration",
                  "scope": 12685,
                  "src": "1306:111:62",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11803,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1306:7:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "307864656164303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 11804,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1351:66:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_100719116927691798707895874029850069994745719541394658707722161504685790330880_by_1",
                      "typeString": "int_const 1007...(70 digits omitted)...0880"
                    },
                    "value": "0xdead000000000000000000000000000000000000000000000000000000000000"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11807,
                  "mutability": "mutable",
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 12685,
                  "src": "1424:21:62",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 11806,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1424:6:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11809,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 12685,
                  "src": "1451:23:62",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 11808,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1451:6:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11815,
                  "mutability": "mutable",
                  "name": "_operators",
                  "nodeType": "VariableDeclaration",
                  "scope": 12685,
                  "src": "1521:64:62",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 11814,
                    "keyType": {
                      "id": 11810,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1529:7:62",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1521:44:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 11813,
                      "keyType": {
                        "id": 11811,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1548:7:62",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1540:24:62",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 11812,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1559:4:62",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11819,
                  "mutability": "mutable",
                  "name": "_owners",
                  "nodeType": "VariableDeclaration",
                  "scope": 12685,
                  "src": "1618:44:62",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 11818,
                    "keyType": {
                      "id": 11816,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1626:7:62",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1618:27:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 11817,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1637:7:62",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11823,
                  "mutability": "mutable",
                  "name": "_nftBalances",
                  "nodeType": "VariableDeclaration",
                  "scope": 12685,
                  "src": "1700:49:62",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 11822,
                    "keyType": {
                      "id": 11820,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1708:7:62",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1700:27:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 11821,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1719:7:62",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11827,
                  "mutability": "mutable",
                  "name": "_nftApprovals",
                  "nodeType": "VariableDeclaration",
                  "scope": 12685,
                  "src": "1785:50:62",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 11826,
                    "keyType": {
                      "id": 11824,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1793:7:62",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1785:27:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 11825,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1804:7:62",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11843,
                    "nodeType": "Block",
                    "src": "2023:57:62",
                    "statements": [
                      {
                        "expression": {
                          "id": 11837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11835,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11807,
                            "src": "2033:5:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 11836,
                            "name": "name_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11830,
                            "src": "2041:5:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "2033:13:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 11838,
                        "nodeType": "ExpressionStatement",
                        "src": "2033:13:62"
                      },
                      {
                        "expression": {
                          "id": 11841,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11839,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11809,
                            "src": "2056:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 11840,
                            "name": "symbol_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11832,
                            "src": "2066:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "2056:17:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 11842,
                        "nodeType": "ExpressionStatement",
                        "src": "2056:17:62"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11828,
                    "nodeType": "StructuredDocumentation",
                    "src": "1842:108:62",
                    "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."
                  },
                  "id": 11844,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11833,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11830,
                        "mutability": "mutable",
                        "name": "name_",
                        "nodeType": "VariableDeclaration",
                        "scope": 11844,
                        "src": "1979:19:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11829,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1979:6:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11832,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nodeType": "VariableDeclaration",
                        "scope": 11844,
                        "src": "2000:21:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11831,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2000:6:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1978:44:62"
                  },
                  "returnParameters": {
                    "id": 11834,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2023:0:62"
                  },
                  "scope": 12685,
                  "src": "1967:113:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    217
                  ],
                  "body": {
                    "id": 11881,
                    "nodeType": "Block",
                    "src": "2334:265:62",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 11879,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 11872,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 11865,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 11858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11853,
                                  "name": "interfaceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11847,
                                  "src": "2363:11:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 11855,
                                        "name": "IERC165",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 218,
                                        "src": "2383:7:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                          "typeString": "type(contract IERC165)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                          "typeString": "type(contract IERC165)"
                                        }
                                      ],
                                      "id": 11854,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "2378:4:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 11856,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2378:13:62",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$218",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  },
                                  "id": 11857,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "interfaceId",
                                  "nodeType": "MemberAccess",
                                  "src": "2378:25:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "2363:40:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 11864,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11859,
                                  "name": "interfaceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11847,
                                  "src": "2419:11:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 11861,
                                        "name": "IERC721",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13702,
                                        "src": "2439:7:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC721_$13702_$",
                                          "typeString": "type(contract IERC721)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_contract$_IERC721_$13702_$",
                                          "typeString": "type(contract IERC721)"
                                        }
                                      ],
                                      "id": 11860,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "2434:4:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 11862,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2434:13:62",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$13702",
                                      "typeString": "type(contract IERC721)"
                                    }
                                  },
                                  "id": 11863,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "interfaceId",
                                  "nodeType": "MemberAccess",
                                  "src": "2434:25:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "2419:40:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2363:96:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 11871,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11866,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11847,
                                "src": "2475:11:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 11868,
                                      "name": "IERC721Metadata",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13790,
                                      "src": "2495:15:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$13790_$",
                                        "typeString": "type(contract IERC721Metadata)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$13790_$",
                                        "typeString": "type(contract IERC721Metadata)"
                                      }
                                    ],
                                    "id": 11867,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "2490:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 11869,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2490:21:62",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$13790",
                                    "typeString": "type(contract IERC721Metadata)"
                                  }
                                },
                                "id": 11870,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "2490:33:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "2475:48:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2363:160:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 11878,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 11873,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11847,
                              "src": "2539:11:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 11875,
                                    "name": "IERC721BatchTransfer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13717,
                                    "src": "2559:20:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC721BatchTransfer_$13717_$",
                                      "typeString": "type(contract IERC721BatchTransfer)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC721BatchTransfer_$13717_$",
                                      "typeString": "type(contract IERC721BatchTransfer)"
                                    }
                                  ],
                                  "id": 11874,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "2554:4:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 11876,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2554:26:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721BatchTransfer_$13717",
                                  "typeString": "type(contract IERC721BatchTransfer)"
                                }
                              },
                              "id": 11877,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "2554:38:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "2539:53:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2363:229:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 11852,
                        "id": 11880,
                        "nodeType": "Return",
                        "src": "2344:248:62"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11845,
                    "nodeType": "StructuredDocumentation",
                    "src": "2215:23:62",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 11882,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11849,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2310:8:62"
                  },
                  "parameters": {
                    "id": 11848,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11847,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 11882,
                        "src": "2270:18:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 11846,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2270:6:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2269:20:62"
                  },
                  "returnParameters": {
                    "id": 11852,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11851,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11882,
                        "src": "2328:4:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 11850,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2328:4:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2327:6:62"
                  },
                  "scope": 12685,
                  "src": "2243:356:62",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13775
                  ],
                  "body": {
                    "id": 11891,
                    "nodeType": "Block",
                    "src": "2839:29:62",
                    "statements": [
                      {
                        "expression": {
                          "id": 11889,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11807,
                          "src": "2856:5:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 11888,
                        "id": 11890,
                        "nodeType": "Return",
                        "src": "2849:12:62"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11883,
                    "nodeType": "StructuredDocumentation",
                    "src": "2734:31:62",
                    "text": "@inheritdoc IERC721Metadata"
                  },
                  "functionSelector": "06fdde03",
                  "id": 11892,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11885,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2806:8:62"
                  },
                  "parameters": {
                    "id": 11884,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2783:2:62"
                  },
                  "returnParameters": {
                    "id": 11888,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11887,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11892,
                        "src": "2824:13:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11886,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2824:6:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2823:15:62"
                  },
                  "scope": 12685,
                  "src": "2770:98:62",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13781
                  ],
                  "body": {
                    "id": 11901,
                    "nodeType": "Block",
                    "src": "2981:31:62",
                    "statements": [
                      {
                        "expression": {
                          "id": 11899,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11809,
                          "src": "2998:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 11898,
                        "id": 11900,
                        "nodeType": "Return",
                        "src": "2991:14:62"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11893,
                    "nodeType": "StructuredDocumentation",
                    "src": "2874:31:62",
                    "text": "@inheritdoc IERC721Metadata"
                  },
                  "functionSelector": "95d89b41",
                  "id": 11902,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11895,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2948:8:62"
                  },
                  "parameters": {
                    "id": 11894,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2925:2:62"
                  },
                  "returnParameters": {
                    "id": 11898,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11897,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11902,
                        "src": "2966:13:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11896,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2966:6:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2965:15:62"
                  },
                  "scope": 12685,
                  "src": "2910:102:62",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13627
                  ],
                  "body": {
                    "id": 11925,
                    "nodeType": "Block",
                    "src": "3256:105:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 11917,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11912,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11905,
                                "src": "3274:5:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 11915,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3291:1:62",
                                    "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": 11914,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3283:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 11913,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3283:7:62",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 11916,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3283:10:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3274:19:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a207a65726f2061646472657373",
                              "id": 11918,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3295:22:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cbf342cf31c00d6666359b4f2d70ce9760b73e4525fbcb2f71e0979d1c874b92",
                                "typeString": "literal_string \"ERC721: zero address\""
                              },
                              "value": "ERC721: zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cbf342cf31c00d6666359b4f2d70ce9760b73e4525fbcb2f71e0979d1c874b92",
                                "typeString": "literal_string \"ERC721: zero address\""
                              }
                            ],
                            "id": 11911,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3266:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3266:52:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11920,
                        "nodeType": "ExpressionStatement",
                        "src": "3266:52:62"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 11921,
                            "name": "_nftBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11823,
                            "src": "3335:12:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 11923,
                          "indexExpression": {
                            "id": 11922,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11905,
                            "src": "3348:5:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3335:19:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11910,
                        "id": 11924,
                        "nodeType": "Return",
                        "src": "3328:26:62"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11903,
                    "nodeType": "StructuredDocumentation",
                    "src": "3147:23:62",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "70a08231",
                  "id": 11926,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11907,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3229:8:62"
                  },
                  "parameters": {
                    "id": 11906,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11905,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 11926,
                        "src": "3194:13:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11904,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3194:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3193:15:62"
                  },
                  "returnParameters": {
                    "id": 11910,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11909,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11926,
                        "src": "3247:7:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11908,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3247:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3246:9:62"
                  },
                  "scope": 12685,
                  "src": "3175:186:62",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13635
                  ],
                  "body": {
                    "id": 11959,
                    "nodeType": "Block",
                    "src": "3476:155:62",
                    "statements": [
                      {
                        "assignments": [
                          11936
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11936,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 11959,
                            "src": "3486:13:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 11935,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3486:7:62",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11946,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 11941,
                                    "name": "_owners",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11819,
                                    "src": "3518:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 11943,
                                  "indexExpression": {
                                    "id": 11942,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11929,
                                    "src": "3526:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3518:16:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 11940,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3510:7:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 11939,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3510:7:62",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 11944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3510:25:62",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 11938,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3502:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 11937,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3502:7:62",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 11945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3502:34:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3486:50:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 11953,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11948,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11936,
                                "src": "3554:5:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 11951,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3571:1:62",
                                    "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": 11950,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3563:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 11949,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3563:7:62",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 11952,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3563:10:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3554:19:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206e6f6e2d6578697374696e67204e4654",
                              "id": 11954,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3575:26:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              },
                              "value": "ERC721: non-existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              }
                            ],
                            "id": 11947,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3546:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11955,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3546:56:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11956,
                        "nodeType": "ExpressionStatement",
                        "src": "3546:56:62"
                      },
                      {
                        "expression": {
                          "id": 11957,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11936,
                          "src": "3619:5:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 11934,
                        "id": 11958,
                        "nodeType": "Return",
                        "src": "3612:12:62"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11927,
                    "nodeType": "StructuredDocumentation",
                    "src": "3367:23:62",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "6352211e",
                  "id": 11960,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11931,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3449:8:62"
                  },
                  "parameters": {
                    "id": 11930,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11929,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 11960,
                        "src": "3412:15:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11928,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3412:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3411:17:62"
                  },
                  "returnParameters": {
                    "id": 11934,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11933,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11960,
                        "src": "3467:7:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11932,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3467:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3466:9:62"
                  },
                  "scope": 12685,
                  "src": "3395:236:62",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13643
                  ],
                  "body": {
                    "id": 12062,
                    "nodeType": "Block",
                    "src": "3735:916:62",
                    "statements": [
                      {
                        "assignments": [
                          11970
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11970,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 12062,
                            "src": "3745:13:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11969,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3745:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11974,
                        "initialValue": {
                          "baseExpression": {
                            "id": 11971,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11819,
                            "src": "3761:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 11973,
                          "indexExpression": {
                            "id": 11972,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11965,
                            "src": "3769:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3761:16:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3745:32:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11978,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11976,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11970,
                                "src": "3795:5:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 11977,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3804:1:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3795:10:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206e6f6e2d6578697374696e67204e4654",
                              "id": 11979,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3807:26:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              },
                              "value": "ERC721: non-existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              }
                            ],
                            "id": 11975,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3787:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3787:47:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11981,
                        "nodeType": "ExpressionStatement",
                        "src": "3787:47:62"
                      },
                      {
                        "assignments": [
                          11983
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11983,
                            "mutability": "mutable",
                            "name": "ownerAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 12062,
                            "src": "3844:20:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 11982,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3844:7:62",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11991,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 11988,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11970,
                                  "src": "3883:5:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 11987,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3875:7:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 11986,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3875:7:62",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 11989,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3875:14:62",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 11985,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3867:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 11984,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3867:7:62",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 11990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3867:23:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3844:46:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 11995,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11993,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11963,
                                "src": "3908:2:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 11994,
                                "name": "ownerAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11983,
                                "src": "3914:12:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3908:18:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a2073656c662d617070726f76616c",
                              "id": 11996,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3928:23:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6c1ee2a5a6fc0c5a7679155059f8807cdde24a5dc8123b64f2117c3f28d49a16",
                                "typeString": "literal_string \"ERC721: self-approval\""
                              },
                              "value": "ERC721: self-approval"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6c1ee2a5a6fc0c5a7679155059f8807cdde24a5dc8123b64f2117c3f28d49a16",
                                "typeString": "literal_string \"ERC721: self-approval\""
                              }
                            ],
                            "id": 11992,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3900:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3900:52:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11998,
                        "nodeType": "ExpressionStatement",
                        "src": "3900:52:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 12001,
                                  "name": "ownerAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11983,
                                  "src": "3984:12:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 12002,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 312,
                                    "src": "3998:10:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                      "typeString": "function () view returns (address payable)"
                                    }
                                  },
                                  "id": 12003,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3998:12:62",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "id": 12000,
                                "name": "_isOperatable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12684,
                                "src": "3970:13:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address,address) view returns (bool)"
                                }
                              },
                              "id": 12004,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3970:41:62",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206e6f6e2d617070726f7665642073656e646572",
                              "id": 12005,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4013:29:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2a3aeeb54310c891d22cb19ac395d04240b1c55a8c1ca2a34d903a671a8129ae",
                                "typeString": "literal_string \"ERC721: non-approved sender\""
                              },
                              "value": "ERC721: non-approved sender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2a3aeeb54310c891d22cb19ac395d04240b1c55a8c1ca2a34d903a671a8129ae",
                                "typeString": "literal_string \"ERC721: non-approved sender\""
                              }
                            ],
                            "id": 11999,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3962:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3962:81:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12007,
                        "nodeType": "ExpressionStatement",
                        "src": "3962:81:62"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 12013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12008,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11963,
                            "src": "4057:2:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 12011,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4071:1:62",
                                "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": 12010,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4063:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 12009,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4063:7:62",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12012,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4063:10:62",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4057:16:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 12054,
                          "nodeType": "Block",
                          "src": "4283:312:62",
                          "statements": [
                            {
                              "assignments": [
                                12032
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 12032,
                                  "mutability": "mutable",
                                  "name": "ownerWithApprovalBit",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 12054,
                                  "src": "4297:28:62",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 12031,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4297:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 12036,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 12035,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 12033,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11970,
                                  "src": "4328:5:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "|",
                                "rightExpression": {
                                  "id": 12034,
                                  "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11802,
                                  "src": "4336:26:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4328:34:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4297:65:62"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 12039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 12037,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11970,
                                  "src": "4380:5:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 12038,
                                  "name": "ownerWithApprovalBit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12032,
                                  "src": "4389:20:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4380:29:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 12047,
                              "nodeType": "IfStatement",
                              "src": "4376:168:62",
                              "trueBody": {
                                "id": 12046,
                                "nodeType": "Block",
                                "src": "4411:133:62",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 12044,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 12040,
                                          "name": "_owners",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11819,
                                          "src": "4490:7:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 12042,
                                        "indexExpression": {
                                          "id": 12041,
                                          "name": "tokenId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11965,
                                          "src": "4498:7:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4490:16:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 12043,
                                        "name": "ownerWithApprovalBit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12032,
                                        "src": "4509:20:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4490:39:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 12045,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4490:39:62"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 12052,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 12048,
                                    "name": "_nftApprovals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11827,
                                    "src": "4557:13:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    }
                                  },
                                  "id": 12050,
                                  "indexExpression": {
                                    "id": 12049,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11965,
                                    "src": "4571:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4557:22:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 12051,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11963,
                                  "src": "4582:2:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4557:27:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 12053,
                              "nodeType": "ExpressionStatement",
                              "src": "4557:27:62"
                            }
                          ]
                        },
                        "id": 12055,
                        "nodeType": "IfStatement",
                        "src": "4053:542:62",
                        "trueBody": {
                          "id": 12030,
                          "nodeType": "Block",
                          "src": "4075:202:62",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 12018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 12016,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 12014,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11970,
                                    "src": "4093:5:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "id": 12015,
                                    "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11802,
                                    "src": "4101:26:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4093:34:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 12017,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4131:1:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4093:39:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 12029,
                              "nodeType": "IfStatement",
                              "src": "4089:178:62",
                              "trueBody": {
                                "id": 12028,
                                "nodeType": "Block",
                                "src": "4134:133:62",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 12026,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 12019,
                                          "name": "_owners",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11819,
                                          "src": "4212:7:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 12021,
                                        "indexExpression": {
                                          "id": 12020,
                                          "name": "tokenId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11965,
                                          "src": "4220:7:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4212:16:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 12024,
                                            "name": "ownerAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 11983,
                                            "src": "4239:12:62",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 12023,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "4231:7:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 12022,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "4231:7:62",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 12025,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4231:21:62",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4212:40:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 12027,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4212:40:62"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 12057,
                              "name": "ownerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11983,
                              "src": "4618:12:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12058,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11963,
                              "src": "4632:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12059,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11965,
                              "src": "4636:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12056,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13757,
                            "src": "4609:8:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 12060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4609:35:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12061,
                        "nodeType": "EmitStatement",
                        "src": "4604:40:62"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11961,
                    "nodeType": "StructuredDocumentation",
                    "src": "3637:23:62",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "095ea7b3",
                  "id": 12063,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11967,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3726:8:62"
                  },
                  "parameters": {
                    "id": 11966,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11963,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 12063,
                        "src": "3682:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11962,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3682:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11965,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12063,
                        "src": "3694:15:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11964,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3694:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3681:29:62"
                  },
                  "returnParameters": {
                    "id": 11968,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3735:0:62"
                  },
                  "scope": 12685,
                  "src": "3665:986:62",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13651
                  ],
                  "body": {
                    "id": 12111,
                    "nodeType": "Block",
                    "src": "4770:289:62",
                    "statements": [
                      {
                        "assignments": [
                          12073
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12073,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 12111,
                            "src": "4780:13:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12072,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4780:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12077,
                        "initialValue": {
                          "baseExpression": {
                            "id": 12074,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11819,
                            "src": "4796:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 12076,
                          "indexExpression": {
                            "id": 12075,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12066,
                            "src": "4804:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4796:16:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4780:32:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 12090,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 12083,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12073,
                                        "src": "4846:5:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 12082,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4838:7:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 12081,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4838:7:62",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 12084,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4838:14:62",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 12080,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4830:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12079,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4830:7:62",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12085,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4830:23:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 12088,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4865:1:62",
                                    "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": 12087,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4857:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12086,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4857:7:62",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12089,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4857:10:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4830:37:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206e6f6e2d6578697374696e67204e4654",
                              "id": 12091,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4869:26:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              },
                              "value": "ERC721: non-existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              }
                            ],
                            "id": 12078,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4822:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4822:74:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12093,
                        "nodeType": "ExpressionStatement",
                        "src": "4822:74:62"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 12096,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 12094,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12073,
                              "src": "4910:5:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 12095,
                              "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11802,
                              "src": "4918:26:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4910:34:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 12097,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4948:1:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4910:39:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 12109,
                          "nodeType": "Block",
                          "src": "5011:42:62",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 12106,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5040:1:62",
                                    "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": 12105,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5032:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12104,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5032:7:62",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12107,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5032:10:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "functionReturnParameters": 12071,
                              "id": 12108,
                              "nodeType": "Return",
                              "src": "5025:17:62"
                            }
                          ]
                        },
                        "id": 12110,
                        "nodeType": "IfStatement",
                        "src": "4906:147:62",
                        "trueBody": {
                          "id": 12103,
                          "nodeType": "Block",
                          "src": "4951:54:62",
                          "statements": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 12099,
                                  "name": "_nftApprovals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11827,
                                  "src": "4972:13:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 12101,
                                "indexExpression": {
                                  "id": 12100,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12066,
                                  "src": "4986:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4972:22:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "functionReturnParameters": 12071,
                              "id": 12102,
                              "nodeType": "Return",
                              "src": "4965:29:62"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12064,
                    "nodeType": "StructuredDocumentation",
                    "src": "4657:23:62",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "081812fc",
                  "id": 12112,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getApproved",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12068,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4743:8:62"
                  },
                  "parameters": {
                    "id": 12067,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12066,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12112,
                        "src": "4706:15:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12065,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4706:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4705:17:62"
                  },
                  "returnParameters": {
                    "id": 12071,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12070,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12112,
                        "src": "4761:7:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12069,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4761:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4760:9:62"
                  },
                  "scope": 12685,
                  "src": "4685:374:62",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13659
                  ],
                  "body": {
                    "id": 12147,
                    "nodeType": "Block",
                    "src": "5177:214:62",
                    "statements": [
                      {
                        "assignments": [
                          12122
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12122,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 12147,
                            "src": "5187:14:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12121,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5187:7:62",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12125,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 12123,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "5204:10:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 12124,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5204:12:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5187:29:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12127,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12115,
                                "src": "5234:8:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 12128,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12122,
                                "src": "5246:6:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "5234:18:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a2073656c662d617070726f76616c",
                              "id": 12130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5254:23:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6c1ee2a5a6fc0c5a7679155059f8807cdde24a5dc8123b64f2117c3f28d49a16",
                                "typeString": "literal_string \"ERC721: self-approval\""
                              },
                              "value": "ERC721: self-approval"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6c1ee2a5a6fc0c5a7679155059f8807cdde24a5dc8123b64f2117c3f28d49a16",
                                "typeString": "literal_string \"ERC721: self-approval\""
                              }
                            ],
                            "id": 12126,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5226:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5226:52:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12132,
                        "nodeType": "ExpressionStatement",
                        "src": "5226:52:62"
                      },
                      {
                        "expression": {
                          "id": 12139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 12133,
                                "name": "_operators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11815,
                                "src": "5288:10:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 12136,
                              "indexExpression": {
                                "id": 12134,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12122,
                                "src": "5299:6:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5288:18:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 12137,
                            "indexExpression": {
                              "id": 12135,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12115,
                              "src": "5307:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5288:28:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12138,
                            "name": "approved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12117,
                            "src": "5319:8:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5288:39:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12140,
                        "nodeType": "ExpressionStatement",
                        "src": "5288:39:62"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 12142,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12122,
                              "src": "5357:6:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12143,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12115,
                              "src": "5365:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12144,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12117,
                              "src": "5375:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 12141,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13765,
                            "src": "5342:14:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 12145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5342:42:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12146,
                        "nodeType": "EmitStatement",
                        "src": "5337:47:62"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12113,
                    "nodeType": "StructuredDocumentation",
                    "src": "5065:23:62",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "a22cb465",
                  "id": 12148,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12119,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5168:8:62"
                  },
                  "parameters": {
                    "id": 12118,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12115,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 12148,
                        "src": "5120:16:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12114,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5120:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12117,
                        "mutability": "mutable",
                        "name": "approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 12148,
                        "src": "5138:13:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12116,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5138:4:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5119:33:62"
                  },
                  "returnParameters": {
                    "id": 12120,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5177:0:62"
                  },
                  "scope": 12685,
                  "src": "5093:298:62",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13669
                  ],
                  "body": {
                    "id": 12165,
                    "nodeType": "Block",
                    "src": "5528:51:62",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 12159,
                              "name": "_operators",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11815,
                              "src": "5545:10:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                "typeString": "mapping(address => mapping(address => bool))"
                              }
                            },
                            "id": 12161,
                            "indexExpression": {
                              "id": 12160,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12151,
                              "src": "5556:5:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5545:17:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 12163,
                          "indexExpression": {
                            "id": 12162,
                            "name": "operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12153,
                            "src": "5563:8:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5545:27:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 12158,
                        "id": 12164,
                        "nodeType": "Return",
                        "src": "5538:34:62"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12149,
                    "nodeType": "StructuredDocumentation",
                    "src": "5397:23:62",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 12166,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12155,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5504:8:62"
                  },
                  "parameters": {
                    "id": 12154,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12151,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 12166,
                        "src": "5451:13:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12150,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5451:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12153,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 12166,
                        "src": "5466:16:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12152,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5466:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5450:33:62"
                  },
                  "returnParameters": {
                    "id": 12158,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12157,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12166,
                        "src": "5522:4:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12156,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5522:4:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5521:6:62"
                  },
                  "scope": 12685,
                  "src": "5425:154:62",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13679
                  ],
                  "body": {
                    "id": 12185,
                    "nodeType": "Block",
                    "src": "5732:153:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12178,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12169,
                              "src": "5769:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12179,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12171,
                              "src": "5787:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12180,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12173,
                              "src": "5803:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 12181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5824:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 12182,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5863:5:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 12177,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12490,
                            "src": "5742:13:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 12183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5742:136:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12184,
                        "nodeType": "ExpressionStatement",
                        "src": "5742:136:62"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12167,
                    "nodeType": "StructuredDocumentation",
                    "src": "5585:23:62",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "23b872dd",
                  "id": 12186,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12175,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5723:8:62"
                  },
                  "parameters": {
                    "id": 12174,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12169,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 12186,
                        "src": "5644:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12168,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5644:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12171,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 12186,
                        "src": "5666:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12170,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5666:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12173,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12186,
                        "src": "5686:15:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12172,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5686:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5634:73:62"
                  },
                  "returnParameters": {
                    "id": 12176,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5732:0:62"
                  },
                  "scope": 12685,
                  "src": "5613:272:62",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13689
                  ],
                  "body": {
                    "id": 12205,
                    "nodeType": "Block",
                    "src": "6042:152:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12198,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12189,
                              "src": "6079:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12199,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12191,
                              "src": "6097:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12200,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12193,
                              "src": "6113:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 12201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6134:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "74727565",
                              "id": 12202,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6173:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 12197,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12490,
                            "src": "6052:13:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 12203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6052:135:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12204,
                        "nodeType": "ExpressionStatement",
                        "src": "6052:135:62"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12187,
                    "nodeType": "StructuredDocumentation",
                    "src": "5891:23:62",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "42842e0e",
                  "id": 12206,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12195,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6033:8:62"
                  },
                  "parameters": {
                    "id": 12194,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12189,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 12206,
                        "src": "5954:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12188,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5954:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12191,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 12206,
                        "src": "5976:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12190,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5976:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12193,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12206,
                        "src": "5996:15:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12192,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5996:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5944:73:62"
                  },
                  "returnParameters": {
                    "id": 12196,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6042:0:62"
                  },
                  "scope": 12685,
                  "src": "5919:275:62",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13701
                  ],
                  "body": {
                    "id": 12227,
                    "nodeType": "Block",
                    "src": "6378:154:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12220,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12209,
                              "src": "6415:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12221,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12211,
                              "src": "6433:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12222,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12213,
                              "src": "6449:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 12223,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12215,
                              "src": "6470:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 12224,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6511:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "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"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 12219,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12490,
                            "src": "6388:13:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 12225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6388:137:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12226,
                        "nodeType": "ExpressionStatement",
                        "src": "6388:137:62"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12207,
                    "nodeType": "StructuredDocumentation",
                    "src": "6200:23:62",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "b88d4fde",
                  "id": 12228,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12217,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6369:8:62"
                  },
                  "parameters": {
                    "id": 12216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12209,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 12228,
                        "src": "6263:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12208,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6263:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12211,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 12228,
                        "src": "6285:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12210,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6285:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12213,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12228,
                        "src": "6305:15:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12212,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6305:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12215,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 12228,
                        "src": "6330:17:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 12214,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6330:5:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6253:100:62"
                  },
                  "returnParameters": {
                    "id": 12218,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6378:0:62"
                  },
                  "scope": 12685,
                  "src": "6228:304:62",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13716
                  ],
                  "body": {
                    "id": 12309,
                    "nodeType": "Block",
                    "src": "6842:510:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12246,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12241,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12233,
                                "src": "6860:2:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 12244,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6874:1:62",
                                    "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": 12243,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6866:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12242,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6866:7:62",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12245,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6866:10:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6860:16:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a207472616e7366657220746f207a65726f",
                              "id": 12247,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6878:26:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5b90446511982d52d493408f0c1515acf14051ee1877b79fbb305aef493c9f57",
                                "typeString": "literal_string \"ERC721: transfer to zero\""
                              },
                              "value": "ERC721: transfer to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5b90446511982d52d493408f0c1515acf14051ee1877b79fbb305aef493c9f57",
                                "typeString": "literal_string \"ERC721: transfer to zero\""
                              }
                            ],
                            "id": 12240,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6852:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6852:53:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12249,
                        "nodeType": "ExpressionStatement",
                        "src": "6852:53:62"
                      },
                      {
                        "assignments": [
                          12251
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12251,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 12309,
                            "src": "6915:14:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12250,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6915:7:62",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12254,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 12252,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "6932:10:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 12253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6932:12:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6915:29:62"
                      },
                      {
                        "assignments": [
                          12256
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12256,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 12309,
                            "src": "6954:15:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 12255,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "6954:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12261,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 12258,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12231,
                              "src": "6986:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12259,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12251,
                              "src": "6992:6:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12257,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12684,
                            "src": "6972:13:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 12260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6972:27:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6954:45:62"
                      },
                      {
                        "assignments": [
                          12263
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12263,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 12309,
                            "src": "7010:14:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12262,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7010:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12266,
                        "initialValue": {
                          "expression": {
                            "id": 12264,
                            "name": "tokenIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12236,
                            "src": "7027:8:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 12265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "7027:15:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7010:32:62"
                      },
                      {
                        "body": {
                          "id": 12296,
                          "nodeType": "Block",
                          "src": "7087:163:62",
                          "statements": [
                            {
                              "assignments": [
                                12277
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 12277,
                                  "mutability": "mutable",
                                  "name": "tokenId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 12296,
                                  "src": "7101:15:62",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 12276,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7101:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 12281,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 12278,
                                  "name": "tokenIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12236,
                                  "src": "7119:8:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 12280,
                                "indexExpression": {
                                  "id": 12279,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12268,
                                  "src": "7128:1:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7119:11:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7101:29:62"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 12283,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12231,
                                    "src": "7157:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 12284,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12233,
                                    "src": "7163:2:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 12285,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12277,
                                    "src": "7167:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 12286,
                                    "name": "operatable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12256,
                                    "src": "7176:10:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "74727565",
                                    "id": 12287,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7188:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 12282,
                                  "name": "_transferNFT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12566,
                                  "src": "7144:12:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                                    "typeString": "function (address,address,uint256,bool,bool)"
                                  }
                                },
                                "id": 12288,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7144:49:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12289,
                              "nodeType": "ExpressionStatement",
                              "src": "7144:49:62"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 12291,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12231,
                                    "src": "7221:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 12292,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12233,
                                    "src": "7227:2:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 12293,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12277,
                                    "src": "7231:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12290,
                                  "name": "Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13749,
                                  "src": "7212:8:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 12294,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7212:27:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12295,
                              "nodeType": "EmitStatement",
                              "src": "7207:32:62"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12270,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12268,
                            "src": "7069:1:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 12271,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12263,
                            "src": "7074:6:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7069:11:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12297,
                        "initializationExpression": {
                          "assignments": [
                            12268
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 12268,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 12297,
                              "src": "7058:9:62",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 12267,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7058:7:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 12269,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7058:9:62"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 12274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "7082:3:62",
                            "subExpression": {
                              "id": 12273,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12268,
                              "src": "7084:1:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12275,
                          "nodeType": "ExpressionStatement",
                          "src": "7082:3:62"
                        },
                        "nodeType": "ForStatement",
                        "src": "7053:197:62"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12298,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12263,
                            "src": "7264:6:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 12299,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7274:1:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7264:11:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12308,
                        "nodeType": "IfStatement",
                        "src": "7260:86:62",
                        "trueBody": {
                          "id": 12307,
                          "nodeType": "Block",
                          "src": "7277:69:62",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 12302,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12231,
                                    "src": "7318:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 12303,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12233,
                                    "src": "7324:2:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 12304,
                                    "name": "length",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12263,
                                    "src": "7328:6:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12301,
                                  "name": "_transferNFTUpdateBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12593,
                                  "src": "7291:26:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 12305,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7291:44:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12306,
                              "nodeType": "ExpressionStatement",
                              "src": "7291:44:62"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12229,
                    "nodeType": "StructuredDocumentation",
                    "src": "6667:36:62",
                    "text": "@inheritdoc IERC721BatchTransfer"
                  },
                  "functionSelector": "f3993d11",
                  "id": 12310,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12238,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6833:8:62"
                  },
                  "parameters": {
                    "id": 12237,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12231,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 12310,
                        "src": "6744:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12230,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6744:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12233,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 12310,
                        "src": "6766:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12232,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6766:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12236,
                        "mutability": "mutable",
                        "name": "tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 12310,
                        "src": "6786:25:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 12234,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6786:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12235,
                          "nodeType": "ArrayTypeName",
                          "src": "6786:9:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6734:83:62"
                  },
                  "returnParameters": {
                    "id": 12239,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6842:0:62"
                  },
                  "scope": 12685,
                  "src": "6708:644:62",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12363,
                    "nodeType": "Block",
                    "src": "7608:269:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12322,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12312,
                                "src": "7626:2:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 12325,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7640:1:62",
                                    "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": 12324,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7632:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12323,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7632:7:62",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12326,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7632:10:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "7626:16:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206d696e7420746f207a65726f",
                              "id": 12328,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7644:22:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_eda2b88504e5e8fd3513ade42d531cbab42b919ad3468e0299d7073bcde4796f",
                                "typeString": "literal_string \"ERC721: mint to zero\""
                              },
                              "value": "ERC721: mint to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_eda2b88504e5e8fd3513ade42d531cbab42b919ad3468e0299d7073bcde4796f",
                                "typeString": "literal_string \"ERC721: mint to zero\""
                              }
                            ],
                            "id": 12321,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7618:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7618:49:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12330,
                        "nodeType": "ExpressionStatement",
                        "src": "7618:49:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12332,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12312,
                              "src": "7687:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12333,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12314,
                              "src": "7691:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 12334,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7700:5:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 12331,
                            "name": "_mintNFT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12633,
                            "src": "7678:8:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,bool)"
                            }
                          },
                          "id": 12335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7678:28:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12336,
                        "nodeType": "ExpressionStatement",
                        "src": "7678:28:62"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 12340,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7739:1:62",
                                  "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": 12339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7731:7:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 12338,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7731:7:62",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 12341,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7731:10:62",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 12342,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12312,
                              "src": "7743:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12343,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12314,
                              "src": "7747:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12337,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13749,
                            "src": "7722:8:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 12344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7722:33:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12345,
                        "nodeType": "EmitStatement",
                        "src": "7717:38:62"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 12350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12346,
                            "name": "safe",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12318,
                            "src": "7769:4:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 12347,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12312,
                                "src": "7777:2:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 12348,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isContract",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1284,
                              "src": "7777:13:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 12349,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7777:15:62",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7769:23:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12362,
                        "nodeType": "IfStatement",
                        "src": "7765:106:62",
                        "trueBody": {
                          "id": 12361,
                          "nodeType": "Block",
                          "src": "7794:77:62",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 12354,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7838:1:62",
                                        "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": 12353,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7830:7:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 12352,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7830:7:62",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 12355,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7830:10:62",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 12356,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12312,
                                    "src": "7842:2:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 12357,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12314,
                                    "src": "7846:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 12358,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12316,
                                    "src": "7855:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 12351,
                                  "name": "_callOnERC721Received",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12662,
                                  "src": "7808:21:62",
                                  "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": 12359,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7808:52:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12360,
                              "nodeType": "ExpressionStatement",
                              "src": "7808:52:62"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 12364,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12319,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12312,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 12364,
                        "src": "7511:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12311,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7511:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12314,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12364,
                        "src": "7531:15:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12313,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7531:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12316,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 12364,
                        "src": "7556:17:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 12315,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7556:5:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12318,
                        "mutability": "mutable",
                        "name": "safe",
                        "nodeType": "VariableDeclaration",
                        "scope": 12364,
                        "src": "7583:9:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12317,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7583:4:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7501:97:62"
                  },
                  "returnParameters": {
                    "id": 12320,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7608:0:62"
                  },
                  "scope": 12685,
                  "src": "7487:390:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12425,
                    "nodeType": "Block",
                    "src": "7951:336:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12378,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12373,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12366,
                                "src": "7969:2:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 12376,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7983:1:62",
                                    "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": 12375,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7975:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12374,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7975:7:62",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12377,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7975:10:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "7969:16:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206d696e7420746f207a65726f",
                              "id": 12379,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7987:22:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_eda2b88504e5e8fd3513ade42d531cbab42b919ad3468e0299d7073bcde4796f",
                                "typeString": "literal_string \"ERC721: mint to zero\""
                              },
                              "value": "ERC721: mint to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_eda2b88504e5e8fd3513ade42d531cbab42b919ad3468e0299d7073bcde4796f",
                                "typeString": "literal_string \"ERC721: mint to zero\""
                              }
                            ],
                            "id": 12372,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7961:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12380,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7961:49:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12381,
                        "nodeType": "ExpressionStatement",
                        "src": "7961:49:62"
                      },
                      {
                        "assignments": [
                          12383
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12383,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 12425,
                            "src": "8021:14:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12382,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8021:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12386,
                        "initialValue": {
                          "expression": {
                            "id": 12384,
                            "name": "tokenIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12369,
                            "src": "8038:8:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 12385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "8038:15:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8021:32:62"
                      },
                      {
                        "body": {
                          "id": 12417,
                          "nodeType": "Block",
                          "src": "8097:147:62",
                          "statements": [
                            {
                              "assignments": [
                                12397
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 12397,
                                  "mutability": "mutable",
                                  "name": "tokenId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 12417,
                                  "src": "8111:15:62",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 12396,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8111:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 12401,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 12398,
                                  "name": "tokenIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12369,
                                  "src": "8129:8:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 12400,
                                "indexExpression": {
                                  "id": 12399,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12388,
                                  "src": "8138:1:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8129:11:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8111:29:62"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 12403,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12366,
                                    "src": "8163:2:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 12404,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12397,
                                    "src": "8167:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "74727565",
                                    "id": 12405,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8176:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 12402,
                                  "name": "_mintNFT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12633,
                                  "src": "8154:8:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,bool)"
                                  }
                                },
                                "id": 12406,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8154:27:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12407,
                              "nodeType": "ExpressionStatement",
                              "src": "8154:27:62"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 12411,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8217:1:62",
                                        "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": 12410,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8209:7:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 12409,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8209:7:62",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 12412,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8209:10:62",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 12413,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12366,
                                    "src": "8221:2:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 12414,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12397,
                                    "src": "8225:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12408,
                                  "name": "Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13749,
                                  "src": "8200:8:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 12415,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8200:33:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12416,
                              "nodeType": "EmitStatement",
                              "src": "8195:38:62"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12390,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12388,
                            "src": "8079:1:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 12391,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12383,
                            "src": "8084:6:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8079:11:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12418,
                        "initializationExpression": {
                          "assignments": [
                            12388
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 12388,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 12418,
                              "src": "8068:9:62",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 12387,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8068:7:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 12389,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "8068:9:62"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 12394,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "8092:3:62",
                            "subExpression": {
                              "id": 12393,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12388,
                              "src": "8094:1:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12395,
                          "nodeType": "ExpressionStatement",
                          "src": "8092:3:62"
                        },
                        "nodeType": "ForStatement",
                        "src": "8063:181:62"
                      },
                      {
                        "expression": {
                          "id": 12423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 12419,
                              "name": "_nftBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11823,
                              "src": "8254:12:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 12421,
                            "indexExpression": {
                              "id": 12420,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12366,
                              "src": "8267:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8254:16:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 12422,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12383,
                            "src": "8274:6:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8254:26:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12424,
                        "nodeType": "ExpressionStatement",
                        "src": "8254:26:62"
                      }
                    ]
                  },
                  "id": 12426,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_batchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12370,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12366,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 12426,
                        "src": "7903:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12365,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7903:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12369,
                        "mutability": "mutable",
                        "name": "tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 12426,
                        "src": "7915:25:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 12367,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7915:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12368,
                          "nodeType": "ArrayTypeName",
                          "src": "7915:9:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7902:39:62"
                  },
                  "returnParameters": {
                    "id": 12371,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7951:0:62"
                  },
                  "scope": 12685,
                  "src": "7883:404:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12489,
                    "nodeType": "Block",
                    "src": "8444:377:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12440,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12430,
                                "src": "8462:2:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 12443,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8476:1:62",
                                    "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": 12442,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8468:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12441,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8468:7:62",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12444,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8468:10:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "8462:16:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a207472616e7366657220746f207a65726f",
                              "id": 12446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8480:26:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5b90446511982d52d493408f0c1515acf14051ee1877b79fbb305aef493c9f57",
                                "typeString": "literal_string \"ERC721: transfer to zero\""
                              },
                              "value": "ERC721: transfer to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5b90446511982d52d493408f0c1515acf14051ee1877b79fbb305aef493c9f57",
                                "typeString": "literal_string \"ERC721: transfer to zero\""
                              }
                            ],
                            "id": 12439,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8454:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8454:53:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12448,
                        "nodeType": "ExpressionStatement",
                        "src": "8454:53:62"
                      },
                      {
                        "assignments": [
                          12450
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12450,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 12489,
                            "src": "8517:14:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12449,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8517:7:62",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12453,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 12451,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "8534:10:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 12452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8534:12:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8517:29:62"
                      },
                      {
                        "assignments": [
                          12455
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12455,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 12489,
                            "src": "8556:15:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 12454,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "8556:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12460,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 12457,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12428,
                              "src": "8588:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12458,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12450,
                              "src": "8594:6:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12456,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12684,
                            "src": "8574:13:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 12459,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8574:27:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8556:45:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12462,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12428,
                              "src": "8625:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12463,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12430,
                              "src": "8631:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12464,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12432,
                              "src": "8635:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 12465,
                              "name": "operatable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12455,
                              "src": "8644:10:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 12466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8656:5:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 12461,
                            "name": "_transferNFT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12566,
                            "src": "8612:12:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bool,bool)"
                            }
                          },
                          "id": 12467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8612:50:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12468,
                        "nodeType": "ExpressionStatement",
                        "src": "8612:50:62"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 12470,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12428,
                              "src": "8687:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12471,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12430,
                              "src": "8693:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12472,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12432,
                              "src": "8697:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12469,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13749,
                            "src": "8678:8:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 12473,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8678:27:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12474,
                        "nodeType": "EmitStatement",
                        "src": "8673:32:62"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 12479,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12475,
                            "name": "safe",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12436,
                            "src": "8719:4:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 12476,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12430,
                                "src": "8727:2:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 12477,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isContract",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1284,
                              "src": "8727:13:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 12478,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8727:15:62",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8719:23:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12488,
                        "nodeType": "IfStatement",
                        "src": "8715:100:62",
                        "trueBody": {
                          "id": 12487,
                          "nodeType": "Block",
                          "src": "8744:71:62",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 12481,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12428,
                                    "src": "8780:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 12482,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12430,
                                    "src": "8786:2:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 12483,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12432,
                                    "src": "8790:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 12484,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12434,
                                    "src": "8799:4:62",
                                    "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": 12480,
                                  "name": "_callOnERC721Received",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12662,
                                  "src": "8758:21:62",
                                  "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": 12485,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8758:46:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12486,
                              "nodeType": "ExpressionStatement",
                              "src": "8758:46:62"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 12490,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12437,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12428,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 12490,
                        "src": "8325:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12427,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8325:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12430,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 12490,
                        "src": "8347:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12429,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8347:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12432,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12490,
                        "src": "8367:15:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12431,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8367:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12434,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 12490,
                        "src": "8392:17:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 12433,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8392:5:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12436,
                        "mutability": "mutable",
                        "name": "safe",
                        "nodeType": "VariableDeclaration",
                        "scope": 12490,
                        "src": "8419:9:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12435,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8419:4:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8315:119:62"
                  },
                  "returnParameters": {
                    "id": 12438,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8444:0:62"
                  },
                  "scope": 12685,
                  "src": "8293:528:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12565,
                    "nodeType": "Block",
                    "src": "9110:419:62",
                    "statements": [
                      {
                        "assignments": [
                          12504
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12504,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 12565,
                            "src": "9120:13:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12503,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9120:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12508,
                        "initialValue": {
                          "baseExpression": {
                            "id": 12505,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11819,
                            "src": "9136:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 12507,
                          "indexExpression": {
                            "id": 12506,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12496,
                            "src": "9144:2:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9136:11:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9120:27:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12518,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12510,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12492,
                                "src": "9165:4:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 12515,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12504,
                                        "src": "9189:5:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 12514,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9181:7:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 12513,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9181:7:62",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 12516,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9181:14:62",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 12512,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9173:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12511,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9173:7:62",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12517,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9173:23:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "9165:31:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206e6f6e2d6f776e6564204e4654",
                              "id": 12519,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9198:23:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_59b4fc3a8c2b67b7c14f6b6b265fbb2ff4696cc487771e833e843fdd44b74f27",
                                "typeString": "literal_string \"ERC721: non-owned NFT\""
                              },
                              "value": "ERC721: non-owned NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_59b4fc3a8c2b67b7c14f6b6b265fbb2ff4696cc487771e833e843fdd44b74f27",
                                "typeString": "literal_string \"ERC721: non-owned NFT\""
                              }
                            ],
                            "id": 12509,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9157:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9157:65:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12521,
                        "nodeType": "ExpressionStatement",
                        "src": "9157:65:62"
                      },
                      {
                        "condition": {
                          "id": 12523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "9236:11:62",
                          "subExpression": {
                            "id": 12522,
                            "name": "operatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12498,
                            "src": "9237:10:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12542,
                        "nodeType": "IfStatement",
                        "src": "9232:160:62",
                        "trueBody": {
                          "id": 12541,
                          "nodeType": "Block",
                          "src": "9249:143:62",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 12537,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 12529,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 12527,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 12525,
                                              "name": "owner",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12504,
                                              "src": "9272:5:62",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "id": 12526,
                                              "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 11802,
                                              "src": "9280:26:62",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "9272:34:62",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12528,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9310:1:62",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "9272:39:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 12530,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "9271:41:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 12536,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 12531,
                                          "name": "_msgSender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 312,
                                          "src": "9316:10:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                            "typeString": "function () view returns (address payable)"
                                          }
                                        },
                                        "id": 12532,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9316:12:62",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "baseExpression": {
                                          "id": 12533,
                                          "name": "_nftApprovals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11827,
                                          "src": "9332:13:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                            "typeString": "mapping(uint256 => address)"
                                          }
                                        },
                                        "id": 12535,
                                        "indexExpression": {
                                          "id": 12534,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12496,
                                          "src": "9346:2:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "9332:17:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "9316:33:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "9271:78:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4552433732313a206e6f6e2d617070726f7665642073656e646572",
                                    "id": 12538,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9351:29:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_2a3aeeb54310c891d22cb19ac395d04240b1c55a8c1ca2a34d903a671a8129ae",
                                      "typeString": "literal_string \"ERC721: non-approved sender\""
                                    },
                                    "value": "ERC721: non-approved sender"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_2a3aeeb54310c891d22cb19ac395d04240b1c55a8c1ca2a34d903a671a8129ae",
                                      "typeString": "literal_string \"ERC721: non-approved sender\""
                                    }
                                  ],
                                  "id": 12524,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "9263:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 12539,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9263:118:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12540,
                              "nodeType": "ExpressionStatement",
                              "src": "9263:118:62"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 12553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 12543,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11819,
                              "src": "9401:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 12545,
                            "indexExpression": {
                              "id": 12544,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12496,
                              "src": "9409:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9401:11:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 12550,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12494,
                                    "src": "9431:2:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 12549,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9423:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 12548,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9423:7:62",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12551,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9423:11:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 12547,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9415:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 12546,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9415:7:62",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12552,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9415:20:62",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9401:34:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12554,
                        "nodeType": "ExpressionStatement",
                        "src": "9401:34:62"
                      },
                      {
                        "condition": {
                          "id": 12556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "9449:8:62",
                          "subExpression": {
                            "id": 12555,
                            "name": "isBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12500,
                            "src": "9450:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12564,
                        "nodeType": "IfStatement",
                        "src": "9445:78:62",
                        "trueBody": {
                          "id": 12563,
                          "nodeType": "Block",
                          "src": "9459:64:62",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 12558,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12492,
                                    "src": "9500:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 12559,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12494,
                                    "src": "9506:2:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 12560,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9510:1:62",
                                    "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_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "id": 12557,
                                  "name": "_transferNFTUpdateBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12593,
                                  "src": "9473:26:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 12561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9473:39:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12562,
                              "nodeType": "ExpressionStatement",
                              "src": "9473:39:62"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 12566,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferNFT",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12501,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12492,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 12566,
                        "src": "8987:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12491,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8987:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12494,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 12566,
                        "src": "9009:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12493,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9009:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12496,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 12566,
                        "src": "9029:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12495,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9029:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12498,
                        "mutability": "mutable",
                        "name": "operatable",
                        "nodeType": "VariableDeclaration",
                        "scope": 12566,
                        "src": "9049:15:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12497,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9049:4:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12500,
                        "mutability": "mutable",
                        "name": "isBatch",
                        "nodeType": "VariableDeclaration",
                        "scope": 12566,
                        "src": "9074:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12499,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9074:4:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8977:115:62"
                  },
                  "returnParameters": {
                    "id": 12502,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9110:0:62"
                  },
                  "scope": 12685,
                  "src": "8956:573:62",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12592,
                    "nodeType": "Block",
                    "src": "9660:256:62",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 12577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12575,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12568,
                            "src": "9674:4:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 12576,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12570,
                            "src": "9682:2:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9674:10:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12591,
                        "nodeType": "IfStatement",
                        "src": "9670:240:62",
                        "trueBody": {
                          "id": 12590,
                          "nodeType": "Block",
                          "src": "9686:224:62",
                          "statements": [
                            {
                              "expression": {
                                "id": 12582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 12578,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11823,
                                    "src": "9773:12:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 12580,
                                  "indexExpression": {
                                    "id": 12579,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12568,
                                    "src": "9786:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "9773:18:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 12581,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12572,
                                  "src": "9795:6:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9773:28:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12583,
                              "nodeType": "ExpressionStatement",
                              "src": "9773:28:62"
                            },
                            {
                              "expression": {
                                "id": 12588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 12584,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11823,
                                    "src": "9873:12:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 12586,
                                  "indexExpression": {
                                    "id": 12585,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12570,
                                    "src": "9886:2:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "9873:16:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 12587,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12572,
                                  "src": "9893:6:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9873:26:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12589,
                              "nodeType": "ExpressionStatement",
                              "src": "9873:26:62"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 12593,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferNFTUpdateBalances",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12573,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12568,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 12593,
                        "src": "9580:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12567,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9580:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12570,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 12593,
                        "src": "9602:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12569,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9602:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12572,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 12593,
                        "src": "9622:14:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12571,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9622:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9570:72:62"
                  },
                  "returnParameters": {
                    "id": 12574,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9660:0:62"
                  },
                  "scope": 12685,
                  "src": "9535:381:62",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12632,
                    "nodeType": "Block",
                    "src": "10017:260:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12607,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 12603,
                                  "name": "_owners",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11819,
                                  "src": "10035:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 12605,
                                "indexExpression": {
                                  "id": 12604,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12597,
                                  "src": "10043:2:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10035:11:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 12606,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10050:1:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "10035:16:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206578697374696e672f6275726e74204e4654",
                              "id": 12608,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10053:28:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_446417abfe6672802cce7fc9cae8a6c76cd65814d1eb81cf46d900e8a992ed59",
                                "typeString": "literal_string \"ERC721: existing/burnt NFT\""
                              },
                              "value": "ERC721: existing/burnt NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_446417abfe6672802cce7fc9cae8a6c76cd65814d1eb81cf46d900e8a992ed59",
                                "typeString": "literal_string \"ERC721: existing/burnt NFT\""
                              }
                            ],
                            "id": 12602,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10027:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10027:55:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12610,
                        "nodeType": "ExpressionStatement",
                        "src": "10027:55:62"
                      },
                      {
                        "expression": {
                          "id": 12621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 12611,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11819,
                              "src": "10093:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 12613,
                            "indexExpression": {
                              "id": 12612,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12597,
                              "src": "10101:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10093:11:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 12618,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12595,
                                    "src": "10123:2:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 12617,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10115:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 12616,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10115:7:62",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12619,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10115:11:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 12615,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10107:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 12614,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "10107:7:62",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12620,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10107:20:62",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10093:34:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12622,
                        "nodeType": "ExpressionStatement",
                        "src": "10093:34:62"
                      },
                      {
                        "condition": {
                          "id": 12624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "10142:8:62",
                          "subExpression": {
                            "id": 12623,
                            "name": "isBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12599,
                            "src": "10143:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12631,
                        "nodeType": "IfStatement",
                        "src": "10138:133:62",
                        "trueBody": {
                          "id": 12630,
                          "nodeType": "Block",
                          "src": "10152:119:62",
                          "statements": [
                            {
                              "expression": {
                                "id": 12628,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "10242:18:62",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 12625,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11823,
                                    "src": "10244:12:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 12627,
                                  "indexExpression": {
                                    "id": 12626,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12595,
                                    "src": "10257:2:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10244:16:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12629,
                              "nodeType": "ExpressionStatement",
                              "src": "10242:18:62"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 12633,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mintNFT",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12600,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12595,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 12633,
                        "src": "9949:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12594,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9949:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12597,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 12633,
                        "src": "9969:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12596,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9969:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12599,
                        "mutability": "mutable",
                        "name": "isBatch",
                        "nodeType": "VariableDeclaration",
                        "scope": 12633,
                        "src": "9989:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12598,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9989:4:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9939:68:62"
                  },
                  "returnParameters": {
                    "id": 12601,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10017:0:62"
                  },
                  "scope": 12685,
                  "src": "9922:355:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12661,
                    "nodeType": "Block",
                    "src": "10837:145:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 12657,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 12650,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 312,
                                      "src": "10892:10:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                        "typeString": "function () view returns (address payable)"
                                      }
                                    },
                                    "id": 12651,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10892:12:62",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 12652,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12636,
                                    "src": "10906:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 12653,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12640,
                                    "src": "10912:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 12654,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12642,
                                    "src": "10921:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 12647,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12638,
                                        "src": "10871:2:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 12646,
                                      "name": "IERC721Receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13839,
                                      "src": "10855:15:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$13839_$",
                                        "typeString": "type(contract IERC721Receiver)"
                                      }
                                    },
                                    "id": 12648,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10855:19:62",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC721Receiver_$13839",
                                      "typeString": "contract IERC721Receiver"
                                    }
                                  },
                                  "id": 12649,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onERC721Received",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13838,
                                  "src": "10855:36:62",
                                  "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": 12655,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10855:71:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 12656,
                                "name": "_ERC721_RECEIVED",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11797,
                                "src": "10930:16:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "10855:91:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a207472616e736665722072656675736564",
                              "id": 12658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10948:26:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e60cd6d11f3cd333d70a8e4238c4f3b893711a9ef9ee1fc23fe77474224dee0f",
                                "typeString": "literal_string \"ERC721: transfer refused\""
                              },
                              "value": "ERC721: transfer refused"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e60cd6d11f3cd333d70a8e4238c4f3b893711a9ef9ee1fc23fe77474224dee0f",
                                "typeString": "literal_string \"ERC721: transfer refused\""
                              }
                            ],
                            "id": 12645,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10847:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10847:128:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12660,
                        "nodeType": "ExpressionStatement",
                        "src": "10847:128:62"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12634,
                    "nodeType": "StructuredDocumentation",
                    "src": "10283:409:62",
                    "text": " Calls {IERC721Receiver-onERC721Received} on a target contract.\n @dev Reverts if `to` is not a contract.\n @dev Reverts if the call to the target fails or is refused.\n @param from Previous token owner.\n @param to New token owner.\n @param tokenId Identifier of the token transferred.\n @param data Optional data to send along with the receiver contract call."
                  },
                  "id": 12662,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callOnERC721Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12643,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12636,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 12662,
                        "src": "10737:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12635,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10737:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12638,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 12662,
                        "src": "10759:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12637,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10759:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12640,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12662,
                        "src": "10779:15:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12639,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10779:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12642,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 12662,
                        "src": "10804:17:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 12641,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10804:5:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10727:100:62"
                  },
                  "returnParameters": {
                    "id": 12644,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10837:0:62"
                  },
                  "scope": 12685,
                  "src": "10697:285:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12683,
                    "nodeType": "Block",
                    "src": "11365:68:62",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 12681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 12674,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 12672,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12665,
                                  "src": "11383:4:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 12673,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12667,
                                  "src": "11391:6:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "11383:14:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 12675,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "11382:16:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 12676,
                                "name": "_operators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11815,
                                "src": "11402:10:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 12678,
                              "indexExpression": {
                                "id": 12677,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12665,
                                "src": "11413:4:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11402:16:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 12680,
                            "indexExpression": {
                              "id": 12679,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12667,
                              "src": "11419:6:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11402:24:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "11382:44:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 12671,
                        "id": 12682,
                        "nodeType": "Return",
                        "src": "11375:51:62"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12663,
                    "nodeType": "StructuredDocumentation",
                    "src": "10988:282:62",
                    "text": " Returns whether `sender` is authorised to make a transfer on behalf of `from`.\n @param from The address to check operatibility upon.\n @param sender The sender address.\n @return True if sender is `from` or an operator for `from`, false otherwise."
                  },
                  "id": 12684,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_isOperatable",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12668,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12665,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 12684,
                        "src": "11298:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12664,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11298:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12667,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 12684,
                        "src": "11312:14:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12666,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11312:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11297:30:62"
                  },
                  "returnParameters": {
                    "id": 12671,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12670,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12684,
                        "src": "11359:4:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12669,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11359:4:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11358:6:62"
                  },
                  "scope": 12685,
                  "src": "11275:158:62",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 12686,
              "src": "936:10499:62"
            }
          ],
          "src": "33:11403:62"
        },
        "id": 62
      },
      "contracts/token/ERC721/ERC721Burnable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/ERC721Burnable.sol",
          "exportedSymbols": {
            "ERC721": [
              12685
            ],
            "ERC721Burnable": [
              12910
            ],
            "IERC165": [
              218
            ],
            "IERC721Burnable": [
              13738
            ]
          },
          "id": 12911,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12687,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:63"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 12689,
              "nodeType": "ImportDirective",
              "scope": 12911,
              "sourceUnit": 219,
              "src": "66:93:63",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12688,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:7:63",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Burnable.sol",
              "file": "./interfaces/IERC721Burnable.sol",
              "id": 12691,
              "nodeType": "ImportDirective",
              "scope": 12911,
              "sourceUnit": 13739,
              "src": "160:65:63",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12690,
                    "name": "IERC721Burnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "168:15:63",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/ERC721.sol",
              "file": "./ERC721.sol",
              "id": 12693,
              "nodeType": "ImportDirective",
              "scope": 12911,
              "sourceUnit": 12686,
              "src": "226:36:63",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12692,
                    "name": "ERC721",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "234:6:63",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 12695,
                    "name": "IERC721Burnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13738,
                    "src": "508:15:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721Burnable_$13738",
                      "typeString": "contract IERC721Burnable"
                    }
                  },
                  "id": 12696,
                  "nodeType": "InheritanceSpecifier",
                  "src": "508:15:63"
                },
                {
                  "baseName": {
                    "id": 12697,
                    "name": "ERC721",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12685,
                    "src": "525:6:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC721_$12685",
                      "typeString": "contract ERC721"
                    }
                  },
                  "id": 12698,
                  "nodeType": "InheritanceSpecifier",
                  "src": "525:6:63"
                }
              ],
              "contractDependencies": [
                218,
                322,
                12685,
                13702,
                13717,
                13738,
                13766,
                13790
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 12694,
                "nodeType": "StructuredDocumentation",
                "src": "264:207:63",
                "text": " @title ERC721 Non Fungible Token Contract, burnable version.\n @dev The function `tokenURI(uin256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`."
              },
              "fullyImplemented": false,
              "id": 12910,
              "linearizedBaseContracts": [
                12910,
                12685,
                13717,
                13790,
                13766,
                13702,
                218,
                322,
                13738
              ],
              "name": "ERC721Burnable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 12709,
                    "nodeType": "Block",
                    "src": "617:2:63",
                    "statements": []
                  },
                  "id": 12710,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 12705,
                          "name": "name_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12700,
                          "src": "601:5:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "id": 12706,
                          "name": "symbol_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12702,
                          "src": "608:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "id": 12707,
                      "modifierName": {
                        "id": 12704,
                        "name": "ERC721",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12685,
                        "src": "594:6:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC721_$12685_$",
                          "typeString": "type(contract ERC721)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "594:22:63"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12703,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12700,
                        "mutability": "mutable",
                        "name": "name_",
                        "nodeType": "VariableDeclaration",
                        "scope": 12710,
                        "src": "550:19:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12699,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "550:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12702,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nodeType": "VariableDeclaration",
                        "scope": 12710,
                        "src": "571:21:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12701,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "571:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "549:44:63"
                  },
                  "returnParameters": {
                    "id": 12708,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "617:0:63"
                  },
                  "scope": 12910,
                  "src": "538:81:63",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    11882
                  ],
                  "body": {
                    "id": 12731,
                    "nodeType": "Block",
                    "src": "873:112:63",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 12729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 12724,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 12719,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12713,
                              "src": "890:11:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 12721,
                                    "name": "IERC721Burnable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13738,
                                    "src": "910:15:63",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC721Burnable_$13738_$",
                                      "typeString": "type(contract IERC721Burnable)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC721Burnable_$13738_$",
                                      "typeString": "type(contract IERC721Burnable)"
                                    }
                                  ],
                                  "id": 12720,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "905:4:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 12722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "905:21:63",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Burnable_$13738",
                                  "typeString": "type(contract IERC721Burnable)"
                                }
                              },
                              "id": 12723,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "905:33:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "890:48:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 12727,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12713,
                                "src": "966:11:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 12725,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "942:5:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_super$_ERC721Burnable_$12910",
                                  "typeString": "contract super ERC721Burnable"
                                }
                              },
                              "id": 12726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11882,
                              "src": "942:23:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 12728,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "942:36:63",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "890:88:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 12718,
                        "id": 12730,
                        "nodeType": "Return",
                        "src": "883:95:63"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12711,
                    "nodeType": "StructuredDocumentation",
                    "src": "754:23:63",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 12732,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12715,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "849:8:63"
                  },
                  "parameters": {
                    "id": 12714,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12713,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12732,
                        "src": "809:18:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 12712,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "809:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "808:20:63"
                  },
                  "returnParameters": {
                    "id": 12718,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12717,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12732,
                        "src": "867:4:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12716,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "867:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "866:6:63"
                  },
                  "scope": 12910,
                  "src": "782:203:63",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13728
                  ],
                  "body": {
                    "id": 12769,
                    "nodeType": "Block",
                    "src": "1229:204:63",
                    "statements": [
                      {
                        "assignments": [
                          12742
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12742,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 12769,
                            "src": "1239:14:63",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12741,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1239:7:63",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12745,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 12743,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "1256:10:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 12744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1256:12:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1239:29:63"
                      },
                      {
                        "assignments": [
                          12747
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12747,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 12769,
                            "src": "1278:15:63",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 12746,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1278:4:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12752,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 12749,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12735,
                              "src": "1310:4:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12750,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12742,
                              "src": "1316:6:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12748,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12684,
                            "src": "1296:13:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 12751,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1296:27:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1278:45:63"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12754,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12735,
                              "src": "1343:4:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12755,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12737,
                              "src": "1349:7:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 12756,
                              "name": "operatable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12747,
                              "src": "1358:10:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 12757,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1370:5:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 12753,
                            "name": "_burnNFT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12909,
                            "src": "1334:8:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,bool,bool)"
                            }
                          },
                          "id": 12758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1334:42:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12759,
                        "nodeType": "ExpressionStatement",
                        "src": "1334:42:63"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 12761,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12735,
                              "src": "1400:4:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 12764,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1414:1:63",
                                  "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": 12763,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1406:7:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 12762,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1406:7:63",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 12765,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1406:10:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 12766,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12737,
                              "src": "1418:7:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12760,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13749,
                            "src": "1391:8:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 12767,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1391:35:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12768,
                        "nodeType": "EmitStatement",
                        "src": "1386:40:63"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12733,
                    "nodeType": "StructuredDocumentation",
                    "src": "1120:31:63",
                    "text": "@inheritdoc IERC721Burnable"
                  },
                  "functionSelector": "79cc6790",
                  "id": 12770,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12739,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1220:8:63"
                  },
                  "parameters": {
                    "id": 12738,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12735,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 12770,
                        "src": "1174:12:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12734,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1174:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12737,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12770,
                        "src": "1188:15:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12736,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1188:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1173:31:63"
                  },
                  "returnParameters": {
                    "id": 12740,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1229:0:63"
                  },
                  "scope": 12910,
                  "src": "1156:277:63",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13737
                  ],
                  "body": {
                    "id": 12841,
                    "nodeType": "Block",
                    "src": "1563:431:63",
                    "statements": [
                      {
                        "assignments": [
                          12781
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12781,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 12841,
                            "src": "1573:14:63",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12780,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1573:7:63",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12784,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 12782,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "1590:10:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 12783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1590:12:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1573:29:63"
                      },
                      {
                        "assignments": [
                          12786
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12786,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 12841,
                            "src": "1612:15:63",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 12785,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1612:4:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12791,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 12788,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12773,
                              "src": "1644:4:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12789,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12781,
                              "src": "1650:6:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12787,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12684,
                            "src": "1630:13:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 12790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1630:27:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1612:45:63"
                      },
                      {
                        "assignments": [
                          12793
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12793,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 12841,
                            "src": "1668:14:63",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12792,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1668:7:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12796,
                        "initialValue": {
                          "expression": {
                            "id": 12794,
                            "name": "tokenIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12776,
                            "src": "1685:8:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 12795,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "1685:15:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1668:32:63"
                      },
                      {
                        "body": {
                          "id": 12828,
                          "nodeType": "Block",
                          "src": "1745:163:63",
                          "statements": [
                            {
                              "assignments": [
                                12807
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 12807,
                                  "mutability": "mutable",
                                  "name": "tokenId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 12828,
                                  "src": "1759:15:63",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 12806,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1759:7:63",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 12811,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 12808,
                                  "name": "tokenIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12776,
                                  "src": "1777:8:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 12810,
                                "indexExpression": {
                                  "id": 12809,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12798,
                                  "src": "1786:1:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1777:11:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1759:29:63"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 12813,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12773,
                                    "src": "1811:4:63",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 12814,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12807,
                                    "src": "1817:7:63",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 12815,
                                    "name": "operatable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12786,
                                    "src": "1826:10:63",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "74727565",
                                    "id": 12816,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1838:4:63",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 12812,
                                  "name": "_burnNFT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12909,
                                  "src": "1802:8:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,bool,bool)"
                                  }
                                },
                                "id": 12817,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1802:41:63",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12818,
                              "nodeType": "ExpressionStatement",
                              "src": "1802:41:63"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 12820,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12773,
                                    "src": "1871:4:63",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 12823,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1885:1:63",
                                        "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": 12822,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1877:7:63",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 12821,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1877:7:63",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 12824,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1877:10:63",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 12825,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12807,
                                    "src": "1889:7:63",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12819,
                                  "name": "Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13749,
                                  "src": "1862:8:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 12826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1862:35:63",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12827,
                              "nodeType": "EmitStatement",
                              "src": "1857:40:63"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12802,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12800,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12798,
                            "src": "1727:1:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 12801,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12793,
                            "src": "1732:6:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1727:11:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12829,
                        "initializationExpression": {
                          "assignments": [
                            12798
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 12798,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 12829,
                              "src": "1716:9:63",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 12797,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1716:7:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 12799,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1716:9:63"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 12804,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "1740:3:63",
                            "subExpression": {
                              "id": 12803,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12798,
                              "src": "1742:1:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12805,
                          "nodeType": "ExpressionStatement",
                          "src": "1740:3:63"
                        },
                        "nodeType": "ForStatement",
                        "src": "1711:197:63"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12832,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12830,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12793,
                            "src": "1922:6:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 12831,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1932:1:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1922:11:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12840,
                        "nodeType": "IfStatement",
                        "src": "1918:70:63",
                        "trueBody": {
                          "id": 12839,
                          "nodeType": "Block",
                          "src": "1935:53:63",
                          "statements": [
                            {
                              "expression": {
                                "id": 12837,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 12833,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11823,
                                    "src": "1949:12:63",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 12835,
                                  "indexExpression": {
                                    "id": 12834,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12773,
                                    "src": "1962:4:63",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1949:18:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 12836,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12793,
                                  "src": "1971:6:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1949:28:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12838,
                              "nodeType": "ExpressionStatement",
                              "src": "1949:28:63"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12771,
                    "nodeType": "StructuredDocumentation",
                    "src": "1439:31:63",
                    "text": "@inheritdoc IERC721Burnable"
                  },
                  "functionSelector": "f2472965",
                  "id": 12842,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12778,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1554:8:63"
                  },
                  "parameters": {
                    "id": 12777,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12773,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 12842,
                        "src": "1498:12:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12772,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1498:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12776,
                        "mutability": "mutable",
                        "name": "tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 12842,
                        "src": "1512:25:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 12774,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1512:7:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12775,
                          "nodeType": "ArrayTypeName",
                          "src": "1512:9:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1497:41:63"
                  },
                  "returnParameters": {
                    "id": 12779,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1563:0:63"
                  },
                  "scope": 12910,
                  "src": "1475:519:63",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12908,
                    "nodeType": "Block",
                    "src": "2259:474:63",
                    "statements": [
                      {
                        "assignments": [
                          12854
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12854,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 12908,
                            "src": "2269:13:63",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12853,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2269:7:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12858,
                        "initialValue": {
                          "baseExpression": {
                            "id": 12855,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11819,
                            "src": "2285:7:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 12857,
                          "indexExpression": {
                            "id": 12856,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12846,
                            "src": "2293:2:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2285:11:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2269:27:63"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12868,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12860,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12844,
                                "src": "2314:4:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 12865,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12854,
                                        "src": "2338:5:63",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 12864,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2330:7:63",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 12863,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2330:7:63",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 12866,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2330:14:63",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 12862,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2322:7:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12861,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2322:7:63",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12867,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2322:23:63",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2314:31:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206e6f6e2d6f776e6564204e4654",
                              "id": 12869,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2347:23:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_59b4fc3a8c2b67b7c14f6b6b265fbb2ff4696cc487771e833e843fdd44b74f27",
                                "typeString": "literal_string \"ERC721: non-owned NFT\""
                              },
                              "value": "ERC721: non-owned NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_59b4fc3a8c2b67b7c14f6b6b265fbb2ff4696cc487771e833e843fdd44b74f27",
                                "typeString": "literal_string \"ERC721: non-owned NFT\""
                              }
                            ],
                            "id": 12859,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2306:7:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2306:65:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12871,
                        "nodeType": "ExpressionStatement",
                        "src": "2306:65:63"
                      },
                      {
                        "condition": {
                          "id": 12873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "2385:11:63",
                          "subExpression": {
                            "id": 12872,
                            "name": "operatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12848,
                            "src": "2386:10:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12892,
                        "nodeType": "IfStatement",
                        "src": "2381:160:63",
                        "trueBody": {
                          "id": 12891,
                          "nodeType": "Block",
                          "src": "2398:143:63",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 12887,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 12879,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 12877,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 12875,
                                              "name": "owner",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12854,
                                              "src": "2421:5:63",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "id": 12876,
                                              "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 11802,
                                              "src": "2429:26:63",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "2421:34:63",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12878,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2459:1:63",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "2421:39:63",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 12880,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "2420:41:63",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 12886,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 12881,
                                          "name": "_msgSender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 312,
                                          "src": "2465:10:63",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                            "typeString": "function () view returns (address payable)"
                                          }
                                        },
                                        "id": 12882,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2465:12:63",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "baseExpression": {
                                          "id": 12883,
                                          "name": "_nftApprovals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11827,
                                          "src": "2481:13:63",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                            "typeString": "mapping(uint256 => address)"
                                          }
                                        },
                                        "id": 12885,
                                        "indexExpression": {
                                          "id": 12884,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12846,
                                          "src": "2495:2:63",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2481:17:63",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "2465:33:63",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2420:78:63",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4552433732313a206e6f6e2d617070726f7665642073656e646572",
                                    "id": 12888,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2500:29:63",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_2a3aeeb54310c891d22cb19ac395d04240b1c55a8c1ca2a34d903a671a8129ae",
                                      "typeString": "literal_string \"ERC721: non-approved sender\""
                                    },
                                    "value": "ERC721: non-approved sender"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_2a3aeeb54310c891d22cb19ac395d04240b1c55a8c1ca2a34d903a671a8129ae",
                                      "typeString": "literal_string \"ERC721: non-approved sender\""
                                    }
                                  ],
                                  "id": 12874,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "2412:7:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 12889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2412:118:63",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12890,
                              "nodeType": "ExpressionStatement",
                              "src": "2412:118:63"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 12897,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 12893,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11819,
                              "src": "2550:7:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 12895,
                            "indexExpression": {
                              "id": 12894,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12846,
                              "src": "2558:2:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2550:11:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12896,
                            "name": "_BURNT_NFT_OWNER",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11805,
                            "src": "2564:16:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2550:30:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12898,
                        "nodeType": "ExpressionStatement",
                        "src": "2550:30:63"
                      },
                      {
                        "condition": {
                          "id": 12900,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "2595:8:63",
                          "subExpression": {
                            "id": 12899,
                            "name": "isBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12850,
                            "src": "2596:7:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12907,
                        "nodeType": "IfStatement",
                        "src": "2591:136:63",
                        "trueBody": {
                          "id": 12906,
                          "nodeType": "Block",
                          "src": "2605:122:63",
                          "statements": [
                            {
                              "expression": {
                                "id": 12904,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": true,
                                "src": "2696:20:63",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 12901,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11823,
                                    "src": "2698:12:63",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 12903,
                                  "indexExpression": {
                                    "id": 12902,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12844,
                                    "src": "2711:4:63",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2698:18:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12905,
                              "nodeType": "ExpressionStatement",
                              "src": "2696:20:63"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 12909,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnNFT",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12851,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12844,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 12909,
                        "src": "2156:12:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12843,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2156:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12846,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 12909,
                        "src": "2178:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12845,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2178:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12848,
                        "mutability": "mutable",
                        "name": "operatable",
                        "nodeType": "VariableDeclaration",
                        "scope": 12909,
                        "src": "2198:15:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12847,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2198:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12850,
                        "mutability": "mutable",
                        "name": "isBatch",
                        "nodeType": "VariableDeclaration",
                        "scope": 12909,
                        "src": "2223:12:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12849,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2223:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2146:95:63"
                  },
                  "returnParameters": {
                    "id": 12852,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2259:0:63"
                  },
                  "scope": 12910,
                  "src": "2129:604:63",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 12911,
              "src": "472:2263:63"
            }
          ],
          "src": "33:2703:63"
        },
        "id": 63
      },
      "contracts/token/ERC721/ERC721Receiver.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/ERC721Receiver.sol",
          "exportedSymbols": {
            "ERC721Receiver": [
              12955
            ],
            "IERC165": [
              218
            ],
            "IERC721Receiver": [
              13839
            ]
          },
          "id": 12956,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12912,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:64"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 12914,
              "nodeType": "ImportDirective",
              "scope": 12956,
              "sourceUnit": 219,
              "src": "66:93:64",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12913,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:7:64",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Receiver.sol",
              "file": "./interfaces/IERC721Receiver.sol",
              "id": 12916,
              "nodeType": "ImportDirective",
              "scope": 12956,
              "sourceUnit": 13840,
              "src": "160:65:64",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12915,
                    "name": "IERC721Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "168:15:64",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 12918,
                    "name": "IERC165",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 218,
                    "src": "438:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC165_$218",
                      "typeString": "contract IERC165"
                    }
                  },
                  "id": 12919,
                  "nodeType": "InheritanceSpecifier",
                  "src": "438:7:64"
                },
                {
                  "baseName": {
                    "id": 12920,
                    "name": "IERC721Receiver",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13839,
                    "src": "447:15:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721Receiver_$13839",
                      "typeString": "contract IERC721Receiver"
                    }
                  },
                  "id": 12921,
                  "nodeType": "InheritanceSpecifier",
                  "src": "447:15:64"
                }
              ],
              "contractDependencies": [
                218,
                13839
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 12917,
                "nodeType": "StructuredDocumentation",
                "src": "227:174:64",
                "text": " @title ERC721 Safe Transfers Receiver Contract.\n @dev The function `onERC721Received(address,address,uint256,bytes)` needs to be implemented by a child contract."
              },
              "fullyImplemented": false,
              "id": 12955,
              "linearizedBaseContracts": [
                12955,
                13839,
                218
              ],
              "name": "ERC721Receiver",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 12927,
                  "mutability": "constant",
                  "name": "_ERC721_RECEIVED",
                  "nodeType": "VariableDeclaration",
                  "scope": 12955,
                  "src": "469:77:64",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 12922,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "469:6:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "expression": {
                      "arguments": [
                        {
                          "id": 12924,
                          "name": "IERC721Receiver",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13839,
                          "src": "518:15:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$13839_$",
                            "typeString": "type(contract IERC721Receiver)"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$13839_$",
                            "typeString": "type(contract IERC721Receiver)"
                          }
                        ],
                        "id": 12923,
                        "name": "type",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -27,
                        "src": "513:4:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 12925,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "513:21:64",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Receiver_$13839",
                        "typeString": "type(contract IERC721Receiver)"
                      }
                    },
                    "id": 12926,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "interfaceId",
                    "nodeType": "MemberAccess",
                    "src": "513:33:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 12930,
                  "mutability": "constant",
                  "name": "_ERC721_REJECTED",
                  "nodeType": "VariableDeclaration",
                  "scope": 12955,
                  "src": "552:54:64",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 12928,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "552:6:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786666666666666666",
                    "id": 12929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "596:10:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4294967295_by_1",
                      "typeString": "int_const 4294967295"
                    },
                    "value": "0xffffffff"
                  },
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    217
                  ],
                  "body": {
                    "id": 12953,
                    "nodeType": "Block",
                    "src": "861:116:64",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 12951,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 12944,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 12939,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12933,
                              "src": "878:11:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 12941,
                                    "name": "IERC165",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 218,
                                    "src": "898:7:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  ],
                                  "id": 12940,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "893:4:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 12942,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "893:13:64",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$218",
                                  "typeString": "type(contract IERC165)"
                                }
                              },
                              "id": 12943,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "893:25:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "878:40:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 12950,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 12945,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12933,
                              "src": "922:11:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 12947,
                                    "name": "IERC721Receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13839,
                                    "src": "942:15:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$13839_$",
                                      "typeString": "type(contract IERC721Receiver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$13839_$",
                                      "typeString": "type(contract IERC721Receiver)"
                                    }
                                  ],
                                  "id": 12946,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "937:4:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 12948,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "937:21:64",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Receiver_$13839",
                                  "typeString": "type(contract IERC721Receiver)"
                                }
                              },
                              "id": 12949,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "937:33:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "922:48:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "878:92:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 12938,
                        "id": 12952,
                        "nodeType": "Return",
                        "src": "871:99:64"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12931,
                    "nodeType": "StructuredDocumentation",
                    "src": "742:23:64",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 12954,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12935,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "837:8:64"
                  },
                  "parameters": {
                    "id": 12934,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12933,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12954,
                        "src": "797:18:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 12932,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "797:6:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "796:20:64"
                  },
                  "returnParameters": {
                    "id": 12938,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12937,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12954,
                        "src": "855:4:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12936,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "855:4:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "854:6:64"
                  },
                  "scope": 12955,
                  "src": "770:207:64",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 12956,
              "src": "402:577:64"
            }
          ],
          "src": "33:947:64"
        },
        "id": 64
      },
      "contracts/token/ERC721/ERC721Simple.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/ERC721Simple.sol",
          "exportedSymbols": {
            "AddressIsContract": [
              1285
            ],
            "ERC721Simple": [
              13616
            ],
            "IERC165": [
              218
            ],
            "IERC721": [
              13702
            ],
            "IERC721Events": [
              13766
            ],
            "IERC721Receiver": [
              13839
            ],
            "ManagedIdentity": [
              322
            ]
          },
          "id": 13617,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12957,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:65"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
              "id": 12959,
              "nodeType": "ImportDirective",
              "scope": 13617,
              "sourceUnit": 1286,
              "src": "66:111:65",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12958,
                    "name": "AddressIsContract",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:17:65",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 12961,
              "nodeType": "ImportDirective",
              "scope": 13617,
              "sourceUnit": 219,
              "src": "178:93:65",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12960,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "186:7:65",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721.sol",
              "file": "./interfaces/IERC721.sol",
              "id": 12963,
              "nodeType": "ImportDirective",
              "scope": 13617,
              "sourceUnit": 13703,
              "src": "272:49:65",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12962,
                    "name": "IERC721",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "280:7:65",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Events.sol",
              "file": "./interfaces/IERC721Events.sol",
              "id": 12965,
              "nodeType": "ImportDirective",
              "scope": 13617,
              "sourceUnit": 13767,
              "src": "322:61:65",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12964,
                    "name": "IERC721Events",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "330:13:65",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Receiver.sol",
              "file": "./interfaces/IERC721Receiver.sol",
              "id": 12967,
              "nodeType": "ImportDirective",
              "scope": 13617,
              "sourceUnit": 13840,
              "src": "384:65:65",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12966,
                    "name": "IERC721Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "392:15:65",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 12969,
              "nodeType": "ImportDirective",
              "scope": 13617,
              "sourceUnit": 323,
              "src": "450:102:65",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12968,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "458:15:65",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 12971,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 322,
                    "src": "656:15:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 12972,
                  "nodeType": "InheritanceSpecifier",
                  "src": "656:15:65"
                },
                {
                  "baseName": {
                    "id": 12973,
                    "name": "IERC165",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 218,
                    "src": "673:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC165_$218",
                      "typeString": "contract IERC165"
                    }
                  },
                  "id": 12974,
                  "nodeType": "InheritanceSpecifier",
                  "src": "673:7:65"
                },
                {
                  "baseName": {
                    "id": 12975,
                    "name": "IERC721",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13702,
                    "src": "682:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721_$13702",
                      "typeString": "contract IERC721"
                    }
                  },
                  "id": 12976,
                  "nodeType": "InheritanceSpecifier",
                  "src": "682:7:65"
                },
                {
                  "baseName": {
                    "id": 12977,
                    "name": "IERC721Events",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13766,
                    "src": "691:13:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721Events_$13766",
                      "typeString": "contract IERC721Events"
                    }
                  },
                  "id": 12978,
                  "nodeType": "InheritanceSpecifier",
                  "src": "691:13:65"
                }
              ],
              "contractDependencies": [
                218,
                322,
                13702,
                13766
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 12970,
                "nodeType": "StructuredDocumentation",
                "src": "554:76:65",
                "text": " @title ERC721 Non Fungible Token Contract, simple implementation."
              },
              "fullyImplemented": true,
              "id": 13616,
              "linearizedBaseContracts": [
                13616,
                13766,
                13702,
                218,
                322
              ],
              "name": "ERC721Simple",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 12981,
                  "libraryName": {
                    "id": 12979,
                    "name": "AddressIsContract",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1285,
                    "src": "717:17:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddressIsContract_$1285",
                      "typeString": "library AddressIsContract"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "711:36:65",
                  "typeName": {
                    "id": 12980,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "739:7:65",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 12987,
                  "mutability": "constant",
                  "name": "_ERC721_RECEIVED",
                  "nodeType": "VariableDeclaration",
                  "scope": 13616,
                  "src": "753:77:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 12982,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "753:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "expression": {
                      "arguments": [
                        {
                          "id": 12984,
                          "name": "IERC721Receiver",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13839,
                          "src": "802:15:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$13839_$",
                            "typeString": "type(contract IERC721Receiver)"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$13839_$",
                            "typeString": "type(contract IERC721Receiver)"
                          }
                        ],
                        "id": 12983,
                        "name": "type",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -27,
                        "src": "797:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 12985,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "797:21:65",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Receiver_$13839",
                        "typeString": "type(contract IERC721Receiver)"
                      }
                    },
                    "id": 12986,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "interfaceId",
                    "nodeType": "MemberAccess",
                    "src": "797:33:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 12992,
                  "mutability": "constant",
                  "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                  "nodeType": "VariableDeclaration",
                  "scope": 13616,
                  "src": "837:63:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12988,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "837:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542976_by_1",
                      "typeString": "int_const 1461...(41 digits omitted)...2976"
                    },
                    "id": 12991,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "31",
                      "id": 12989,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "892:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<<",
                    "rightExpression": {
                      "hexValue": "313630",
                      "id": 12990,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "897:3:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_160_by_1",
                        "typeString": "int_const 160"
                      },
                      "value": "160"
                    },
                    "src": "892:8:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542976_by_1",
                      "typeString": "int_const 1461...(41 digits omitted)...2976"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12998,
                  "mutability": "mutable",
                  "name": "_operators",
                  "nodeType": "VariableDeclaration",
                  "scope": 13616,
                  "src": "947:64:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 12997,
                    "keyType": {
                      "id": 12993,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "955:7:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "947:44:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 12996,
                      "keyType": {
                        "id": 12994,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "974:7:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "966:24:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 12995,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "985:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13002,
                  "mutability": "mutable",
                  "name": "_owners",
                  "nodeType": "VariableDeclaration",
                  "scope": 13616,
                  "src": "1044:44:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 13001,
                    "keyType": {
                      "id": 12999,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1052:7:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1044:27:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 13000,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1063:7:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13006,
                  "mutability": "mutable",
                  "name": "_nftBalances",
                  "nodeType": "VariableDeclaration",
                  "scope": 13616,
                  "src": "1126:49:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 13005,
                    "keyType": {
                      "id": 13003,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1134:7:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1126:27:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 13004,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1145:7:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13010,
                  "mutability": "mutable",
                  "name": "_nftApprovals",
                  "nodeType": "VariableDeclaration",
                  "scope": 13616,
                  "src": "1211:50:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 13009,
                    "keyType": {
                      "id": 13007,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1219:7:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1211:27:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 13008,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1230:7:65",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    217
                  ],
                  "body": {
                    "id": 13033,
                    "nodeType": "Block",
                    "src": "1516:108:65",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 13031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 13024,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 13019,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13013,
                              "src": "1533:11:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13021,
                                    "name": "IERC165",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 218,
                                    "src": "1553:7:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  ],
                                  "id": 13020,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1548:4:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 13022,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1548:13:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$218",
                                  "typeString": "type(contract IERC165)"
                                }
                              },
                              "id": 13023,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1548:25:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "1533:40:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 13030,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 13025,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13013,
                              "src": "1577:11:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13027,
                                    "name": "IERC721",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13702,
                                    "src": "1597:7:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC721_$13702_$",
                                      "typeString": "type(contract IERC721)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC721_$13702_$",
                                      "typeString": "type(contract IERC721)"
                                    }
                                  ],
                                  "id": 13026,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1592:4:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 13028,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1592:13:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$13702",
                                  "typeString": "type(contract IERC721)"
                                }
                              },
                              "id": 13029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1592:25:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "1577:40:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1533:84:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 13018,
                        "id": 13032,
                        "nodeType": "Return",
                        "src": "1526:91:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13011,
                    "nodeType": "StructuredDocumentation",
                    "src": "1397:23:65",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 13034,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13015,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1492:8:65"
                  },
                  "parameters": {
                    "id": 13014,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13013,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13034,
                        "src": "1452:18:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 13012,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1452:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1451:20:65"
                  },
                  "returnParameters": {
                    "id": 13018,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13017,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13034,
                        "src": "1510:4:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13016,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1510:4:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1509:6:65"
                  },
                  "scope": 13616,
                  "src": "1425:199:65",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13627
                  ],
                  "body": {
                    "id": 13057,
                    "nodeType": "Block",
                    "src": "1868:105:65",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 13049,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 13044,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13037,
                                "src": "1886:5:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 13047,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1903:1:65",
                                    "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": 13046,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1895:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 13045,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1895:7:65",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13048,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1895:10:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1886:19:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a207a65726f2061646472657373",
                              "id": 13050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1907:22:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cbf342cf31c00d6666359b4f2d70ce9760b73e4525fbcb2f71e0979d1c874b92",
                                "typeString": "literal_string \"ERC721: zero address\""
                              },
                              "value": "ERC721: zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cbf342cf31c00d6666359b4f2d70ce9760b73e4525fbcb2f71e0979d1c874b92",
                                "typeString": "literal_string \"ERC721: zero address\""
                              }
                            ],
                            "id": 13043,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1878:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1878:52:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13052,
                        "nodeType": "ExpressionStatement",
                        "src": "1878:52:65"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 13053,
                            "name": "_nftBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13006,
                            "src": "1947:12:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 13055,
                          "indexExpression": {
                            "id": 13054,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13037,
                            "src": "1960:5:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1947:19:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 13042,
                        "id": 13056,
                        "nodeType": "Return",
                        "src": "1940:26:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13035,
                    "nodeType": "StructuredDocumentation",
                    "src": "1759:23:65",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "70a08231",
                  "id": 13058,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13039,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1841:8:65"
                  },
                  "parameters": {
                    "id": 13038,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13037,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 13058,
                        "src": "1806:13:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13036,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1806:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1805:15:65"
                  },
                  "returnParameters": {
                    "id": 13042,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13041,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13058,
                        "src": "1859:7:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13040,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1859:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1858:9:65"
                  },
                  "scope": 13616,
                  "src": "1787:186:65",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13635
                  ],
                  "body": {
                    "id": 13091,
                    "nodeType": "Block",
                    "src": "2088:155:65",
                    "statements": [
                      {
                        "assignments": [
                          13068
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13068,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 13091,
                            "src": "2098:13:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 13067,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2098:7:65",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13078,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 13073,
                                    "name": "_owners",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13002,
                                    "src": "2130:7:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 13075,
                                  "indexExpression": {
                                    "id": 13074,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13061,
                                    "src": "2138:7:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2130:16:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 13072,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2122:7:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 13071,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2122:7:65",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13076,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2122:25:65",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 13070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2114:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 13069,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2114:7:65",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 13077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2114:34:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2098:50:65"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 13085,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 13080,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13068,
                                "src": "2166:5:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 13083,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2183:1:65",
                                    "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": 13082,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2175:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 13081,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2175:7:65",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13084,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2175:10:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2166:19:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206e6f6e2d6578697374696e67204e4654",
                              "id": 13086,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2187:26:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              },
                              "value": "ERC721: non-existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              }
                            ],
                            "id": 13079,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2158:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2158:56:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13088,
                        "nodeType": "ExpressionStatement",
                        "src": "2158:56:65"
                      },
                      {
                        "expression": {
                          "id": 13089,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13068,
                          "src": "2231:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 13066,
                        "id": 13090,
                        "nodeType": "Return",
                        "src": "2224:12:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13059,
                    "nodeType": "StructuredDocumentation",
                    "src": "1979:23:65",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "6352211e",
                  "id": 13092,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13063,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2061:8:65"
                  },
                  "parameters": {
                    "id": 13062,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13061,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13092,
                        "src": "2024:15:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13060,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2024:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2023:17:65"
                  },
                  "returnParameters": {
                    "id": 13066,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13065,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13092,
                        "src": "2079:7:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13064,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2079:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2078:9:65"
                  },
                  "scope": 13616,
                  "src": "2007:236:65",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13643
                  ],
                  "body": {
                    "id": 13194,
                    "nodeType": "Block",
                    "src": "2347:916:65",
                    "statements": [
                      {
                        "assignments": [
                          13102
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13102,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 13194,
                            "src": "2357:13:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13101,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2357:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13106,
                        "initialValue": {
                          "baseExpression": {
                            "id": 13103,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13002,
                            "src": "2373:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 13105,
                          "indexExpression": {
                            "id": 13104,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13097,
                            "src": "2381:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2373:16:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2357:32:65"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13110,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 13108,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13102,
                                "src": "2407:5:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 13109,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2416:1:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2407:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206e6f6e2d6578697374696e67204e4654",
                              "id": 13111,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2419:26:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              },
                              "value": "ERC721: non-existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              }
                            ],
                            "id": 13107,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2399:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2399:47:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13113,
                        "nodeType": "ExpressionStatement",
                        "src": "2399:47:65"
                      },
                      {
                        "assignments": [
                          13115
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13115,
                            "mutability": "mutable",
                            "name": "ownerAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 13194,
                            "src": "2456:20:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 13114,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2456:7:65",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13123,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 13120,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13102,
                                  "src": "2495:5:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 13119,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2487:7:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 13118,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2487:7:65",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13121,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2487:14:65",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 13117,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2479:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 13116,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2479:7:65",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 13122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2479:23:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2456:46:65"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 13127,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 13125,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13095,
                                "src": "2520:2:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 13126,
                                "name": "ownerAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13115,
                                "src": "2526:12:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2520:18:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a2073656c662d617070726f76616c",
                              "id": 13128,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2540:23:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6c1ee2a5a6fc0c5a7679155059f8807cdde24a5dc8123b64f2117c3f28d49a16",
                                "typeString": "literal_string \"ERC721: self-approval\""
                              },
                              "value": "ERC721: self-approval"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6c1ee2a5a6fc0c5a7679155059f8807cdde24a5dc8123b64f2117c3f28d49a16",
                                "typeString": "literal_string \"ERC721: self-approval\""
                              }
                            ],
                            "id": 13124,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2512:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2512:52:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13130,
                        "nodeType": "ExpressionStatement",
                        "src": "2512:52:65"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 13133,
                                  "name": "ownerAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13115,
                                  "src": "2596:12:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 13134,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 312,
                                    "src": "2610:10:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                      "typeString": "function () view returns (address payable)"
                                    }
                                  },
                                  "id": 13135,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2610:12:65",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "id": 13132,
                                "name": "_isOperatable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13615,
                                "src": "2582:13:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address,address) view returns (bool)"
                                }
                              },
                              "id": 13136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2582:41:65",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206e6f6e2d617070726f7665642073656e646572",
                              "id": 13137,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2625:29:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2a3aeeb54310c891d22cb19ac395d04240b1c55a8c1ca2a34d903a671a8129ae",
                                "typeString": "literal_string \"ERC721: non-approved sender\""
                              },
                              "value": "ERC721: non-approved sender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2a3aeeb54310c891d22cb19ac395d04240b1c55a8c1ca2a34d903a671a8129ae",
                                "typeString": "literal_string \"ERC721: non-approved sender\""
                              }
                            ],
                            "id": 13131,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2574:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2574:81:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13139,
                        "nodeType": "ExpressionStatement",
                        "src": "2574:81:65"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 13145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13140,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13095,
                            "src": "2669:2:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 13143,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2683:1:65",
                                "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": 13142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2675:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 13141,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2675:7:65",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 13144,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2675:10:65",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "2669:16:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 13186,
                          "nodeType": "Block",
                          "src": "2895:312:65",
                          "statements": [
                            {
                              "assignments": [
                                13164
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 13164,
                                  "mutability": "mutable",
                                  "name": "ownerWithApprovalBit",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 13186,
                                  "src": "2909:28:65",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 13163,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2909:7:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 13168,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13167,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 13165,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13102,
                                  "src": "2940:5:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "|",
                                "rightExpression": {
                                  "id": 13166,
                                  "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12992,
                                  "src": "2948:26:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2940:34:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2909:65:65"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 13169,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13102,
                                  "src": "2992:5:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 13170,
                                  "name": "ownerWithApprovalBit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13164,
                                  "src": "3001:20:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2992:29:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 13179,
                              "nodeType": "IfStatement",
                              "src": "2988:168:65",
                              "trueBody": {
                                "id": 13178,
                                "nodeType": "Block",
                                "src": "3023:133:65",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 13176,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 13172,
                                          "name": "_owners",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13002,
                                          "src": "3102:7:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 13174,
                                        "indexExpression": {
                                          "id": 13173,
                                          "name": "tokenId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13097,
                                          "src": "3110:7:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "3102:16:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 13175,
                                        "name": "ownerWithApprovalBit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13164,
                                        "src": "3121:20:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3102:39:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 13177,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3102:39:65"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 13184,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 13180,
                                    "name": "_nftApprovals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13010,
                                    "src": "3169:13:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    }
                                  },
                                  "id": 13182,
                                  "indexExpression": {
                                    "id": 13181,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13097,
                                    "src": "3183:7:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3169:22:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 13183,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13095,
                                  "src": "3194:2:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3169:27:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 13185,
                              "nodeType": "ExpressionStatement",
                              "src": "3169:27:65"
                            }
                          ]
                        },
                        "id": 13187,
                        "nodeType": "IfStatement",
                        "src": "2665:542:65",
                        "trueBody": {
                          "id": 13162,
                          "nodeType": "Block",
                          "src": "2687:202:65",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13148,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 13146,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13102,
                                    "src": "2705:5:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "id": 13147,
                                    "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12992,
                                    "src": "2713:26:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "2705:34:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 13149,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2743:1:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "2705:39:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 13161,
                              "nodeType": "IfStatement",
                              "src": "2701:178:65",
                              "trueBody": {
                                "id": 13160,
                                "nodeType": "Block",
                                "src": "2746:133:65",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 13158,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 13151,
                                          "name": "_owners",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13002,
                                          "src": "2824:7:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 13153,
                                        "indexExpression": {
                                          "id": 13152,
                                          "name": "tokenId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13097,
                                          "src": "2832:7:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "2824:16:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 13156,
                                            "name": "ownerAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13115,
                                            "src": "2851:12:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 13155,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "2843:7:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 13154,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "2843:7:65",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 13157,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2843:21:65",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "2824:40:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 13159,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2824:40:65"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 13189,
                              "name": "ownerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13115,
                              "src": "3230:12:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13190,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13095,
                              "src": "3244:2:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13191,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13097,
                              "src": "3248:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 13188,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13757,
                            "src": "3221:8:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 13192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3221:35:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13193,
                        "nodeType": "EmitStatement",
                        "src": "3216:40:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13093,
                    "nodeType": "StructuredDocumentation",
                    "src": "2249:23:65",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "095ea7b3",
                  "id": 13195,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13099,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2338:8:65"
                  },
                  "parameters": {
                    "id": 13098,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13095,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13195,
                        "src": "2294:10:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13094,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2294:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13097,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13195,
                        "src": "2306:15:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13096,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2306:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2293:29:65"
                  },
                  "returnParameters": {
                    "id": 13100,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2347:0:65"
                  },
                  "scope": 13616,
                  "src": "2277:986:65",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13651
                  ],
                  "body": {
                    "id": 13243,
                    "nodeType": "Block",
                    "src": "3382:289:65",
                    "statements": [
                      {
                        "assignments": [
                          13205
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13205,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 13243,
                            "src": "3392:13:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13204,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3392:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13209,
                        "initialValue": {
                          "baseExpression": {
                            "id": 13206,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13002,
                            "src": "3408:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 13208,
                          "indexExpression": {
                            "id": 13207,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13198,
                            "src": "3416:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3408:16:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3392:32:65"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 13222,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 13215,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13205,
                                        "src": "3458:5:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 13214,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3450:7:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 13213,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3450:7:65",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 13216,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3450:14:65",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 13212,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3442:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 13211,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3442:7:65",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13217,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3442:23:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 13220,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3477:1:65",
                                    "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": 13219,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3469:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 13218,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3469:7:65",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13221,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3469:10:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3442:37:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206e6f6e2d6578697374696e67204e4654",
                              "id": 13223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3481:26:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              },
                              "value": "ERC721: non-existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              }
                            ],
                            "id": 13210,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3434:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3434:74:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13225,
                        "nodeType": "ExpressionStatement",
                        "src": "3434:74:65"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 13226,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13205,
                              "src": "3522:5:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 13227,
                              "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12992,
                              "src": "3530:26:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3522:34:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 13229,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3560:1:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3522:39:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 13241,
                          "nodeType": "Block",
                          "src": "3623:42:65",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 13238,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3652:1:65",
                                    "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": 13237,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3644:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 13236,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3644:7:65",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13239,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3644:10:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "functionReturnParameters": 13203,
                              "id": 13240,
                              "nodeType": "Return",
                              "src": "3637:17:65"
                            }
                          ]
                        },
                        "id": 13242,
                        "nodeType": "IfStatement",
                        "src": "3518:147:65",
                        "trueBody": {
                          "id": 13235,
                          "nodeType": "Block",
                          "src": "3563:54:65",
                          "statements": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 13231,
                                  "name": "_nftApprovals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13010,
                                  "src": "3584:13:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 13233,
                                "indexExpression": {
                                  "id": 13232,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13198,
                                  "src": "3598:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3584:22:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "functionReturnParameters": 13203,
                              "id": 13234,
                              "nodeType": "Return",
                              "src": "3577:29:65"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13196,
                    "nodeType": "StructuredDocumentation",
                    "src": "3269:23:65",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "081812fc",
                  "id": 13244,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getApproved",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13200,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3355:8:65"
                  },
                  "parameters": {
                    "id": 13199,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13198,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13244,
                        "src": "3318:15:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13197,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3318:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3317:17:65"
                  },
                  "returnParameters": {
                    "id": 13203,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13202,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13244,
                        "src": "3373:7:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13201,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3373:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3372:9:65"
                  },
                  "scope": 13616,
                  "src": "3297:374:65",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13659
                  ],
                  "body": {
                    "id": 13279,
                    "nodeType": "Block",
                    "src": "3789:214:65",
                    "statements": [
                      {
                        "assignments": [
                          13254
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13254,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 13279,
                            "src": "3799:14:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 13253,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3799:7:65",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13257,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 13255,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "3816:10:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 13256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3816:12:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3799:29:65"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 13261,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 13259,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13247,
                                "src": "3846:8:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 13260,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13254,
                                "src": "3858:6:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3846:18:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a2073656c662d617070726f76616c",
                              "id": 13262,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3866:23:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6c1ee2a5a6fc0c5a7679155059f8807cdde24a5dc8123b64f2117c3f28d49a16",
                                "typeString": "literal_string \"ERC721: self-approval\""
                              },
                              "value": "ERC721: self-approval"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6c1ee2a5a6fc0c5a7679155059f8807cdde24a5dc8123b64f2117c3f28d49a16",
                                "typeString": "literal_string \"ERC721: self-approval\""
                              }
                            ],
                            "id": 13258,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3838:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3838:52:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13264,
                        "nodeType": "ExpressionStatement",
                        "src": "3838:52:65"
                      },
                      {
                        "expression": {
                          "id": 13271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 13265,
                                "name": "_operators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12998,
                                "src": "3900:10:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 13268,
                              "indexExpression": {
                                "id": 13266,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13254,
                                "src": "3911:6:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3900:18:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 13269,
                            "indexExpression": {
                              "id": 13267,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13247,
                              "src": "3919:8:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3900:28:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 13270,
                            "name": "approved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13249,
                            "src": "3931:8:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3900:39:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13272,
                        "nodeType": "ExpressionStatement",
                        "src": "3900:39:65"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 13274,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13254,
                              "src": "3969:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13275,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13247,
                              "src": "3977:8:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13276,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13249,
                              "src": "3987:8:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 13273,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13765,
                            "src": "3954:14:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 13277,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3954:42:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13278,
                        "nodeType": "EmitStatement",
                        "src": "3949:47:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13245,
                    "nodeType": "StructuredDocumentation",
                    "src": "3677:23:65",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "a22cb465",
                  "id": 13280,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13251,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3780:8:65"
                  },
                  "parameters": {
                    "id": 13250,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13247,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 13280,
                        "src": "3732:16:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13246,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3732:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13249,
                        "mutability": "mutable",
                        "name": "approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 13280,
                        "src": "3750:13:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13248,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3750:4:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3731:33:65"
                  },
                  "returnParameters": {
                    "id": 13252,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3789:0:65"
                  },
                  "scope": 13616,
                  "src": "3705:298:65",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13669
                  ],
                  "body": {
                    "id": 13297,
                    "nodeType": "Block",
                    "src": "4140:51:65",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 13291,
                              "name": "_operators",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12998,
                              "src": "4157:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                "typeString": "mapping(address => mapping(address => bool))"
                              }
                            },
                            "id": 13293,
                            "indexExpression": {
                              "id": 13292,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13283,
                              "src": "4168:5:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4157:17:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 13295,
                          "indexExpression": {
                            "id": 13294,
                            "name": "operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13285,
                            "src": "4175:8:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4157:27:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 13290,
                        "id": 13296,
                        "nodeType": "Return",
                        "src": "4150:34:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13281,
                    "nodeType": "StructuredDocumentation",
                    "src": "4009:23:65",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 13298,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13287,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4116:8:65"
                  },
                  "parameters": {
                    "id": 13286,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13283,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 13298,
                        "src": "4063:13:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13282,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4063:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13285,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 13298,
                        "src": "4078:16:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13284,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4078:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4062:33:65"
                  },
                  "returnParameters": {
                    "id": 13290,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13289,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13298,
                        "src": "4134:4:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13288,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4134:4:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4133:6:65"
                  },
                  "scope": 13616,
                  "src": "4037:154:65",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13679
                  ],
                  "body": {
                    "id": 13317,
                    "nodeType": "Block",
                    "src": "4344:153:65",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13310,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13301,
                              "src": "4381:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13311,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13303,
                              "src": "4399:2:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13312,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13305,
                              "src": "4415:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 13313,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4436:2:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 13314,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4475:5:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 13309,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13492,
                            "src": "4354:13:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 13315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4354:136:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13316,
                        "nodeType": "ExpressionStatement",
                        "src": "4354:136:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13299,
                    "nodeType": "StructuredDocumentation",
                    "src": "4197:23:65",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "23b872dd",
                  "id": 13318,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13307,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4335:8:65"
                  },
                  "parameters": {
                    "id": 13306,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13301,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 13318,
                        "src": "4256:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13300,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4256:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13303,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13318,
                        "src": "4278:10:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13302,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4278:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13305,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13318,
                        "src": "4298:15:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13304,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4298:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4246:73:65"
                  },
                  "returnParameters": {
                    "id": 13308,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4344:0:65"
                  },
                  "scope": 13616,
                  "src": "4225:272:65",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13689
                  ],
                  "body": {
                    "id": 13337,
                    "nodeType": "Block",
                    "src": "4654:152:65",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13330,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13321,
                              "src": "4691:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13331,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13323,
                              "src": "4709:2:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13332,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13325,
                              "src": "4725:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 13333,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4746:2:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "74727565",
                              "id": 13334,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4785:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 13329,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13492,
                            "src": "4664:13:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 13335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4664:135:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13336,
                        "nodeType": "ExpressionStatement",
                        "src": "4664:135:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13319,
                    "nodeType": "StructuredDocumentation",
                    "src": "4503:23:65",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "42842e0e",
                  "id": 13338,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13327,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4645:8:65"
                  },
                  "parameters": {
                    "id": 13326,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13321,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 13338,
                        "src": "4566:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13320,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4566:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13323,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13338,
                        "src": "4588:10:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13322,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4588:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13325,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13338,
                        "src": "4608:15:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13324,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4608:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4556:73:65"
                  },
                  "returnParameters": {
                    "id": 13328,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4654:0:65"
                  },
                  "scope": 13616,
                  "src": "4531:275:65",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13701
                  ],
                  "body": {
                    "id": 13359,
                    "nodeType": "Block",
                    "src": "4990:154:65",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13352,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13341,
                              "src": "5027:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13353,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13343,
                              "src": "5045:2:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13354,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13345,
                              "src": "5061:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 13355,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13347,
                              "src": "5082:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 13356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5123:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "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"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 13351,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13492,
                            "src": "5000:13:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 13357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5000:137:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13358,
                        "nodeType": "ExpressionStatement",
                        "src": "5000:137:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13339,
                    "nodeType": "StructuredDocumentation",
                    "src": "4812:23:65",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "b88d4fde",
                  "id": 13360,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13349,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4981:8:65"
                  },
                  "parameters": {
                    "id": 13348,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13341,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 13360,
                        "src": "4875:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13340,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4875:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13343,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13360,
                        "src": "4897:10:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13342,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4897:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13345,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13360,
                        "src": "4917:15:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13344,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4917:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13347,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 13360,
                        "src": "4942:17:65",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 13346,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4942:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4865:100:65"
                  },
                  "returnParameters": {
                    "id": 13350,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4990:0:65"
                  },
                  "scope": 13616,
                  "src": "4840:304:65",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13491,
                    "nodeType": "Block",
                    "src": "5438:974:65",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 13379,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 13374,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13364,
                                "src": "5456:2:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 13377,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5470:1:65",
                                    "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": 13376,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5462:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 13375,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5462:7:65",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5462:10:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5456:16:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a207472616e7366657220746f207a65726f",
                              "id": 13380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5474:26:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5b90446511982d52d493408f0c1515acf14051ee1877b79fbb305aef493c9f57",
                                "typeString": "literal_string \"ERC721: transfer to zero\""
                              },
                              "value": "ERC721: transfer to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5b90446511982d52d493408f0c1515acf14051ee1877b79fbb305aef493c9f57",
                                "typeString": "literal_string \"ERC721: transfer to zero\""
                              }
                            ],
                            "id": 13373,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5448:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5448:53:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13382,
                        "nodeType": "ExpressionStatement",
                        "src": "5448:53:65"
                      },
                      {
                        "assignments": [
                          13384
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13384,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 13491,
                            "src": "5511:14:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 13383,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5511:7:65",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13387,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 13385,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "5528:10:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 13386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5528:12:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5511:29:65"
                      },
                      {
                        "assignments": [
                          13389
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13389,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 13491,
                            "src": "5550:15:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 13388,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5550:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13394,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 13391,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13362,
                              "src": "5582:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13392,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13384,
                              "src": "5588:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 13390,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13615,
                            "src": "5568:13:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 13393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5568:27:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5550:45:65"
                      },
                      {
                        "assignments": [
                          13396
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13396,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 13491,
                            "src": "5606:13:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13395,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5606:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13400,
                        "initialValue": {
                          "baseExpression": {
                            "id": 13397,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13002,
                            "src": "5622:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 13399,
                          "indexExpression": {
                            "id": 13398,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13366,
                            "src": "5630:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5622:16:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5606:32:65"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 13410,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 13402,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13362,
                                "src": "5656:4:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 13407,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13396,
                                        "src": "5680:5:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 13406,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5672:7:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 13405,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5672:7:65",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 13408,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5672:14:65",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 13404,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5664:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 13403,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5664:7:65",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5664:23:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5656:31:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206e6f6e2d6f776e6564204e4654",
                              "id": 13411,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5689:23:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_59b4fc3a8c2b67b7c14f6b6b265fbb2ff4696cc487771e833e843fdd44b74f27",
                                "typeString": "literal_string \"ERC721: non-owned NFT\""
                              },
                              "value": "ERC721: non-owned NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_59b4fc3a8c2b67b7c14f6b6b265fbb2ff4696cc487771e833e843fdd44b74f27",
                                "typeString": "literal_string \"ERC721: non-owned NFT\""
                              }
                            ],
                            "id": 13401,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5648:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5648:65:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13413,
                        "nodeType": "ExpressionStatement",
                        "src": "5648:65:65"
                      },
                      {
                        "condition": {
                          "id": 13415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5727:11:65",
                          "subExpression": {
                            "id": 13414,
                            "name": "operatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13389,
                            "src": "5728:10:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13434,
                        "nodeType": "IfStatement",
                        "src": "5723:165:65",
                        "trueBody": {
                          "id": 13433,
                          "nodeType": "Block",
                          "src": "5740:148:65",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 13429,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 13421,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 13419,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 13417,
                                              "name": "owner",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13396,
                                              "src": "5763:5:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "id": 13418,
                                              "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12992,
                                              "src": "5771:26:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "5763:34:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 13420,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5801:1:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "5763:39:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 13422,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "5762:41:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 13428,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 13423,
                                          "name": "_msgSender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 312,
                                          "src": "5807:10:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                            "typeString": "function () view returns (address payable)"
                                          }
                                        },
                                        "id": 13424,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5807:12:65",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "baseExpression": {
                                          "id": 13425,
                                          "name": "_nftApprovals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13010,
                                          "src": "5823:13:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                            "typeString": "mapping(uint256 => address)"
                                          }
                                        },
                                        "id": 13427,
                                        "indexExpression": {
                                          "id": 13426,
                                          "name": "tokenId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13366,
                                          "src": "5837:7:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "5823:22:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "5807:38:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "5762:83:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4552433732313a206e6f6e2d617070726f7665642073656e646572",
                                    "id": 13430,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5847:29:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_2a3aeeb54310c891d22cb19ac395d04240b1c55a8c1ca2a34d903a671a8129ae",
                                      "typeString": "literal_string \"ERC721: non-approved sender\""
                                    },
                                    "value": "ERC721: non-approved sender"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_2a3aeeb54310c891d22cb19ac395d04240b1c55a8c1ca2a34d903a671a8129ae",
                                      "typeString": "literal_string \"ERC721: non-approved sender\""
                                    }
                                  ],
                                  "id": 13416,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "5754:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 13431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5754:123:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 13432,
                              "nodeType": "ExpressionStatement",
                              "src": "5754:123:65"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 13445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 13435,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13002,
                              "src": "5897:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 13437,
                            "indexExpression": {
                              "id": 13436,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13366,
                              "src": "5905:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5897:16:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 13442,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13364,
                                    "src": "5932:2:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 13441,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5924:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 13440,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5924:7:65",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13443,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5924:11:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 13439,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5916:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 13438,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5916:7:65",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 13444,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5916:20:65",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5897:39:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13446,
                        "nodeType": "ExpressionStatement",
                        "src": "5897:39:65"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 13449,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13447,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13362,
                            "src": "5951:4:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 13448,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13364,
                            "src": "5959:2:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5951:10:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13461,
                        "nodeType": "IfStatement",
                        "src": "5947:224:65",
                        "trueBody": {
                          "id": 13460,
                          "nodeType": "Block",
                          "src": "5963:208:65",
                          "statements": [
                            {
                              "expression": {
                                "id": 13453,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": true,
                                "src": "6050:20:65",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 13450,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13006,
                                    "src": "6052:12:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 13452,
                                  "indexExpression": {
                                    "id": 13451,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13362,
                                    "src": "6065:4:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6052:18:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13454,
                              "nodeType": "ExpressionStatement",
                              "src": "6050:20:65"
                            },
                            {
                              "expression": {
                                "id": 13458,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "6142:18:65",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 13455,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13006,
                                    "src": "6144:12:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 13457,
                                  "indexExpression": {
                                    "id": 13456,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13364,
                                    "src": "6157:2:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6144:16:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13459,
                              "nodeType": "ExpressionStatement",
                              "src": "6142:18:65"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 13463,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13362,
                              "src": "6195:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13464,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13364,
                              "src": "6201:2:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13465,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13366,
                              "src": "6205:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 13462,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13749,
                            "src": "6186:8:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 13466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6186:27:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13467,
                        "nodeType": "EmitStatement",
                        "src": "6181:32:65"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 13472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13468,
                            "name": "safe",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13370,
                            "src": "6228:4:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 13469,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13364,
                                "src": "6236:2:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 13470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isContract",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1284,
                              "src": "6236:13:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 13471,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6236:15:65",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6228:23:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13490,
                        "nodeType": "IfStatement",
                        "src": "6224:182:65",
                        "trueBody": {
                          "id": 13489,
                          "nodeType": "Block",
                          "src": "6253:153:65",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 13485,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 13478,
                                            "name": "_msgSender",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 312,
                                            "src": "6312:10:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                              "typeString": "function () view returns (address payable)"
                                            }
                                          },
                                          "id": 13479,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6312:12:65",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        {
                                          "id": 13480,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13362,
                                          "src": "6326:4:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 13481,
                                          "name": "tokenId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13366,
                                          "src": "6332:7:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 13482,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13368,
                                          "src": "6341:4:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 13475,
                                              "name": "to",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13364,
                                              "src": "6291:2:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 13474,
                                            "name": "IERC721Receiver",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13839,
                                            "src": "6275:15:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$13839_$",
                                              "typeString": "type(contract IERC721Receiver)"
                                            }
                                          },
                                          "id": 13476,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6275:19:65",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC721Receiver_$13839",
                                            "typeString": "contract IERC721Receiver"
                                          }
                                        },
                                        "id": 13477,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "onERC721Received",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 13838,
                                        "src": "6275:36:65",
                                        "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": 13483,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6275:71:65",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 13484,
                                      "name": "_ERC721_RECEIVED",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12987,
                                      "src": "6350:16:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "src": "6275:91:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e736665722072656675736564",
                                    "id": 13486,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6368:26:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_e60cd6d11f3cd333d70a8e4238c4f3b893711a9ef9ee1fc23fe77474224dee0f",
                                      "typeString": "literal_string \"ERC721: transfer refused\""
                                    },
                                    "value": "ERC721: transfer refused"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_e60cd6d11f3cd333d70a8e4238c4f3b893711a9ef9ee1fc23fe77474224dee0f",
                                      "typeString": "literal_string \"ERC721: transfer refused\""
                                    }
                                  ],
                                  "id": 13473,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "6267:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 13487,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6267:128:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 13488,
                              "nodeType": "ExpressionStatement",
                              "src": "6267:128:65"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 13492,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13371,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13362,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 13492,
                        "src": "5311:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13361,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5311:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13364,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13492,
                        "src": "5333:10:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13363,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5333:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13366,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13492,
                        "src": "5353:15:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13365,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5353:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13368,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 13492,
                        "src": "5378:17:65",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 13367,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5378:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13370,
                        "mutability": "mutable",
                        "name": "safe",
                        "nodeType": "VariableDeclaration",
                        "scope": 13492,
                        "src": "5405:9:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13369,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5405:4:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5301:119:65"
                  },
                  "returnParameters": {
                    "id": 13372,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5438:0:65"
                  },
                  "scope": 13616,
                  "src": "5279:1133:65",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13544,
                    "nodeType": "Block",
                    "src": "6479:330:65",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 13505,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 13500,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13494,
                                "src": "6497:2:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 13503,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6511:1:65",
                                    "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": 13502,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6503:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 13501,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6503:7:65",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13504,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6503:10:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6497:16:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206d696e7420746f207a65726f",
                              "id": 13506,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6515:22:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_eda2b88504e5e8fd3513ade42d531cbab42b919ad3468e0299d7073bcde4796f",
                                "typeString": "literal_string \"ERC721: mint to zero\""
                              },
                              "value": "ERC721: mint to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_eda2b88504e5e8fd3513ade42d531cbab42b919ad3468e0299d7073bcde4796f",
                                "typeString": "literal_string \"ERC721: mint to zero\""
                              }
                            ],
                            "id": 13499,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6489:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6489:49:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13508,
                        "nodeType": "ExpressionStatement",
                        "src": "6489:49:65"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13514,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 13510,
                                  "name": "_owners",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13002,
                                  "src": "6556:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 13512,
                                "indexExpression": {
                                  "id": 13511,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13496,
                                  "src": "6564:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6556:16:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 13513,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6576:1:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6556:21:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206578697374696e67204e4654",
                              "id": 13515,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6579:22:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_abce7988b08ce0fd6d655eae99138a326cd06d3148a442fa8093c4681edc9074",
                                "typeString": "literal_string \"ERC721: existing NFT\""
                              },
                              "value": "ERC721: existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_abce7988b08ce0fd6d655eae99138a326cd06d3148a442fa8093c4681edc9074",
                                "typeString": "literal_string \"ERC721: existing NFT\""
                              }
                            ],
                            "id": 13509,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6548:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13516,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6548:54:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13517,
                        "nodeType": "ExpressionStatement",
                        "src": "6548:54:65"
                      },
                      {
                        "expression": {
                          "id": 13528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 13518,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13002,
                              "src": "6613:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 13520,
                            "indexExpression": {
                              "id": 13519,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13496,
                              "src": "6621:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6613:16:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 13525,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13494,
                                    "src": "6648:2:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 13524,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6640:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 13523,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6640:7:65",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13526,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6640:11:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 13522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6632:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 13521,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6632:7:65",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 13527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6632:20:65",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6613:39:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13529,
                        "nodeType": "ExpressionStatement",
                        "src": "6613:39:65"
                      },
                      {
                        "expression": {
                          "id": 13533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "6735:18:65",
                          "subExpression": {
                            "baseExpression": {
                              "id": 13530,
                              "name": "_nftBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13006,
                              "src": "6737:12:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 13532,
                            "indexExpression": {
                              "id": 13531,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13494,
                              "src": "6750:2:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6737:16:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13534,
                        "nodeType": "ExpressionStatement",
                        "src": "6735:18:65"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 13538,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6786:1:65",
                                  "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": 13537,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6778:7:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 13536,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6778:7:65",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13539,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6778:10:65",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 13540,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13494,
                              "src": "6790:2:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13541,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13496,
                              "src": "6794:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 13535,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13749,
                            "src": "6769:8:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 13542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6769:33:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13543,
                        "nodeType": "EmitStatement",
                        "src": "6764:38:65"
                      }
                    ]
                  },
                  "id": 13545,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13497,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13494,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13545,
                        "src": "6433:10:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13493,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6433:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13496,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13545,
                        "src": "6445:15:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13495,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6445:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6432:29:65"
                  },
                  "returnParameters": {
                    "id": 13498,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6479:0:65"
                  },
                  "scope": 13616,
                  "src": "6418:391:65",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13592,
                    "nodeType": "Block",
                    "src": "6864:322:65",
                    "statements": [
                      {
                        "assignments": [
                          13551
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13551,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 13592,
                            "src": "6874:13:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 13550,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6874:7:65",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13561,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 13556,
                                    "name": "_owners",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13002,
                                    "src": "6906:7:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 13558,
                                  "indexExpression": {
                                    "id": 13557,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13547,
                                    "src": "6914:7:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6906:16:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 13555,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6898:7:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 13554,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6898:7:65",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6898:25:65",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 13553,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6890:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 13552,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6890:7:65",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 13560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6890:34:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6874:50:65"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 13568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 13563,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13551,
                                "src": "6943:5:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 13566,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6960:1:65",
                                    "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": 13565,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6952:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 13564,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6952:7:65",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13567,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6952:10:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6943:19:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206e6f6e2d6578697374696e67204e4654",
                              "id": 13569,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6964:26:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              },
                              "value": "ERC721: non-existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              }
                            ],
                            "id": 13562,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6935:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6935:56:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13571,
                        "nodeType": "ExpressionStatement",
                        "src": "6935:56:65"
                      },
                      {
                        "expression": {
                          "id": 13576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 13572,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13002,
                              "src": "7002:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 13574,
                            "indexExpression": {
                              "id": 13573,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13547,
                              "src": "7010:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7002:16:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 13575,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7021:1:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7002:20:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13577,
                        "nodeType": "ExpressionStatement",
                        "src": "7002:20:65"
                      },
                      {
                        "expression": {
                          "id": 13581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "--",
                          "prefix": true,
                          "src": "7106:21:65",
                          "subExpression": {
                            "baseExpression": {
                              "id": 13578,
                              "name": "_nftBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13006,
                              "src": "7108:12:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 13580,
                            "indexExpression": {
                              "id": 13579,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13551,
                              "src": "7121:5:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7108:19:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13582,
                        "nodeType": "ExpressionStatement",
                        "src": "7106:21:65"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 13584,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13551,
                              "src": "7152:5:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 13587,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7167:1:65",
                                  "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": 13586,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7159:7:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 13585,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7159:7:65",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13588,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7159:10:65",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 13589,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13547,
                              "src": "7171:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 13583,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13749,
                            "src": "7143:8:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 13590,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7143:36:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13591,
                        "nodeType": "EmitStatement",
                        "src": "7138:41:65"
                      }
                    ]
                  },
                  "id": 13593,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13548,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13547,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13593,
                        "src": "6830:15:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13546,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6830:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6829:17:65"
                  },
                  "returnParameters": {
                    "id": 13549,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6864:0:65"
                  },
                  "scope": 13616,
                  "src": "6815:371:65",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13614,
                    "nodeType": "Block",
                    "src": "7690:68:65",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 13612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 13605,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 13603,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13596,
                                  "src": "7708:4:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 13604,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13598,
                                  "src": "7716:6:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "7708:14:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 13606,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7707:16:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 13607,
                                "name": "_operators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12998,
                                "src": "7727:10:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 13609,
                              "indexExpression": {
                                "id": 13608,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13596,
                                "src": "7738:4:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7727:16:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 13611,
                            "indexExpression": {
                              "id": 13610,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13598,
                              "src": "7744:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7727:24:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7707:44:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 13602,
                        "id": 13613,
                        "nodeType": "Return",
                        "src": "7700:51:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13594,
                    "nodeType": "StructuredDocumentation",
                    "src": "7321:282:65",
                    "text": " Returns whether `sender` is authorised to make a transfer on behalf of `from`.\n @param from The address to check operatibility upon.\n @param sender The sender address.\n @return True if sender is `from` or an operator for `from`, false otherwise."
                  },
                  "id": 13615,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_isOperatable",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13599,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13596,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 13615,
                        "src": "7631:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13595,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7631:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13598,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 13615,
                        "src": "7645:14:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13597,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7645:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7630:30:65"
                  },
                  "returnParameters": {
                    "id": 13602,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13601,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13615,
                        "src": "7684:4:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13600,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7684:4:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7683:6:65"
                  },
                  "scope": 13616,
                  "src": "7608:150:65",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 13617,
              "src": "631:7129:65"
            }
          ],
          "src": "33:7728:65"
        },
        "id": 65
      },
      "contracts/token/ERC721/interfaces/IERC721.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/interfaces/IERC721.sol",
          "exportedSymbols": {
            "IERC721": [
              13702
            ]
          },
          "id": 13703,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13618,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:66"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 13619,
                "nodeType": "StructuredDocumentation",
                "src": "66:299:66",
                "text": " @title ERC721 Non-Fungible Token Standard, basic interface (functions).\n @dev See https://eips.ethereum.org/EIPS/eip-721\n @dev This interface only contains the standard functions. See IERC721Events for the events.\n @dev Note: The ERC-165 identifier for this interface is 0x80ac58cd."
              },
              "fullyImplemented": false,
              "id": 13702,
              "linearizedBaseContracts": [
                13702
              ],
              "name": "IERC721",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 13620,
                    "nodeType": "StructuredDocumentation",
                    "src": "390:195:66",
                    "text": " Gets the balance of the specified address\n @param owner address to query the balance of\n @return balance uint256 representing the amount owned by the passed address"
                  },
                  "functionSelector": "70a08231",
                  "id": 13627,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13623,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13622,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 13627,
                        "src": "609:13:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13621,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "609:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "608:15:66"
                  },
                  "returnParameters": {
                    "id": 13626,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13625,
                        "mutability": "mutable",
                        "name": "balance",
                        "nodeType": "VariableDeclaration",
                        "scope": 13627,
                        "src": "647:15:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13624,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "647:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "646:17:66"
                  },
                  "scope": 13702,
                  "src": "590:74:66",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 13628,
                    "nodeType": "StructuredDocumentation",
                    "src": "670:183:66",
                    "text": " Gets the owner of the specified ID\n @param tokenId uint256 ID to query the owner of\n @return owner address currently marked as the owner of the given ID"
                  },
                  "functionSelector": "6352211e",
                  "id": 13635,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13631,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13630,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13635,
                        "src": "875:15:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13629,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "875:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "874:17:66"
                  },
                  "returnParameters": {
                    "id": 13634,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13633,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 13635,
                        "src": "915:13:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13632,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "915:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "914:15:66"
                  },
                  "scope": 13702,
                  "src": "858:72:66",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 13636,
                    "nodeType": "StructuredDocumentation",
                    "src": "936:420:66",
                    "text": " Approves another address to transfer the given token ID\n @dev The zero address indicates there is no approved address.\n @dev There can only be one approved address per token at a given time.\n @dev Can only be called by the token owner or an approved operator.\n @param to address to be approved for the given token ID\n @param tokenId uint256 ID of the token to be approved"
                  },
                  "functionSelector": "095ea7b3",
                  "id": 13643,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13641,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13638,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13643,
                        "src": "1378:10:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13637,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1378:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13640,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13643,
                        "src": "1390:15:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13639,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1390:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1377:29:66"
                  },
                  "returnParameters": {
                    "id": 13642,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1415:0:66"
                  },
                  "scope": 13702,
                  "src": "1361:55:66",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 13644,
                    "nodeType": "StructuredDocumentation",
                    "src": "1422:283:66",
                    "text": " Gets the approved address for a token ID, or zero if no address set\n @dev Reverts if the token ID does not exist.\n @param tokenId uint256 ID of the token to query the approval of\n @return operator address currently approved for the given token ID"
                  },
                  "functionSelector": "081812fc",
                  "id": 13651,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getApproved",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13647,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13646,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13651,
                        "src": "1731:15:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13645,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1731:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1730:17:66"
                  },
                  "returnParameters": {
                    "id": 13650,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13649,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 13651,
                        "src": "1771:16:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13648,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1771:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1770:18:66"
                  },
                  "scope": 13702,
                  "src": "1710:79:66",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 13652,
                    "nodeType": "StructuredDocumentation",
                    "src": "1795:287:66",
                    "text": " Sets or unsets the approval of a given operator\n @dev An operator is allowed to transfer all tokens of the sender on their behalf\n @param operator operator address to set the approval\n @param approved representing the status of the approval to be set"
                  },
                  "functionSelector": "a22cb465",
                  "id": 13659,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13657,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13654,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 13659,
                        "src": "2114:16:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13653,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2114:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13656,
                        "mutability": "mutable",
                        "name": "approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 13659,
                        "src": "2132:13:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13655,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2132:4:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2113:33:66"
                  },
                  "returnParameters": {
                    "id": 13658,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2155:0:66"
                  },
                  "scope": 13702,
                  "src": "2087:69:66",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 13660,
                    "nodeType": "StructuredDocumentation",
                    "src": "2162:305:66",
                    "text": " Tells whether an operator is approved by a given owner\n @param owner owner address which you want to query the approval of\n @param operator operator address which you want to query the approval of\n @return bool whether the given operator is approved by the given owner"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 13669,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13665,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13662,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 13669,
                        "src": "2498:13:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13661,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2498:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13664,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 13669,
                        "src": "2513:16:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13663,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2513:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2497:33:66"
                  },
                  "returnParameters": {
                    "id": 13668,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13667,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13669,
                        "src": "2554:4:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13666,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2554:4:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2553:6:66"
                  },
                  "scope": 13702,
                  "src": "2472:88:66",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 13670,
                    "nodeType": "StructuredDocumentation",
                    "src": "2566:428:66",
                    "text": " Transfers the ownership of a given token ID to another address\n @dev Usage of this method is discouraged, use `safeTransferFrom` whenever possible\n @dev Requires the msg sender to be the owner, approved, or operator\n @param from current owner of the token\n @param to address to receive the ownership of the given token ID\n @param tokenId uint256 ID of the token to be transferred"
                  },
                  "functionSelector": "23b872dd",
                  "id": 13679,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13677,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13672,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 13679,
                        "src": "3030:12:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13671,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3030:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13674,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13679,
                        "src": "3052:10:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13673,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3052:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13676,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13679,
                        "src": "3072:15:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13675,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3072:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3020:73:66"
                  },
                  "returnParameters": {
                    "id": 13678,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3102:0:66"
                  },
                  "scope": 13702,
                  "src": "2999:104:66",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 13680,
                    "nodeType": "StructuredDocumentation",
                    "src": "3109:636:66",
                    "text": " Safely transfers the ownership of a given token ID to another address\n If the target address is a contract, it must implement `onERC721Received`,\n which is called upon a safe transfer, and return the magic value\n `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\n the transfer is reverted.\n @dev Requires the msg sender to be the owner, approved, or operator\n @param from current owner of the token\n @param to address to receive the ownership of the given token ID\n @param tokenId uint256 ID of the token to be transferred"
                  },
                  "functionSelector": "42842e0e",
                  "id": 13689,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13687,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13682,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 13689,
                        "src": "3785:12:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13681,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3785:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13684,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13689,
                        "src": "3807:10:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13683,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3807:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13686,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13689,
                        "src": "3827:15:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13685,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3827:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3775:73:66"
                  },
                  "returnParameters": {
                    "id": 13688,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3857:0:66"
                  },
                  "scope": 13702,
                  "src": "3750:108:66",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 13690,
                    "nodeType": "StructuredDocumentation",
                    "src": "3864:707:66",
                    "text": " Safely transfers the ownership of a given token ID to another address\n If the target address is a contract, it must implement `onERC721Received`,\n which is called upon a safe transfer, and return the magic value\n `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\n the transfer is reverted.\n @dev Requires the msg sender to be the owner, approved, or operator\n @param from current owner of the token\n @param to address to receive the ownership of the given token ID\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes data to send along with a safe transfer check"
                  },
                  "functionSelector": "b88d4fde",
                  "id": 13701,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13699,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13692,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 13701,
                        "src": "4611:12:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13691,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4611:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13694,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13701,
                        "src": "4633:10:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13693,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4633:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13696,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13701,
                        "src": "4653:15:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13695,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4653:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13698,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 13701,
                        "src": "4678:19:66",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 13697,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4678:5:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4601:102:66"
                  },
                  "returnParameters": {
                    "id": 13700,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4712:0:66"
                  },
                  "scope": 13702,
                  "src": "4576:137:66",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 13703,
              "src": "366:4349:66"
            }
          ],
          "src": "33:4683:66"
        },
        "id": 66
      },
      "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol",
          "exportedSymbols": {
            "IERC721BatchTransfer": [
              13717
            ]
          },
          "id": 13718,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13704,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:67"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 13705,
                "nodeType": "StructuredDocumentation",
                "src": "66:211:67",
                "text": " @title ERC721 Non-Fungible Token Standard, optional extension: Batch Transfer.\n @dev See https://eips.ethereum.org/EIPS/eip-721\n @dev Note: The ERC-165 identifier for this interface is 0xf3993d11."
              },
              "fullyImplemented": false,
              "id": 13717,
              "linearizedBaseContracts": [
                13717
              ],
              "name": "IERC721BatchTransfer",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 13706,
                    "nodeType": "StructuredDocumentation",
                    "src": "315:505:67",
                    "text": " Unsafely transfers a batch of tokens.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if one of `tokenIds` is not owned by `from`.\n @dev Resets the token approval for each of `tokenIds`.\n @dev Emits an {IERC721-Transfer} event for each of `tokenIds`.\n @param from Current tokens owner.\n @param to Address of the new token owner.\n @param tokenIds Identifiers of the tokens to transfer."
                  },
                  "functionSelector": "f3993d11",
                  "id": 13716,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13714,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13708,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 13716,
                        "src": "861:12:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13707,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "861:7:67",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13710,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13716,
                        "src": "883:10:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13709,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "883:7:67",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13713,
                        "mutability": "mutable",
                        "name": "tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 13716,
                        "src": "903:27:67",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13711,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "903:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13712,
                          "nodeType": "ArrayTypeName",
                          "src": "903:9:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "851:85:67"
                  },
                  "returnParameters": {
                    "id": 13715,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "945:0:67"
                  },
                  "scope": 13717,
                  "src": "825:121:67",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 13718,
              "src": "278:670:67"
            }
          ],
          "src": "33:916:67"
        },
        "id": 67
      },
      "contracts/token/ERC721/interfaces/IERC721Burnable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/interfaces/IERC721Burnable.sol",
          "exportedSymbols": {
            "IERC721Burnable": [
              13738
            ]
          },
          "id": 13739,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13719,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:68"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 13720,
                "nodeType": "StructuredDocumentation",
                "src": "66:205:68",
                "text": " @title ERC721 Non-Fungible Token Standard, optional extension: Burnable.\n @dev See https://eips.ethereum.org/EIPS/eip-721\n @dev Note: The ERC-165 identifier for this interface is 0x8b8b4ef5."
              },
              "fullyImplemented": false,
              "id": 13738,
              "linearizedBaseContracts": [
                13738
              ],
              "name": "IERC721Burnable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 13721,
                    "nodeType": "StructuredDocumentation",
                    "src": "304:299:68",
                    "text": " Burns a token.\n @dev Reverts if the sender is not approved.\n @dev Reverts if `tokenId` is not owned by `from`.\n @dev Emits an {IERC721-Transfer} event to address zero.\n @param from Current token owner.\n @param tokenId Identifier of the token to burn."
                  },
                  "functionSelector": "79cc6790",
                  "id": 13728,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13726,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13723,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 13728,
                        "src": "626:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13722,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "626:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13725,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13728,
                        "src": "640:15:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13724,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "640:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "625:31:68"
                  },
                  "returnParameters": {
                    "id": 13727,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "665:0:68"
                  },
                  "scope": 13738,
                  "src": "608:58:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 13729,
                    "nodeType": "StructuredDocumentation",
                    "src": "672:366:68",
                    "text": " Burns a batch of tokens.\n @dev Reverts if the sender is not approved for any of `tokenIds`.\n @dev Reverts if one of `tokenIds` is not owned by `from`.\n @dev Emits an {IERC721-Transfer} event to address zero for each of `tokenIds`.\n @param from Current tokens owner.\n @param tokenIds Identifiers of the tokens to burn."
                  },
                  "functionSelector": "f2472965",
                  "id": 13737,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13735,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13731,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 13737,
                        "src": "1066:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13730,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1066:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13734,
                        "mutability": "mutable",
                        "name": "tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 13737,
                        "src": "1080:27:68",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13732,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1080:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13733,
                          "nodeType": "ArrayTypeName",
                          "src": "1080:9:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1065:43:68"
                  },
                  "returnParameters": {
                    "id": 13736,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1117:0:68"
                  },
                  "scope": 13738,
                  "src": "1043:75:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 13739,
              "src": "272:848:68"
            }
          ],
          "src": "33:1088:68"
        },
        "id": 68
      },
      "contracts/token/ERC721/interfaces/IERC721Events.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/interfaces/IERC721Events.sol",
          "exportedSymbols": {
            "IERC721Events": [
              13766
            ]
          },
          "id": 13767,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13740,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:69"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 13741,
                "nodeType": "StructuredDocumentation",
                "src": "66:290:69",
                "text": " @title ERC721 Non-Fungible Token Standard, basic interface (events).\n @dev See https://eips.ethereum.org/EIPS/eip-721\n @dev This interface only contains the standard events, see IERC721 for the functions.\n @dev Note: The ERC-165 identifier for this interface is 0x80ac58cd."
              },
              "fullyImplemented": true,
              "id": 13766,
              "linearizedBaseContracts": [
                13766
              ],
              "name": "IERC721Events",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 13749,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 13748,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13743,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 13749,
                        "src": "402:21:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13742,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "402:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13745,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13749,
                        "src": "425:19:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13744,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "425:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13747,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13749,
                        "src": "446:24:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13746,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "446:7:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "401:70:69"
                  },
                  "src": "387:85:69"
                },
                {
                  "anonymous": false,
                  "id": 13757,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 13756,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13751,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 13757,
                        "src": "493:22:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13750,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "493:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13753,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 13757,
                        "src": "517:25:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13752,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "517:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13755,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13757,
                        "src": "544:24:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13754,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "544:7:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "492:77:69"
                  },
                  "src": "478:92:69"
                },
                {
                  "anonymous": false,
                  "id": 13765,
                  "name": "ApprovalForAll",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 13764,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13759,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 13765,
                        "src": "597:22:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13758,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "597:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13761,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 13765,
                        "src": "621:25:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13760,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "621:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13763,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 13765,
                        "src": "648:14:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13762,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "648:4:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "596:67:69"
                  },
                  "src": "576:88:69"
                }
              ],
              "scope": 13767,
              "src": "357:309:69"
            }
          ],
          "src": "33:634:69"
        },
        "id": 69
      },
      "contracts/token/ERC721/interfaces/IERC721Metadata.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/interfaces/IERC721Metadata.sol",
          "exportedSymbols": {
            "IERC721Metadata": [
              13790
            ]
          },
          "id": 13791,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13768,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:70"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 13769,
                "nodeType": "StructuredDocumentation",
                "src": "66:205:70",
                "text": " @title ERC721 Non-Fungible Token Standard, optional extension: Metadata.\n @dev See https://eips.ethereum.org/EIPS/eip-721\n @dev Note: The ERC-165 identifier for this interface is 0x5b5e139f."
              },
              "fullyImplemented": false,
              "id": 13790,
              "linearizedBaseContracts": [
                13790
              ],
              "name": "IERC721Metadata",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 13770,
                    "nodeType": "StructuredDocumentation",
                    "src": "304:93:70",
                    "text": " @dev Gets the token name\n @return string representing the token name"
                  },
                  "functionSelector": "06fdde03",
                  "id": 13775,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13771,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "415:2:70"
                  },
                  "returnParameters": {
                    "id": 13774,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13773,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13775,
                        "src": "441:13:70",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13772,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "441:6:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "440:15:70"
                  },
                  "scope": 13790,
                  "src": "402:54:70",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 13776,
                    "nodeType": "StructuredDocumentation",
                    "src": "462:97:70",
                    "text": " @dev Gets the token symbol\n @return string representing the token symbol"
                  },
                  "functionSelector": "95d89b41",
                  "id": 13781,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13777,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "579:2:70"
                  },
                  "returnParameters": {
                    "id": 13780,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13779,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13781,
                        "src": "605:13:70",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13778,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "605:6:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "604:15:70"
                  },
                  "scope": 13790,
                  "src": "564:56:70",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 13782,
                    "nodeType": "StructuredDocumentation",
                    "src": "626:232:70",
                    "text": " @dev Returns an URI for a given token ID\n Throws if the token ID does not exist. May return an empty string.\n @param tokenId uint256 ID of the token to query\n @return string URI of given token ID"
                  },
                  "functionSelector": "c87b56dd",
                  "id": 13789,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13785,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13784,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13789,
                        "src": "881:15:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13783,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "881:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "880:17:70"
                  },
                  "returnParameters": {
                    "id": 13788,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13787,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13789,
                        "src": "921:13:70",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13786,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "921:6:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "920:15:70"
                  },
                  "scope": 13790,
                  "src": "863:73:70",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 13791,
              "src": "272:666:70"
            }
          ],
          "src": "33:906:70"
        },
        "id": 70
      },
      "contracts/token/ERC721/interfaces/IERC721Mintable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/interfaces/IERC721Mintable.sol",
          "exportedSymbols": {
            "IERC721Mintable": [
              13821
            ]
          },
          "id": 13822,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13792,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:71"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 13793,
                "nodeType": "StructuredDocumentation",
                "src": "66:134:71",
                "text": " @title ERC721 Non-Fungible Token Standard, optional extension: Mintable.\n @dev See https://eips.ethereum.org/EIPS/eip-721"
              },
              "fullyImplemented": false,
              "id": 13821,
              "linearizedBaseContracts": [
                13821
              ],
              "name": "IERC721Mintable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 13794,
                    "nodeType": "StructuredDocumentation",
                    "src": "233:322:71",
                    "text": " Unsafely mints a token.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if `tokenId` has already been minted.\n @dev Emits an {IERC721-Transfer} event from the zero address.\n @param to Address of the new token owner.\n @param tokenId Identifier of the token to mint."
                  },
                  "functionSelector": "40c10f19",
                  "id": 13801,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13799,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13796,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13801,
                        "src": "574:10:71",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13795,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "574:7:71",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13798,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13801,
                        "src": "586:15:71",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13797,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "586:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "573:29:71"
                  },
                  "returnParameters": {
                    "id": 13800,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "611:0:71"
                  },
                  "scope": 13821,
                  "src": "560:52:71",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 13802,
                    "nodeType": "StructuredDocumentation",
                    "src": "618:367:71",
                    "text": " Unsafely mints a batch of tokens.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if one of `tokenIds` has already been minted.\n @dev Emits an {IERC721-Transfer} event from the zero address for each of `tokenIds`.\n @param to Address of the new tokens owner.\n @param tokenIds Identifiers of the tokens to mint."
                  },
                  "functionSelector": "4684d7e9",
                  "id": 13810,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13808,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13804,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13810,
                        "src": "1009:10:71",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13803,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1009:7:71",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13807,
                        "mutability": "mutable",
                        "name": "tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 13810,
                        "src": "1021:27:71",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13805,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1021:7:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13806,
                          "nodeType": "ArrayTypeName",
                          "src": "1021:9:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1008:41:71"
                  },
                  "returnParameters": {
                    "id": 13809,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1058:0:71"
                  },
                  "scope": 13821,
                  "src": "990:69:71",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 13811,
                    "nodeType": "StructuredDocumentation",
                    "src": "1065:502:71",
                    "text": " Safely mints a token.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if `tokenId` has already ben minted.\n @dev Reverts if `to` is a contract and the call to {IERC721Receiver-onERC721Received} fails or is refused.\n @dev Emits an {IERC721-Transfer} event from the zero address.\n @param to Address of the new token owner.\n @param tokenId Identifier of the token to mint.\n @param data Optional data to pass along to the receiver call."
                  },
                  "functionSelector": "8832e6e3",
                  "id": 13820,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13818,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13813,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13820,
                        "src": "1599:10:71",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13812,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1599:7:71",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13815,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13820,
                        "src": "1619:15:71",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13814,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1619:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13817,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 13820,
                        "src": "1644:19:71",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 13816,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1644:5:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1589:80:71"
                  },
                  "returnParameters": {
                    "id": 13819,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1678:0:71"
                  },
                  "scope": 13821,
                  "src": "1572:107:71",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 13822,
              "src": "201:1480:71"
            }
          ],
          "src": "33:1649:71"
        },
        "id": 71
      },
      "contracts/token/ERC721/interfaces/IERC721Receiver.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/interfaces/IERC721Receiver.sol",
          "exportedSymbols": {
            "IERC721Receiver": [
              13839
            ]
          },
          "id": 13840,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13823,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:72"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 13824,
                "nodeType": "StructuredDocumentation",
                "src": "66:287:72",
                "text": " @title ERC721 Non-Fungible Token Standard, Tokens Receiver.\n Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\n @dev See https://eips.ethereum.org/EIPS/eip-721\n @dev Note: The ERC-165 identifier for this interface is 0x150b7a02."
              },
              "fullyImplemented": false,
              "id": 13839,
              "linearizedBaseContracts": [
                13839
              ],
              "name": "IERC721Receiver",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 13825,
                    "nodeType": "StructuredDocumentation",
                    "src": "386:868:72",
                    "text": " Handles the receipt of an NFT.\n @dev The ERC721 smart contract calls this function on the recipient\n  after a {IERC721-safeTransferFrom}. This function MUST return the function selector,\n  otherwise the caller will revert the transaction. The selector to be\n  returned can be obtained as `this.onERC721Received.selector`. This\n  function MAY throw to revert and reject the transfer.\n @dev Note: the ERC721 contract address is always the message sender.\n @param operator The address which called `safeTransferFrom` function\n @param from The address which previously owned the token\n @param tokenId The NFT identifier which is being transferred\n @param data Additional data with no specified format\n @return bytes4 `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`"
                  },
                  "functionSelector": "150b7a02",
                  "id": 13838,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC721Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13834,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13827,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 13838,
                        "src": "1294:16:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13826,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1294:7:72",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13829,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 13838,
                        "src": "1320:12:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13828,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1320:7:72",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13831,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13838,
                        "src": "1342:15:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13830,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1342:7:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13833,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 13838,
                        "src": "1367:19:72",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 13832,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1367:5:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1284:108:72"
                  },
                  "returnParameters": {
                    "id": 13837,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13836,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13838,
                        "src": "1411:6:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 13835,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1411:6:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1410:8:72"
                  },
                  "scope": 13839,
                  "src": "1259:160:72",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 13840,
              "src": "354:1067:72"
            }
          ],
          "src": "33:1389:72"
        },
        "id": 72
      },
      "contracts/token/ERC721/mocks/ERC721BurnableMock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/mocks/ERC721BurnableMock.sol",
          "exportedSymbols": {
            "ERC721Burnable": [
              12910
            ],
            "ERC721BurnableMock": [
              14029
            ],
            "IERC721Burnable": [
              13738
            ],
            "IERC721Metadata": [
              13790
            ],
            "IERC721Mintable": [
              13821
            ],
            "IForwarderRegistry": [
              15006
            ],
            "ManagedIdentity": [
              322
            ],
            "MinterRole": [
              125
            ],
            "NFTBaseMetadataURI": [
              1431
            ],
            "Recoverable": [
              1253
            ],
            "UsingUniversalForwarding": [
              15172
            ]
          },
          "id": 14030,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13841,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:73"
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "id": 13843,
              "nodeType": "ImportDirective",
              "scope": 14030,
              "sourceUnit": 15007,
              "src": "66:108:73",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 13842,
                    "name": "IForwarderRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:18:73",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Metadata.sol",
              "file": "./../interfaces/IERC721Metadata.sol",
              "id": 13845,
              "nodeType": "ImportDirective",
              "scope": 14030,
              "sourceUnit": 13791,
              "src": "175:68:73",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 13844,
                    "name": "IERC721Metadata",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "183:15:73",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Mintable.sol",
              "file": "./../interfaces/IERC721Mintable.sol",
              "id": 13847,
              "nodeType": "ImportDirective",
              "scope": 14030,
              "sourceUnit": 13822,
              "src": "244:68:73",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 13846,
                    "name": "IERC721Mintable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "252:15:73",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Burnable.sol",
              "file": "./../interfaces/IERC721Burnable.sol",
              "id": 13849,
              "nodeType": "ImportDirective",
              "scope": 14030,
              "sourceUnit": 13739,
              "src": "313:68:73",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 13848,
                    "name": "IERC721Burnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "321:15:73",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 13851,
              "nodeType": "ImportDirective",
              "scope": 14030,
              "sourceUnit": 323,
              "src": "382:102:73",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 13850,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "390:15:73",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "id": 13853,
              "nodeType": "ImportDirective",
              "scope": 14030,
              "sourceUnit": 1265,
              "src": "485:93:73",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 13852,
                    "name": "Recoverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "493:11:73",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "id": 13855,
              "nodeType": "ImportDirective",
              "scope": 14030,
              "sourceUnit": 15173,
              "src": "579:120:73",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 13854,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "587:24:73",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "id": 13857,
              "nodeType": "ImportDirective",
              "scope": 14030,
              "sourceUnit": 126,
              "src": "700:92:73",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 13856,
                    "name": "MinterRole",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "708:10:73",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/ERC721Burnable.sol",
              "file": "./../ERC721Burnable.sol",
              "id": 13859,
              "nodeType": "ImportDirective",
              "scope": 14030,
              "sourceUnit": 12911,
              "src": "793:55:73",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 13858,
                    "name": "ERC721Burnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "801:14:73",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/metadata/NFTBaseMetadataURI.sol",
              "file": "./../../../metadata/NFTBaseMetadataURI.sol",
              "id": 13861,
              "nodeType": "ImportDirective",
              "scope": 14030,
              "sourceUnit": 1432,
              "src": "849:78:73",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 13860,
                    "name": "NFTBaseMetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "857:18:73",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 13863,
                    "name": "Recoverable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1253,
                    "src": "1000:11:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Recoverable_$1253",
                      "typeString": "contract Recoverable"
                    }
                  },
                  "id": 13864,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1000:11:73"
                },
                {
                  "baseName": {
                    "id": 13865,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15172,
                    "src": "1013:24:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                      "typeString": "contract UsingUniversalForwarding"
                    }
                  },
                  "id": 13866,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1013:24:73"
                },
                {
                  "baseName": {
                    "id": 13867,
                    "name": "ERC721Burnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12910,
                    "src": "1039:14:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC721Burnable_$12910",
                      "typeString": "contract ERC721Burnable"
                    }
                  },
                  "id": 13868,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1039:14:73"
                },
                {
                  "baseName": {
                    "id": 13869,
                    "name": "IERC721Mintable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13821,
                    "src": "1055:15:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721Mintable_$13821",
                      "typeString": "contract IERC721Mintable"
                    }
                  },
                  "id": 13870,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1055:15:73"
                },
                {
                  "baseName": {
                    "id": 13871,
                    "name": "NFTBaseMetadataURI",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1431,
                    "src": "1072:18:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_NFTBaseMetadataURI_$1431",
                      "typeString": "contract NFTBaseMetadataURI"
                    }
                  },
                  "id": 13872,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1072:18:73"
                },
                {
                  "baseName": {
                    "id": 13873,
                    "name": "MinterRole",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 125,
                    "src": "1092:10:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MinterRole_$125",
                      "typeString": "contract MinterRole"
                    }
                  },
                  "id": 13874,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1092:10:73"
                }
              ],
              "contractDependencies": [
                22,
                125,
                206,
                218,
                322,
                1253,
                1431,
                12685,
                12910,
                13702,
                13717,
                13738,
                13766,
                13790,
                13821,
                14994,
                15031,
                15172
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 13862,
                "nodeType": "StructuredDocumentation",
                "src": "929:39:73",
                "text": " @title ERC721 Burnable Mock."
              },
              "fullyImplemented": true,
              "id": 14029,
              "linearizedBaseContracts": [
                14029,
                125,
                1431,
                13821,
                12910,
                12685,
                13717,
                13790,
                13766,
                13702,
                218,
                15172,
                14994,
                15031,
                1253,
                206,
                22,
                322,
                13738
              ],
              "name": "ERC721BurnableMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 13893,
                    "nodeType": "Block",
                    "src": "1348:2:73",
                    "statements": []
                  },
                  "id": 13894,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "hexValue": "4552433732314275726e61626c654d6f636b",
                          "id": 13881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1210:20:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_adbcbfb77b1de47429789aa99e00a2680232384907b2f4fbcdefad0994a9313f",
                            "typeString": "literal_string \"ERC721BurnableMock\""
                          },
                          "value": "ERC721BurnableMock"
                        },
                        {
                          "hexValue": "4537323142",
                          "id": 13882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1232:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_01bba83189e58451bfdc8cd5b6da126bae48b8d91822f30cdd1f9b92f4fc50c6",
                            "typeString": "literal_string \"E721B\""
                          },
                          "value": "E721B"
                        }
                      ],
                      "id": 13883,
                      "modifierName": {
                        "id": 13880,
                        "name": "ERC721Burnable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12910,
                        "src": "1195:14:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC721Burnable_$12910_$",
                          "typeString": "type(contract ERC721Burnable)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1195:45:73"
                    },
                    {
                      "arguments": [
                        {
                          "id": 13885,
                          "name": "forwarderRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13876,
                          "src": "1274:17:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        {
                          "id": 13886,
                          "name": "universalForwarder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13878,
                          "src": "1293:18:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 13887,
                      "modifierName": {
                        "id": 13884,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15172,
                        "src": "1249:24:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                          "typeString": "type(contract UsingUniversalForwarding)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1249:63:73"
                    },
                    {
                      "arguments": [
                        {
                          "expression": {
                            "id": 13889,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1332:3:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 13890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1332:10:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "id": 13891,
                      "modifierName": {
                        "id": 13888,
                        "name": "MinterRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 125,
                        "src": "1321:10:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MinterRole_$125_$",
                          "typeString": "type(contract MinterRole)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1321:22:73"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13879,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13876,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 13894,
                        "src": "1121:36:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 13875,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15006,
                          "src": "1121:18:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13878,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 13894,
                        "src": "1159:26:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13877,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1159:7:73",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1120:66:73"
                  },
                  "returnParameters": {
                    "id": 13892,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1348:0:73"
                  },
                  "scope": 14029,
                  "src": "1109:241:73",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13789
                  ],
                  "body": {
                    "id": 13925,
                    "nodeType": "Block",
                    "src": "1609:128:73",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 13917,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 13908,
                                          "name": "_owners",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11819,
                                          "src": "1643:7:73",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 13910,
                                        "indexExpression": {
                                          "id": 13909,
                                          "name": "nftId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13897,
                                          "src": "1651:5:73",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "1643:14:73",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 13907,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1635:7:73",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 13906,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1635:7:73",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 13911,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1635:23:73",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 13905,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1627:7:73",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 13904,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1627:7:73",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13912,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1627:32:73",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 13915,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1671:1:73",
                                    "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": 13914,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1663:7:73",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 13913,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1663:7:73",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13916,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1663:10:73",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1627:46:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206e6f6e2d6578697374696e67204e4654",
                              "id": 13918,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1675:26:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              },
                              "value": "ERC721: non-existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              }
                            ],
                            "id": 13903,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1619:7:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1619:83:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13920,
                        "nodeType": "ExpressionStatement",
                        "src": "1619:83:73"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13922,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13897,
                              "src": "1724:5:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 13921,
                            "name": "_uri",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1430,
                            "src": "1719:4:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256) view returns (string memory)"
                            }
                          },
                          "id": 13923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1719:11:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 13902,
                        "id": 13924,
                        "nodeType": "Return",
                        "src": "1712:18:73"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13895,
                    "nodeType": "StructuredDocumentation",
                    "src": "1485:31:73",
                    "text": "@inheritdoc IERC721Metadata"
                  },
                  "functionSelector": "c87b56dd",
                  "id": 13926,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13899,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1576:8:73"
                  },
                  "parameters": {
                    "id": 13898,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13897,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13926,
                        "src": "1539:13:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13896,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1539:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1538:15:73"
                  },
                  "returnParameters": {
                    "id": 13902,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13901,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13926,
                        "src": "1594:13:73",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13900,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1594:6:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1593:15:73"
                  },
                  "scope": 14029,
                  "src": "1521:216:73",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    13801
                  ],
                  "body": {
                    "id": 13947,
                    "nodeType": "Block",
                    "src": "2025:82:73",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 13936,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  14006
                                ],
                                "referencedDeclaration": 14006,
                                "src": "2050:10:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 13937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2050:12:73",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 13935,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "2035:14:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 13938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2035:28:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13939,
                        "nodeType": "ExpressionStatement",
                        "src": "2035:28:73"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13941,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13929,
                              "src": "2079:2:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13942,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13931,
                              "src": "2083:5:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 13943,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2090:2:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 13944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2094:5:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 13940,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12364,
                            "src": "2073:5:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 13945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2073:27:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13946,
                        "nodeType": "ExpressionStatement",
                        "src": "2073:27:73"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13927,
                    "nodeType": "StructuredDocumentation",
                    "src": "1872:83:73",
                    "text": "@inheritdoc IERC721Mintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "40c10f19",
                  "id": 13948,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13933,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2016:8:73"
                  },
                  "parameters": {
                    "id": 13932,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13929,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13948,
                        "src": "1974:10:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13928,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1974:7:73",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13931,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13948,
                        "src": "1986:13:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13930,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1986:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1973:27:73"
                  },
                  "returnParameters": {
                    "id": 13934,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2025:0:73"
                  },
                  "scope": 14029,
                  "src": "1960:147:73",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13810
                  ],
                  "body": {
                    "id": 13968,
                    "nodeType": "Block",
                    "src": "2281:77:73",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 13959,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  14006
                                ],
                                "referencedDeclaration": 14006,
                                "src": "2306:10:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 13960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2306:12:73",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 13958,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "2291:14:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 13961,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2291:28:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13962,
                        "nodeType": "ExpressionStatement",
                        "src": "2291:28:73"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13964,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13951,
                              "src": "2340:2:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13965,
                              "name": "nftIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13954,
                              "src": "2344:6:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 13963,
                            "name": "_batchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12426,
                            "src": "2329:10:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory)"
                            }
                          },
                          "id": 13966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2329:22:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13967,
                        "nodeType": "ExpressionStatement",
                        "src": "2329:22:73"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13949,
                    "nodeType": "StructuredDocumentation",
                    "src": "2113:83:73",
                    "text": "@inheritdoc IERC721Mintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "4684d7e9",
                  "id": 13969,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13956,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2272:8:73"
                  },
                  "parameters": {
                    "id": 13955,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13951,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13969,
                        "src": "2220:10:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13950,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2220:7:73",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13954,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 13969,
                        "src": "2232:23:73",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13952,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2232:7:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13953,
                          "nodeType": "ArrayTypeName",
                          "src": "2232:9:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2219:37:73"
                  },
                  "returnParameters": {
                    "id": 13957,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2281:0:73"
                  },
                  "scope": 14029,
                  "src": "2201:157:73",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13820
                  ],
                  "body": {
                    "id": 13992,
                    "nodeType": "Block",
                    "src": "2570:83:73",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 13981,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  14006
                                ],
                                "referencedDeclaration": 14006,
                                "src": "2595:10:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 13982,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2595:12:73",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 13980,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "2580:14:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 13983,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2580:28:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13984,
                        "nodeType": "ExpressionStatement",
                        "src": "2580:28:73"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13986,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13972,
                              "src": "2624:2:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13987,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13974,
                              "src": "2628:5:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 13988,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13976,
                              "src": "2635:4:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 13989,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2641:4:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 13985,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12364,
                            "src": "2618:5:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 13990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2618:28:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13991,
                        "nodeType": "ExpressionStatement",
                        "src": "2618:28:73"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13970,
                    "nodeType": "StructuredDocumentation",
                    "src": "2364:83:73",
                    "text": "@inheritdoc IERC721Mintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "8832e6e3",
                  "id": 13993,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13978,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2561:8:73"
                  },
                  "parameters": {
                    "id": 13977,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13972,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 13993,
                        "src": "2479:10:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13971,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2479:7:73",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13974,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 13993,
                        "src": "2499:13:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13973,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2499:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13976,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 13993,
                        "src": "2522:17:73",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 13975,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2522:5:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2469:76:73"
                  },
                  "returnParameters": {
                    "id": 13979,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2570:0:73"
                  },
                  "scope": 14029,
                  "src": "2452:201:73",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    312,
                    15126
                  ],
                  "body": {
                    "id": 14005,
                    "nodeType": "Block",
                    "src": "2910:61:73",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 14001,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "2927:24:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 14002,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgSender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15126,
                            "src": "2927:35:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 14003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2927:37:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 14000,
                        "id": 14004,
                        "nodeType": "Return",
                        "src": "2920:44:73"
                      }
                    ]
                  },
                  "id": 14006,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13997,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 13995,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "2841:15:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 13996,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "2858:24:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "2832:51:73"
                  },
                  "parameters": {
                    "id": 13994,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2807:2:73"
                  },
                  "returnParameters": {
                    "id": 14000,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13999,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14006,
                        "src": "2893:15:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 13998,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2893:15:73",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2892:17:73"
                  },
                  "scope": 14029,
                  "src": "2788:183:73",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    321,
                    15171
                  ],
                  "body": {
                    "id": 14018,
                    "nodeType": "Block",
                    "src": "3098:59:73",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 14014,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "3115:24:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 14015,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15171,
                            "src": "3115:33:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$",
                              "typeString": "function () view returns (bytes calldata)"
                            }
                          },
                          "id": 14016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3115:35:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 14013,
                        "id": 14017,
                        "nodeType": "Return",
                        "src": "3108:42:73"
                      }
                    ]
                  },
                  "id": 14019,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14010,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 14008,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "3028:15:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 14009,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "3045:24:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "3019:51:73"
                  },
                  "parameters": {
                    "id": 14007,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2994:2:73"
                  },
                  "returnParameters": {
                    "id": 14013,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14012,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 14019,
                        "src": "3080:16:73",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14011,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3080:5:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3079:18:73"
                  },
                  "scope": 14029,
                  "src": "2977:180:73",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14027,
                    "nodeType": "Block",
                    "src": "3352:34:73",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 14024,
                            "name": "_msgData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              14019
                            ],
                            "referencedDeclaration": 14019,
                            "src": "3369:8:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () view returns (bytes memory)"
                            }
                          },
                          "id": 14025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3369:10:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 14023,
                        "id": 14026,
                        "nodeType": "Return",
                        "src": "3362:17:73"
                      }
                    ]
                  },
                  "functionSelector": "c4c2bfdc",
                  "id": 14028,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14020,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3308:2:73"
                  },
                  "returnParameters": {
                    "id": 14023,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14022,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 14028,
                        "src": "3334:16:73",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14021,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3334:5:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3333:18:73"
                  },
                  "scope": 14029,
                  "src": "3292:94:73",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 14030,
              "src": "969:2419:73"
            }
          ],
          "src": "33:3356:73"
        },
        "id": 73
      },
      "contracts/token/ERC721/mocks/ERC721Mock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/mocks/ERC721Mock.sol",
          "exportedSymbols": {
            "ERC721": [
              12685
            ],
            "ERC721Mock": [
              14217
            ],
            "IERC721Metadata": [
              13790
            ],
            "IERC721Mintable": [
              13821
            ],
            "IForwarderRegistry": [
              15006
            ],
            "ManagedIdentity": [
              322
            ],
            "MinterRole": [
              125
            ],
            "NFTBaseMetadataURI": [
              1431
            ],
            "Recoverable": [
              1253
            ],
            "UsingUniversalForwarding": [
              15172
            ]
          },
          "id": 14218,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14031,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:74"
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "id": 14033,
              "nodeType": "ImportDirective",
              "scope": 14218,
              "sourceUnit": 15007,
              "src": "66:108:74",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14032,
                    "name": "IForwarderRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:18:74",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Metadata.sol",
              "file": "./../interfaces/IERC721Metadata.sol",
              "id": 14035,
              "nodeType": "ImportDirective",
              "scope": 14218,
              "sourceUnit": 13791,
              "src": "175:68:74",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14034,
                    "name": "IERC721Metadata",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "183:15:74",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Mintable.sol",
              "file": "./../interfaces/IERC721Mintable.sol",
              "id": 14037,
              "nodeType": "ImportDirective",
              "scope": 14218,
              "sourceUnit": 13822,
              "src": "244:68:74",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14036,
                    "name": "IERC721Mintable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "252:15:74",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 14039,
              "nodeType": "ImportDirective",
              "scope": 14218,
              "sourceUnit": 323,
              "src": "313:102:74",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14038,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "321:15:74",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "id": 14041,
              "nodeType": "ImportDirective",
              "scope": 14218,
              "sourceUnit": 1265,
              "src": "416:93:74",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14040,
                    "name": "Recoverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "424:11:74",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "id": 14043,
              "nodeType": "ImportDirective",
              "scope": 14218,
              "sourceUnit": 15173,
              "src": "510:120:74",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14042,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "518:24:74",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "id": 14045,
              "nodeType": "ImportDirective",
              "scope": 14218,
              "sourceUnit": 126,
              "src": "631:92:74",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14044,
                    "name": "MinterRole",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "639:10:74",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/ERC721.sol",
              "file": "./../ERC721.sol",
              "id": 14047,
              "nodeType": "ImportDirective",
              "scope": 14218,
              "sourceUnit": 12686,
              "src": "724:39:74",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14046,
                    "name": "ERC721",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "732:6:74",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/metadata/NFTBaseMetadataURI.sol",
              "file": "./../../../metadata/NFTBaseMetadataURI.sol",
              "id": 14049,
              "nodeType": "ImportDirective",
              "scope": 14218,
              "sourceUnit": 1432,
              "src": "764:78:74",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14048,
                    "name": "NFTBaseMetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "772:18:74",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 14051,
                    "name": "Recoverable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1253,
                    "src": "898:11:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Recoverable_$1253",
                      "typeString": "contract Recoverable"
                    }
                  },
                  "id": 14052,
                  "nodeType": "InheritanceSpecifier",
                  "src": "898:11:74"
                },
                {
                  "baseName": {
                    "id": 14053,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15172,
                    "src": "911:24:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                      "typeString": "contract UsingUniversalForwarding"
                    }
                  },
                  "id": 14054,
                  "nodeType": "InheritanceSpecifier",
                  "src": "911:24:74"
                },
                {
                  "baseName": {
                    "id": 14055,
                    "name": "ERC721",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12685,
                    "src": "937:6:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC721_$12685",
                      "typeString": "contract ERC721"
                    }
                  },
                  "id": 14056,
                  "nodeType": "InheritanceSpecifier",
                  "src": "937:6:74"
                },
                {
                  "baseName": {
                    "id": 14057,
                    "name": "NFTBaseMetadataURI",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1431,
                    "src": "945:18:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_NFTBaseMetadataURI_$1431",
                      "typeString": "contract NFTBaseMetadataURI"
                    }
                  },
                  "id": 14058,
                  "nodeType": "InheritanceSpecifier",
                  "src": "945:18:74"
                },
                {
                  "baseName": {
                    "id": 14059,
                    "name": "IERC721Mintable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13821,
                    "src": "965:15:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721Mintable_$13821",
                      "typeString": "contract IERC721Mintable"
                    }
                  },
                  "id": 14060,
                  "nodeType": "InheritanceSpecifier",
                  "src": "965:15:74"
                },
                {
                  "baseName": {
                    "id": 14061,
                    "name": "MinterRole",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 125,
                    "src": "982:10:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MinterRole_$125",
                      "typeString": "contract MinterRole"
                    }
                  },
                  "id": 14062,
                  "nodeType": "InheritanceSpecifier",
                  "src": "982:10:74"
                }
              ],
              "contractDependencies": [
                22,
                125,
                206,
                218,
                322,
                1253,
                1431,
                12685,
                13702,
                13717,
                13766,
                13790,
                13821,
                14994,
                15031,
                15172
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 14050,
                "nodeType": "StructuredDocumentation",
                "src": "844:30:74",
                "text": " @title ERC721 Mock."
              },
              "fullyImplemented": true,
              "id": 14217,
              "linearizedBaseContracts": [
                14217,
                125,
                13821,
                1431,
                12685,
                13717,
                13790,
                13766,
                13702,
                218,
                15172,
                14994,
                15031,
                1253,
                206,
                22,
                322
              ],
              "name": "ERC721Mock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 14081,
                    "nodeType": "Block",
                    "src": "1221:2:74",
                    "statements": []
                  },
                  "id": 14082,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "hexValue": "4552433732314d6f636b",
                          "id": 14069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1092:12:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_6ae754848915b5f462f04136d56ad7d8fd2a7488893e74c4399294e24581f626",
                            "typeString": "literal_string \"ERC721Mock\""
                          },
                          "value": "ERC721Mock"
                        },
                        {
                          "hexValue": "45373231",
                          "id": 14070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1106:6:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_fa0b6105cb7733afc0d8b87c0f41c67256f673de2bafd9cb837cba483f4615d5",
                            "typeString": "literal_string \"E721\""
                          },
                          "value": "E721"
                        }
                      ],
                      "id": 14071,
                      "modifierName": {
                        "id": 14068,
                        "name": "ERC721",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12685,
                        "src": "1085:6:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC721_$12685_$",
                          "typeString": "type(contract ERC721)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1085:28:74"
                    },
                    {
                      "arguments": [
                        {
                          "id": 14073,
                          "name": "forwarderRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14064,
                          "src": "1147:17:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        {
                          "id": 14074,
                          "name": "universalForwarder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14066,
                          "src": "1166:18:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 14075,
                      "modifierName": {
                        "id": 14072,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15172,
                        "src": "1122:24:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                          "typeString": "type(contract UsingUniversalForwarding)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1122:63:74"
                    },
                    {
                      "arguments": [
                        {
                          "expression": {
                            "id": 14077,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1205:3:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 14078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1205:10:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "id": 14079,
                      "modifierName": {
                        "id": 14076,
                        "name": "MinterRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 125,
                        "src": "1194:10:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MinterRole_$125_$",
                          "typeString": "type(contract MinterRole)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1194:22:74"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14067,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14064,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 14082,
                        "src": "1011:36:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 14063,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15006,
                          "src": "1011:18:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14066,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 14082,
                        "src": "1049:26:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14065,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1049:7:74",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1010:66:74"
                  },
                  "returnParameters": {
                    "id": 14080,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1221:0:74"
                  },
                  "scope": 14217,
                  "src": "999:224:74",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13789
                  ],
                  "body": {
                    "id": 14113,
                    "nodeType": "Block",
                    "src": "1484:132:74",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 14105,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 14096,
                                          "name": "_owners",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11819,
                                          "src": "1518:7:74",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 14098,
                                        "indexExpression": {
                                          "id": 14097,
                                          "name": "tokenId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14085,
                                          "src": "1526:7:74",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "1518:16:74",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 14095,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1510:7:74",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 14094,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1510:7:74",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 14099,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1510:25:74",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 14093,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1502:7:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 14092,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1502:7:74",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 14100,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1502:34:74",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 14103,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1548:1:74",
                                    "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": 14102,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1540:7:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 14101,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1540:7:74",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 14104,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1540:10:74",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1502:48:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206e6f6e2d6578697374696e67204e4654",
                              "id": 14106,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1552:26:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              },
                              "value": "ERC721: non-existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_531da3b048205e04778844e17c2f7500294a805b23136a1998c622a0e2c8a0bc",
                                "typeString": "literal_string \"ERC721: non-existing NFT\""
                              }
                            ],
                            "id": 14091,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1494:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 14107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1494:85:74",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14108,
                        "nodeType": "ExpressionStatement",
                        "src": "1494:85:74"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14110,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14085,
                              "src": "1601:7:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14109,
                            "name": "_uri",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1430,
                            "src": "1596:4:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256) view returns (string memory)"
                            }
                          },
                          "id": 14111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1596:13:74",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 14090,
                        "id": 14112,
                        "nodeType": "Return",
                        "src": "1589:20:74"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14083,
                    "nodeType": "StructuredDocumentation",
                    "src": "1358:31:74",
                    "text": "@inheritdoc IERC721Metadata"
                  },
                  "functionSelector": "c87b56dd",
                  "id": 14114,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14087,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1451:8:74"
                  },
                  "parameters": {
                    "id": 14086,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14085,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 14114,
                        "src": "1412:15:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14084,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1412:7:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1411:17:74"
                  },
                  "returnParameters": {
                    "id": 14090,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14089,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14114,
                        "src": "1469:13:74",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 14088,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1469:6:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1468:15:74"
                  },
                  "scope": 14217,
                  "src": "1394:222:74",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    13801
                  ],
                  "body": {
                    "id": 14135,
                    "nodeType": "Block",
                    "src": "1908:84:74",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 14124,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  14194
                                ],
                                "referencedDeclaration": 14194,
                                "src": "1933:10:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 14125,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1933:12:74",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 14123,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "1918:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 14126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1918:28:74",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14127,
                        "nodeType": "ExpressionStatement",
                        "src": "1918:28:74"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14129,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14117,
                              "src": "1962:2:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14130,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14119,
                              "src": "1966:7:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 14131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1975:2:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 14132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1979:5:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 14128,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12364,
                            "src": "1956:5:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 14133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1956:29:74",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14134,
                        "nodeType": "ExpressionStatement",
                        "src": "1956:29:74"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14115,
                    "nodeType": "StructuredDocumentation",
                    "src": "1751:83:74",
                    "text": "@inheritdoc IERC721Mintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "40c10f19",
                  "id": 14136,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14121,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1899:8:74"
                  },
                  "parameters": {
                    "id": 14120,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14117,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 14136,
                        "src": "1853:10:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14116,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1853:7:74",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14119,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 14136,
                        "src": "1865:15:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14118,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1865:7:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1852:29:74"
                  },
                  "returnParameters": {
                    "id": 14122,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1908:0:74"
                  },
                  "scope": 14217,
                  "src": "1839:153:74",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    13810
                  ],
                  "body": {
                    "id": 14156,
                    "nodeType": "Block",
                    "src": "2172:79:74",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 14147,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  14194
                                ],
                                "referencedDeclaration": 14194,
                                "src": "2197:10:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 14148,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2197:12:74",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 14146,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "2182:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 14149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2182:28:74",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14150,
                        "nodeType": "ExpressionStatement",
                        "src": "2182:28:74"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14152,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14139,
                              "src": "2231:2:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14153,
                              "name": "tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14142,
                              "src": "2235:8:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            ],
                            "id": 14151,
                            "name": "_batchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12426,
                            "src": "2220:10:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory)"
                            }
                          },
                          "id": 14154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2220:24:74",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14155,
                        "nodeType": "ExpressionStatement",
                        "src": "2220:24:74"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14137,
                    "nodeType": "StructuredDocumentation",
                    "src": "1998:83:74",
                    "text": "@inheritdoc IERC721Mintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "4684d7e9",
                  "id": 14157,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14144,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2163:8:74"
                  },
                  "parameters": {
                    "id": 14143,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14139,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 14157,
                        "src": "2105:10:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14138,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2105:7:74",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14142,
                        "mutability": "mutable",
                        "name": "tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 14157,
                        "src": "2117:27:74",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 14140,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2117:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14141,
                          "nodeType": "ArrayTypeName",
                          "src": "2117:9:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2104:41:74"
                  },
                  "returnParameters": {
                    "id": 14145,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2172:0:74"
                  },
                  "scope": 14217,
                  "src": "2086:165:74",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    13820
                  ],
                  "body": {
                    "id": 14180,
                    "nodeType": "Block",
                    "src": "2469:85:74",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 14169,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  14194
                                ],
                                "referencedDeclaration": 14194,
                                "src": "2494:10:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 14170,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2494:12:74",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 14168,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "2479:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 14171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2479:28:74",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14172,
                        "nodeType": "ExpressionStatement",
                        "src": "2479:28:74"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14174,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14160,
                              "src": "2523:2:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14175,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14162,
                              "src": "2527:7:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 14176,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14164,
                              "src": "2536:4:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 14177,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2542:4:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 14173,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12364,
                            "src": "2517:5:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 14178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2517:30:74",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14179,
                        "nodeType": "ExpressionStatement",
                        "src": "2517:30:74"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14158,
                    "nodeType": "StructuredDocumentation",
                    "src": "2257:83:74",
                    "text": "@inheritdoc IERC721Mintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "8832e6e3",
                  "id": 14181,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14166,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2460:8:74"
                  },
                  "parameters": {
                    "id": 14165,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14160,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 14181,
                        "src": "2372:10:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14159,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2372:7:74",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14162,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 14181,
                        "src": "2392:15:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14161,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2392:7:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14164,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 14181,
                        "src": "2417:19:74",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14163,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2417:5:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2362:80:74"
                  },
                  "returnParameters": {
                    "id": 14167,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2469:0:74"
                  },
                  "scope": 14217,
                  "src": "2345:209:74",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    312,
                    15126
                  ],
                  "body": {
                    "id": 14193,
                    "nodeType": "Block",
                    "src": "2811:61:74",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 14189,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "2828:24:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 14190,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgSender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15126,
                            "src": "2828:35:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 14191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2828:37:74",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 14188,
                        "id": 14192,
                        "nodeType": "Return",
                        "src": "2821:44:74"
                      }
                    ]
                  },
                  "id": 14194,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14185,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 14183,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "2742:15:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 14184,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "2759:24:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "2733:51:74"
                  },
                  "parameters": {
                    "id": 14182,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2708:2:74"
                  },
                  "returnParameters": {
                    "id": 14188,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14187,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14194,
                        "src": "2794:15:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 14186,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2794:15:74",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2793:17:74"
                  },
                  "scope": 14217,
                  "src": "2689:183:74",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    321,
                    15171
                  ],
                  "body": {
                    "id": 14206,
                    "nodeType": "Block",
                    "src": "2999:59:74",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 14202,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "3016:24:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 14203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15171,
                            "src": "3016:33:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$",
                              "typeString": "function () view returns (bytes calldata)"
                            }
                          },
                          "id": 14204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3016:35:74",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 14201,
                        "id": 14205,
                        "nodeType": "Return",
                        "src": "3009:42:74"
                      }
                    ]
                  },
                  "id": 14207,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14198,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 14196,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "2929:15:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 14197,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "2946:24:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "2920:51:74"
                  },
                  "parameters": {
                    "id": 14195,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2895:2:74"
                  },
                  "returnParameters": {
                    "id": 14201,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14200,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 14207,
                        "src": "2981:16:74",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14199,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2981:5:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2980:18:74"
                  },
                  "scope": 14217,
                  "src": "2878:180:74",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14215,
                    "nodeType": "Block",
                    "src": "3253:34:74",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 14212,
                            "name": "_msgData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              14207
                            ],
                            "referencedDeclaration": 14207,
                            "src": "3270:8:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () view returns (bytes memory)"
                            }
                          },
                          "id": 14213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3270:10:74",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 14211,
                        "id": 14214,
                        "nodeType": "Return",
                        "src": "3263:17:74"
                      }
                    ]
                  },
                  "functionSelector": "c4c2bfdc",
                  "id": 14216,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14208,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3209:2:74"
                  },
                  "returnParameters": {
                    "id": 14211,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14210,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 14216,
                        "src": "3235:16:74",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14209,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3235:5:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3234:18:74"
                  },
                  "scope": 14217,
                  "src": "3193:94:74",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 14218,
              "src": "875:2414:74"
            }
          ],
          "src": "33:3257:74"
        },
        "id": 74
      },
      "contracts/token/ERC721/mocks/ERC721PausableMock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/mocks/ERC721PausableMock.sol",
          "exportedSymbols": {
            "ERC721BurnableMock": [
              14029
            ],
            "ERC721PausableMock": [
              14445
            ],
            "IERC721": [
              13702
            ],
            "IERC721BatchTransfer": [
              13717
            ],
            "IERC721Burnable": [
              13738
            ],
            "IForwarderRegistry": [
              15006
            ],
            "ManagedIdentity": [
              322
            ],
            "Pausable": [
              301
            ],
            "UsingUniversalForwarding": [
              15172
            ]
          },
          "id": 14446,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14219,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:75"
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "id": 14221,
              "nodeType": "ImportDirective",
              "scope": 14446,
              "sourceUnit": 15007,
              "src": "66:108:75",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14220,
                    "name": "IForwarderRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:18:75",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721.sol",
              "file": "./../interfaces/IERC721.sol",
              "id": 14223,
              "nodeType": "ImportDirective",
              "scope": 14446,
              "sourceUnit": 13703,
              "src": "175:52:75",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14222,
                    "name": "IERC721",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "183:7:75",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol",
              "file": "./../interfaces/IERC721BatchTransfer.sol",
              "id": 14225,
              "nodeType": "ImportDirective",
              "scope": 14446,
              "sourceUnit": 13718,
              "src": "228:78:75",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14224,
                    "name": "IERC721BatchTransfer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "236:20:75",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Burnable.sol",
              "file": "./../interfaces/IERC721Burnable.sol",
              "id": 14227,
              "nodeType": "ImportDirective",
              "scope": 14446,
              "sourceUnit": 13739,
              "src": "307:68:75",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14226,
                    "name": "IERC721Burnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "315:15:75",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 14229,
              "nodeType": "ImportDirective",
              "scope": 14446,
              "sourceUnit": 323,
              "src": "376:102:75",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14228,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "384:15:75",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "id": 14231,
              "nodeType": "ImportDirective",
              "scope": 14446,
              "sourceUnit": 15173,
              "src": "479:120:75",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14230,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "487:24:75",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/mocks/ERC721BurnableMock.sol",
              "file": "./ERC721BurnableMock.sol",
              "id": 14233,
              "nodeType": "ImportDirective",
              "scope": 14446,
              "sourceUnit": 14030,
              "src": "600:60:75",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14232,
                    "name": "ERC721BurnableMock",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "608:18:75",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/lifecycle/Pausable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/lifecycle/Pausable.sol",
              "id": 14235,
              "nodeType": "ImportDirective",
              "scope": 14446,
              "sourceUnit": 302,
              "src": "661:91:75",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14234,
                    "name": "Pausable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "669:8:75",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 14237,
                    "name": "Pausable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 301,
                    "src": "952:8:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Pausable_$301",
                      "typeString": "contract Pausable"
                    }
                  },
                  "id": 14238,
                  "nodeType": "InheritanceSpecifier",
                  "src": "952:8:75"
                },
                {
                  "baseName": {
                    "id": 14239,
                    "name": "ERC721BurnableMock",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14029,
                    "src": "962:18:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC721BurnableMock_$14029",
                      "typeString": "contract ERC721BurnableMock"
                    }
                  },
                  "id": 14240,
                  "nodeType": "InheritanceSpecifier",
                  "src": "962:18:75"
                }
              ],
              "contractDependencies": [
                22,
                125,
                206,
                218,
                301,
                322,
                1253,
                1431,
                12685,
                12910,
                13702,
                13717,
                13738,
                13766,
                13790,
                13821,
                14029,
                14994,
                15031,
                15172
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 14236,
                "nodeType": "StructuredDocumentation",
                "src": "754:166:75",
                "text": " @title ERC721 Pausable Mock.\n @dev The minting functions are usable while paused as it can be useful for contract maintenance such as contract migration."
              },
              "fullyImplemented": true,
              "id": 14445,
              "linearizedBaseContracts": [
                14445,
                14029,
                125,
                1431,
                13821,
                12910,
                12685,
                13717,
                13790,
                13766,
                13702,
                218,
                15172,
                14994,
                15031,
                1253,
                206,
                22,
                301,
                322,
                13738
              ],
              "name": "ERC721PausableMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 14254,
                    "nodeType": "Block",
                    "src": "1159:2:75",
                    "statements": []
                  },
                  "id": 14255,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 14247,
                          "name": "forwarderRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14242,
                          "src": "1092:17:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        {
                          "id": 14248,
                          "name": "universalForwarder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14244,
                          "src": "1111:18:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 14249,
                      "modifierName": {
                        "id": 14246,
                        "name": "ERC721BurnableMock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14029,
                        "src": "1073:18:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC721BurnableMock_$14029_$",
                          "typeString": "type(contract ERC721BurnableMock)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1073:57:75"
                    },
                    {
                      "arguments": [
                        {
                          "hexValue": "66616c7365",
                          "id": 14251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1148:5:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        }
                      ],
                      "id": 14252,
                      "modifierName": {
                        "id": 14250,
                        "name": "Pausable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 301,
                        "src": "1139:8:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Pausable_$301_$",
                          "typeString": "type(contract Pausable)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1139:15:75"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14245,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14242,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 14255,
                        "src": "999:36:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 14241,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15006,
                          "src": "999:18:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14244,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 14255,
                        "src": "1037:26:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14243,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1037:7:75",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "998:66:75"
                  },
                  "returnParameters": {
                    "id": 14253,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1159:0:75"
                  },
                  "scope": 14445,
                  "src": "987:174:75",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14267,
                    "nodeType": "Block",
                    "src": "1392:66:75",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 14260,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  14431
                                ],
                                "referencedDeclaration": 14431,
                                "src": "1420:10:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 14261,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1420:12:75",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 14259,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "1402:17:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 14262,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1402:31:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14263,
                        "nodeType": "ExpressionStatement",
                        "src": "1402:31:75"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 14264,
                            "name": "_pause",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 283,
                            "src": "1443:6:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 14265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1443:8:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14266,
                        "nodeType": "ExpressionStatement",
                        "src": "1443:8:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14256,
                    "nodeType": "StructuredDocumentation",
                    "src": "1296:57:75",
                    "text": "@dev Reverts if the sender is not the contract owner."
                  },
                  "functionSelector": "8456cb59",
                  "id": 14268,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pause",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14257,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1372:2:75"
                  },
                  "returnParameters": {
                    "id": 14258,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1392:0:75"
                  },
                  "scope": 14445,
                  "src": "1358:100:75",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 14280,
                    "nodeType": "Block",
                    "src": "1562:68:75",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 14273,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  14431
                                ],
                                "referencedDeclaration": 14431,
                                "src": "1590:10:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 14274,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1590:12:75",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 14272,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "1572:17:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 14275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1572:31:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14276,
                        "nodeType": "ExpressionStatement",
                        "src": "1572:31:75"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 14277,
                            "name": "_unpause",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 300,
                            "src": "1613:8:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 14278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1613:10:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14279,
                        "nodeType": "ExpressionStatement",
                        "src": "1613:10:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14269,
                    "nodeType": "StructuredDocumentation",
                    "src": "1464:57:75",
                    "text": "@dev Reverts if the sender is not the contract owner."
                  },
                  "functionSelector": "3f4ba83a",
                  "id": 14281,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "unpause",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14270,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1542:2:75"
                  },
                  "returnParameters": {
                    "id": 14271,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1562:0:75"
                  },
                  "scope": 14445,
                  "src": "1526:104:75",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    12186
                  ],
                  "body": {
                    "id": 14303,
                    "nodeType": "Block",
                    "src": "1960:83:75",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 14292,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "1970:17:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 14293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1970:19:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14294,
                        "nodeType": "ExpressionStatement",
                        "src": "1970:19:75"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14298,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14284,
                              "src": "2018:4:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14299,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14286,
                              "src": "2024:2:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14300,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14288,
                              "src": "2028:7:75",
                              "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": 14295,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "1999:5:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC721PausableMock_$14445",
                                "typeString": "contract super ERC721PausableMock"
                              }
                            },
                            "id": 14297,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12186,
                            "src": "1999:18:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 14301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1999:37:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14302,
                        "nodeType": "ExpressionStatement",
                        "src": "1999:37:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14282,
                    "nodeType": "StructuredDocumentation",
                    "src": "1765:71:75",
                    "text": "@inheritdoc IERC721\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "23b872dd",
                  "id": 14304,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14290,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1951:8:75"
                  },
                  "parameters": {
                    "id": 14289,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14284,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 14304,
                        "src": "1872:12:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14283,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1872:7:75",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14286,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 14304,
                        "src": "1894:10:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14285,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1894:7:75",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14288,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 14304,
                        "src": "1914:15:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14287,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1914:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1862:73:75"
                  },
                  "returnParameters": {
                    "id": 14291,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1960:0:75"
                  },
                  "scope": 14445,
                  "src": "1841:202:75",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12206
                  ],
                  "body": {
                    "id": 14326,
                    "nodeType": "Block",
                    "src": "2248:87:75",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 14315,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "2258:17:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 14316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2258:19:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14317,
                        "nodeType": "ExpressionStatement",
                        "src": "2258:19:75"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14321,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14307,
                              "src": "2310:4:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14322,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14309,
                              "src": "2316:2:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14323,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14311,
                              "src": "2320:7:75",
                              "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": 14318,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "2287:5:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC721PausableMock_$14445",
                                "typeString": "contract super ERC721PausableMock"
                              }
                            },
                            "id": 14320,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12206,
                            "src": "2287:22:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 14324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2287:41:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14325,
                        "nodeType": "ExpressionStatement",
                        "src": "2287:41:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14305,
                    "nodeType": "StructuredDocumentation",
                    "src": "2049:71:75",
                    "text": "@inheritdoc IERC721\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "42842e0e",
                  "id": 14327,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14313,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2239:8:75"
                  },
                  "parameters": {
                    "id": 14312,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14307,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 14327,
                        "src": "2160:12:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14306,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2160:7:75",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14309,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 14327,
                        "src": "2182:10:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14308,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2182:7:75",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14311,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 14327,
                        "src": "2202:15:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14310,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2202:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2150:73:75"
                  },
                  "returnParameters": {
                    "id": 14314,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2248:0:75"
                  },
                  "scope": 14445,
                  "src": "2125:210:75",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12228
                  ],
                  "body": {
                    "id": 14352,
                    "nodeType": "Block",
                    "src": "2567:93:75",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 14340,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "2577:17:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 14341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2577:19:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14342,
                        "nodeType": "ExpressionStatement",
                        "src": "2577:19:75"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14346,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14330,
                              "src": "2629:4:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14347,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14332,
                              "src": "2635:2:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14348,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14334,
                              "src": "2639:7:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 14349,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14336,
                              "src": "2648:4:75",
                              "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": {
                              "id": 14343,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "2606:5:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC721PausableMock_$14445",
                                "typeString": "contract super ERC721PausableMock"
                              }
                            },
                            "id": 14345,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12228,
                            "src": "2606:22:75",
                            "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": 14350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2606:47:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14351,
                        "nodeType": "ExpressionStatement",
                        "src": "2606:47:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14328,
                    "nodeType": "StructuredDocumentation",
                    "src": "2341:71:75",
                    "text": "@inheritdoc IERC721\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "b88d4fde",
                  "id": 14353,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14338,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2558:8:75"
                  },
                  "parameters": {
                    "id": 14337,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14330,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 14353,
                        "src": "2452:12:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14329,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2452:7:75",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14332,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 14353,
                        "src": "2474:10:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14331,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2474:7:75",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14334,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 14353,
                        "src": "2494:15:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14333,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2494:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14336,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 14353,
                        "src": "2519:17:75",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14335,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2519:5:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2442:100:75"
                  },
                  "returnParameters": {
                    "id": 14339,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2567:0:75"
                  },
                  "scope": 14445,
                  "src": "2417:243:75",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12310
                  ],
                  "body": {
                    "id": 14376,
                    "nodeType": "Block",
                    "src": "3018:89:75",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 14365,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "3028:17:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 14366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3028:19:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14367,
                        "nodeType": "ExpressionStatement",
                        "src": "3028:19:75"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14371,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14356,
                              "src": "3081:4:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14372,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14358,
                              "src": "3087:2:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14373,
                              "name": "tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14361,
                              "src": "3091:8:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "expression": {
                              "id": 14368,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "3057:5:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC721PausableMock_$14445",
                                "typeString": "contract super ERC721PausableMock"
                              }
                            },
                            "id": 14370,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "batchTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12310,
                            "src": "3057:23:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory)"
                            }
                          },
                          "id": 14374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3057:43:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14375,
                        "nodeType": "ExpressionStatement",
                        "src": "3057:43:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14354,
                    "nodeType": "StructuredDocumentation",
                    "src": "2795:84:75",
                    "text": "@inheritdoc IERC721BatchTransfer\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "f3993d11",
                  "id": 14377,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14363,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3009:8:75"
                  },
                  "parameters": {
                    "id": 14362,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14356,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 14377,
                        "src": "2920:12:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14355,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2920:7:75",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14358,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 14377,
                        "src": "2942:10:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14357,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2942:7:75",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14361,
                        "mutability": "mutable",
                        "name": "tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 14377,
                        "src": "2962:25:75",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 14359,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2962:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14360,
                          "nodeType": "ArrayTypeName",
                          "src": "2962:9:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2910:83:75"
                  },
                  "returnParameters": {
                    "id": 14364,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3018:0:75"
                  },
                  "scope": 14445,
                  "src": "2884:223:75",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12770
                  ],
                  "body": {
                    "id": 14396,
                    "nodeType": "Block",
                    "src": "3399:75:75",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 14386,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "3409:17:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 14387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3409:19:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14388,
                        "nodeType": "ExpressionStatement",
                        "src": "3409:19:75"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14392,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14380,
                              "src": "3453:4:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14393,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14382,
                              "src": "3459:7:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 14389,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "3438:5:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC721PausableMock_$14445",
                                "typeString": "contract super ERC721PausableMock"
                              }
                            },
                            "id": 14391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burnFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12770,
                            "src": "3438:14:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 14394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3438:29:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14395,
                        "nodeType": "ExpressionStatement",
                        "src": "3438:29:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14378,
                    "nodeType": "StructuredDocumentation",
                    "src": "3242:79:75",
                    "text": "@inheritdoc IERC721Burnable\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "79cc6790",
                  "id": 14397,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14384,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3390:8:75"
                  },
                  "parameters": {
                    "id": 14383,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14380,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 14397,
                        "src": "3344:12:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14379,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3344:7:75",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14382,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 14397,
                        "src": "3358:15:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14381,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3358:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3343:31:75"
                  },
                  "returnParameters": {
                    "id": 14385,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3399:0:75"
                  },
                  "scope": 14445,
                  "src": "3326:148:75",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12842
                  ],
                  "body": {
                    "id": 14417,
                    "nodeType": "Block",
                    "src": "3652:81:75",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 14407,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "3662:17:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 14408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3662:19:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14409,
                        "nodeType": "ExpressionStatement",
                        "src": "3662:19:75"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14413,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14400,
                              "src": "3711:4:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14414,
                              "name": "tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14403,
                              "src": "3717:8:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "expression": {
                              "id": 14410,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "3691:5:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC721PausableMock_$14445",
                                "typeString": "contract super ERC721PausableMock"
                              }
                            },
                            "id": 14412,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "batchBurnFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12842,
                            "src": "3691:19:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory)"
                            }
                          },
                          "id": 14415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3691:35:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14416,
                        "nodeType": "ExpressionStatement",
                        "src": "3691:35:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14398,
                    "nodeType": "StructuredDocumentation",
                    "src": "3480:79:75",
                    "text": "@inheritdoc IERC721Burnable\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "f2472965",
                  "id": 14418,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14405,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3643:8:75"
                  },
                  "parameters": {
                    "id": 14404,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14400,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 14418,
                        "src": "3587:12:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14399,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3587:7:75",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14403,
                        "mutability": "mutable",
                        "name": "tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 14418,
                        "src": "3601:25:75",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 14401,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3601:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14402,
                          "nodeType": "ArrayTypeName",
                          "src": "3601:9:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3586:41:75"
                  },
                  "returnParameters": {
                    "id": 14406,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3652:0:75"
                  },
                  "scope": 14445,
                  "src": "3564:169:75",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    312,
                    14006
                  ],
                  "body": {
                    "id": 14430,
                    "nodeType": "Block",
                    "src": "3984:61:75",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 14426,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "4001:24:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 14427,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgSender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15126,
                            "src": "4001:35:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 14428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4001:37:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 14425,
                        "id": 14429,
                        "nodeType": "Return",
                        "src": "3994:44:75"
                      }
                    ]
                  },
                  "id": 14431,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14422,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 14420,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "3921:15:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 14421,
                        "name": "ERC721BurnableMock",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 14029,
                        "src": "3938:18:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC721BurnableMock_$14029",
                          "typeString": "contract ERC721BurnableMock"
                        }
                      }
                    ],
                    "src": "3912:45:75"
                  },
                  "parameters": {
                    "id": 14419,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3887:2:75"
                  },
                  "returnParameters": {
                    "id": 14425,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14424,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14431,
                        "src": "3967:15:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 14423,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3967:15:75",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3966:17:75"
                  },
                  "scope": 14445,
                  "src": "3868:177:75",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    321,
                    14019
                  ],
                  "body": {
                    "id": 14443,
                    "nodeType": "Block",
                    "src": "4166:59:75",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 14439,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "4183:24:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 14440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15171,
                            "src": "4183:33:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$",
                              "typeString": "function () view returns (bytes calldata)"
                            }
                          },
                          "id": 14441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4183:35:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 14438,
                        "id": 14442,
                        "nodeType": "Return",
                        "src": "4176:42:75"
                      }
                    ]
                  },
                  "id": 14444,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14435,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 14433,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "4102:15:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 14434,
                        "name": "ERC721BurnableMock",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 14029,
                        "src": "4119:18:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC721BurnableMock_$14029",
                          "typeString": "contract ERC721BurnableMock"
                        }
                      }
                    ],
                    "src": "4093:45:75"
                  },
                  "parameters": {
                    "id": 14432,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4068:2:75"
                  },
                  "returnParameters": {
                    "id": 14438,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14437,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 14444,
                        "src": "4148:16:75",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14436,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4148:5:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4147:18:75"
                  },
                  "scope": 14445,
                  "src": "4051:174:75",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 14446,
              "src": "921:3306:75"
            }
          ],
          "src": "33:4195:75"
        },
        "id": 75
      },
      "contracts/token/ERC721/mocks/ERC721ReceiverMock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/mocks/ERC721ReceiverMock.sol",
          "exportedSymbols": {
            "ERC721Receiver": [
              12955
            ],
            "ERC721ReceiverMock": [
              14530
            ],
            "IERC721Receiver": [
              13839
            ]
          },
          "id": 14531,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14447,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:76"
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Receiver.sol",
              "file": "./../interfaces/IERC721Receiver.sol",
              "id": 14449,
              "nodeType": "ImportDirective",
              "scope": 14531,
              "sourceUnit": 13840,
              "src": "66:68:76",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14448,
                    "name": "IERC721Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:15:76",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/ERC721Receiver.sol",
              "file": "./../ERC721Receiver.sol",
              "id": 14451,
              "nodeType": "ImportDirective",
              "scope": 14531,
              "sourceUnit": 12956,
              "src": "135:55:76",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14450,
                    "name": "ERC721Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "143:14:76",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 14453,
                    "name": "ERC721Receiver",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12955,
                    "src": "263:14:76",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC721Receiver_$12955",
                      "typeString": "contract ERC721Receiver"
                    }
                  },
                  "id": 14454,
                  "nodeType": "InheritanceSpecifier",
                  "src": "263:14:76"
                }
              ],
              "contractDependencies": [
                218,
                12955,
                13839
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 14452,
                "nodeType": "StructuredDocumentation",
                "src": "192:39:76",
                "text": " @title ERC721 Receiver Mock."
              },
              "fullyImplemented": true,
              "id": 14530,
              "linearizedBaseContracts": [
                14530,
                12955,
                13839,
                218
              ],
              "name": "ERC721ReceiverMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 14466,
                  "name": "Received",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14465,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14456,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 14466,
                        "src": "299:16:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14455,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "299:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14458,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 14466,
                        "src": "317:12:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14457,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "317:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14460,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 14466,
                        "src": "331:15:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14459,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "331:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14462,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 14466,
                        "src": "348:10:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14461,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "348:5:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14464,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "gas",
                        "nodeType": "VariableDeclaration",
                        "scope": 14466,
                        "src": "360:11:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14463,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "360:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "298:74:76"
                  },
                  "src": "284:89:76"
                },
                {
                  "constant": false,
                  "id": 14468,
                  "mutability": "immutable",
                  "name": "_accept721",
                  "nodeType": "VariableDeclaration",
                  "scope": 14530,
                  "src": "379:34:76",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14467,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "379:4:76",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14470,
                  "mutability": "immutable",
                  "name": "_tokenAddress721",
                  "nodeType": "VariableDeclaration",
                  "scope": 14530,
                  "src": "419:43:76",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14469,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "419:7:76",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14487,
                    "nodeType": "Block",
                    "src": "536:80:76",
                    "statements": [
                      {
                        "expression": {
                          "id": 14481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14479,
                            "name": "_accept721",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14468,
                            "src": "546:10:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14480,
                            "name": "accept721",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14472,
                            "src": "559:9:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "546:22:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14482,
                        "nodeType": "ExpressionStatement",
                        "src": "546:22:76"
                      },
                      {
                        "expression": {
                          "id": 14485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14483,
                            "name": "_tokenAddress721",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14470,
                            "src": "578:16:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14484,
                            "name": "tokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14474,
                            "src": "597:12:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "578:31:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 14486,
                        "nodeType": "ExpressionStatement",
                        "src": "578:31:76"
                      }
                    ]
                  },
                  "id": 14488,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [],
                      "id": 14477,
                      "modifierName": {
                        "id": 14476,
                        "name": "ERC721Receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12955,
                        "src": "519:14:76",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC721Receiver_$12955_$",
                          "typeString": "type(contract ERC721Receiver)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "519:16:76"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14475,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14472,
                        "mutability": "mutable",
                        "name": "accept721",
                        "nodeType": "VariableDeclaration",
                        "scope": 14488,
                        "src": "481:14:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 14471,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "481:4:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14474,
                        "mutability": "mutable",
                        "name": "tokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 14488,
                        "src": "497:20:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14473,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "497:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "480:38:76"
                  },
                  "returnParameters": {
                    "id": 14478,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "536:0:76"
                  },
                  "scope": 14530,
                  "src": "469:147:76",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13838
                  ],
                  "body": {
                    "id": 14528,
                    "nodeType": "Block",
                    "src": "1033:283:76",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 14507,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 14504,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1051:3:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 14505,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "1051:10:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 14506,
                                "name": "_tokenAddress721",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14470,
                                "src": "1065:16:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1051:30:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524337323152656365697665723a2077726f6e6720746f6b656e",
                              "id": 14508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1083:29:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_bc509130070fb720f2adf641687810e22627bb0ac51bcb233ee178b6484acb1b",
                                "typeString": "literal_string \"ERC721Receiver: wrong token\""
                              },
                              "value": "ERC721Receiver: wrong token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_bc509130070fb720f2adf641687810e22627bb0ac51bcb233ee178b6484acb1b",
                                "typeString": "literal_string \"ERC721Receiver: wrong token\""
                              }
                            ],
                            "id": 14503,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1043:7:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 14509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1043:70:76",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14510,
                        "nodeType": "ExpressionStatement",
                        "src": "1043:70:76"
                      },
                      {
                        "condition": {
                          "id": 14511,
                          "name": "_accept721",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14468,
                          "src": "1127:10:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 14526,
                          "nodeType": "Block",
                          "src": "1262:48:76",
                          "statements": [
                            {
                              "expression": {
                                "id": 14524,
                                "name": "_ERC721_REJECTED",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12930,
                                "src": "1283:16:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "functionReturnParameters": 14502,
                              "id": 14525,
                              "nodeType": "Return",
                              "src": "1276:23:76"
                            }
                          ]
                        },
                        "id": 14527,
                        "nodeType": "IfStatement",
                        "src": "1123:187:76",
                        "trueBody": {
                          "id": 14523,
                          "nodeType": "Block",
                          "src": "1139:117:76",
                          "statements": [
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 14513,
                                    "name": "operator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14491,
                                    "src": "1167:8:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 14514,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14493,
                                    "src": "1177:4:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 14515,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14495,
                                    "src": "1183:7:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 14516,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14497,
                                    "src": "1192:4:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 14517,
                                      "name": "gasleft",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -7,
                                      "src": "1198:7:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                        "typeString": "function () view returns (uint256)"
                                      }
                                    },
                                    "id": 14518,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1198:9:76",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "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"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 14512,
                                  "name": "Received",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14466,
                                  "src": "1158:8:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256,bytes memory,uint256)"
                                  }
                                },
                                "id": 14519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1158:50:76",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14520,
                              "nodeType": "EmitStatement",
                              "src": "1153:55:76"
                            },
                            {
                              "expression": {
                                "id": 14521,
                                "name": "_ERC721_RECEIVED",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12927,
                                "src": "1229:16:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "functionReturnParameters": 14502,
                              "id": 14522,
                              "nodeType": "Return",
                              "src": "1222:23:76"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14489,
                    "nodeType": "StructuredDocumentation",
                    "src": "751:104:76",
                    "text": "@inheritdoc IERC721Receiver\n @dev reverts if the sender is not the supported ERC721 contract."
                  },
                  "functionSelector": "150b7a02",
                  "id": 14529,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC721Received",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14499,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1007:8:76"
                  },
                  "parameters": {
                    "id": 14498,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14491,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 14529,
                        "src": "895:16:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14490,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "895:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14493,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 14529,
                        "src": "921:12:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14492,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "921:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14495,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 14529,
                        "src": "943:15:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14494,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "943:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14497,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 14529,
                        "src": "968:17:76",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14496,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "968:5:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "885:106:76"
                  },
                  "returnParameters": {
                    "id": 14502,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14501,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14529,
                        "src": "1025:6:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 14500,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1025:6:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1024:8:76"
                  },
                  "scope": 14530,
                  "src": "860:456:76",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 14531,
              "src": "232:1086:76"
            }
          ],
          "src": "33:1286:76"
        },
        "id": 76
      },
      "contracts/token/ERC721/mocks/ERC721SimpleMock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/mocks/ERC721SimpleMock.sol",
          "exportedSymbols": {
            "ERC721Simple": [
              13616
            ],
            "ERC721SimpleMock": [
              14640
            ],
            "IForwarderRegistry": [
              15006
            ],
            "ManagedIdentity": [
              322
            ],
            "MinterRole": [
              125
            ],
            "Recoverable": [
              1253
            ],
            "UsingUniversalForwarding": [
              15172
            ]
          },
          "id": 14641,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14532,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:77"
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "id": 14534,
              "nodeType": "ImportDirective",
              "scope": 14641,
              "sourceUnit": 15007,
              "src": "66:108:77",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14533,
                    "name": "IForwarderRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:18:77",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 14536,
              "nodeType": "ImportDirective",
              "scope": 14641,
              "sourceUnit": 323,
              "src": "175:102:77",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14535,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "183:15:77",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "id": 14538,
              "nodeType": "ImportDirective",
              "scope": 14641,
              "sourceUnit": 1265,
              "src": "278:93:77",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14537,
                    "name": "Recoverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "286:11:77",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "id": 14540,
              "nodeType": "ImportDirective",
              "scope": 14641,
              "sourceUnit": 15173,
              "src": "372:120:77",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14539,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "380:24:77",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "id": 14542,
              "nodeType": "ImportDirective",
              "scope": 14641,
              "sourceUnit": 126,
              "src": "493:92:77",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14541,
                    "name": "MinterRole",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "501:10:77",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/ERC721Simple.sol",
              "file": "./../ERC721Simple.sol",
              "id": 14544,
              "nodeType": "ImportDirective",
              "scope": 14641,
              "sourceUnit": 13617,
              "src": "586:51:77",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14543,
                    "name": "ERC721Simple",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "594:12:77",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 14546,
                    "name": "Recoverable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1253,
                    "src": "699:11:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Recoverable_$1253",
                      "typeString": "contract Recoverable"
                    }
                  },
                  "id": 14547,
                  "nodeType": "InheritanceSpecifier",
                  "src": "699:11:77"
                },
                {
                  "baseName": {
                    "id": 14548,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15172,
                    "src": "712:24:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                      "typeString": "contract UsingUniversalForwarding"
                    }
                  },
                  "id": 14549,
                  "nodeType": "InheritanceSpecifier",
                  "src": "712:24:77"
                },
                {
                  "baseName": {
                    "id": 14550,
                    "name": "ERC721Simple",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13616,
                    "src": "738:12:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC721Simple_$13616",
                      "typeString": "contract ERC721Simple"
                    }
                  },
                  "id": 14551,
                  "nodeType": "InheritanceSpecifier",
                  "src": "738:12:77"
                },
                {
                  "baseName": {
                    "id": 14552,
                    "name": "MinterRole",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 125,
                    "src": "752:10:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MinterRole_$125",
                      "typeString": "contract MinterRole"
                    }
                  },
                  "id": 14553,
                  "nodeType": "InheritanceSpecifier",
                  "src": "752:10:77"
                }
              ],
              "contractDependencies": [
                22,
                125,
                206,
                218,
                322,
                1253,
                13616,
                13702,
                13766,
                14994,
                15031,
                15172
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 14545,
                "nodeType": "StructuredDocumentation",
                "src": "639:30:77",
                "text": " @title ERC721 Mock."
              },
              "fullyImplemented": true,
              "id": 14640,
              "linearizedBaseContracts": [
                14640,
                125,
                13616,
                13766,
                13702,
                218,
                15172,
                14994,
                15031,
                1253,
                206,
                22,
                322
              ],
              "name": "ERC721SimpleMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 14568,
                    "nodeType": "Block",
                    "src": "954:2:77",
                    "statements": []
                  },
                  "id": 14569,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 14560,
                          "name": "forwarderRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14555,
                          "src": "880:17:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        {
                          "id": 14561,
                          "name": "universalForwarder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14557,
                          "src": "899:18:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 14562,
                      "modifierName": {
                        "id": 14559,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15172,
                        "src": "855:24:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                          "typeString": "type(contract UsingUniversalForwarding)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "855:63:77"
                    },
                    {
                      "arguments": [
                        {
                          "expression": {
                            "id": 14564,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "938:3:77",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 14565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "938:10:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "id": 14566,
                      "modifierName": {
                        "id": 14563,
                        "name": "MinterRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 125,
                        "src": "927:10:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MinterRole_$125_$",
                          "typeString": "type(contract MinterRole)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "927:22:77"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14558,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14555,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 14569,
                        "src": "781:36:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 14554,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15006,
                          "src": "781:18:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14557,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 14569,
                        "src": "819:26:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14556,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "819:7:77",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "780:66:77"
                  },
                  "returnParameters": {
                    "id": 14567,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "954:0:77"
                  },
                  "scope": 14640,
                  "src": "769:187:77",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14587,
                    "nodeType": "Block",
                    "src": "1521:73:77",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 14578,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  14617
                                ],
                                "referencedDeclaration": 14617,
                                "src": "1546:10:77",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 14579,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1546:12:77",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 14577,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "1531:14:77",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 14580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1531:28:77",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14581,
                        "nodeType": "ExpressionStatement",
                        "src": "1531:28:77"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14583,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14572,
                              "src": "1575:2:77",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14584,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14574,
                              "src": "1579:7:77",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14582,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13545,
                            "src": "1569:5:77",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 14585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1569:18:77",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14586,
                        "nodeType": "ExpressionStatement",
                        "src": "1569:18:77"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14570,
                    "nodeType": "StructuredDocumentation",
                    "src": "1091:373:77",
                    "text": " Unsafely mints a token.\n @dev Reverts if the sender is not a minter.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if `tokenId` has already been minted.\n @dev Emits an {IERC721-Transfer} event from the zero address.\n @param to Address of the new token owner.\n @param tokenId Identifier of the token to mint."
                  },
                  "functionSelector": "40c10f19",
                  "id": 14588,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14575,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14572,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 14588,
                        "src": "1483:10:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14571,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1483:7:77",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14574,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 14588,
                        "src": "1495:15:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14573,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1495:7:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1482:29:77"
                  },
                  "returnParameters": {
                    "id": 14576,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1521:0:77"
                  },
                  "scope": 14640,
                  "src": "1469:125:77",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 14603,
                    "nodeType": "Block",
                    "src": "1900:69:77",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 14595,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  14617
                                ],
                                "referencedDeclaration": 14617,
                                "src": "1925:10:77",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 14596,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1925:12:77",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 14594,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "1910:14:77",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 14597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1910:28:77",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14598,
                        "nodeType": "ExpressionStatement",
                        "src": "1910:28:77"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14600,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14591,
                              "src": "1954:7:77",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14599,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13593,
                            "src": "1948:5:77",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 14601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1948:14:77",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14602,
                        "nodeType": "ExpressionStatement",
                        "src": "1948:14:77"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14589,
                    "nodeType": "StructuredDocumentation",
                    "src": "1600:255:77",
                    "text": " Burns a token.\n @dev Reverts if the sender is not a minter.\n @dev Reverts if `tokenId` does not exist.\n @dev Emits an {IERC721-Transfer} event to the zero address.\n @param tokenId Identifier of the token to burn."
                  },
                  "functionSelector": "42966c68",
                  "id": 14604,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14592,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14591,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 14604,
                        "src": "1874:15:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14590,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1874:7:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1873:17:77"
                  },
                  "returnParameters": {
                    "id": 14593,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1900:0:77"
                  },
                  "scope": 14640,
                  "src": "1860:109:77",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    312,
                    15126
                  ],
                  "body": {
                    "id": 14616,
                    "nodeType": "Block",
                    "src": "2226:61:77",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 14612,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "2243:24:77",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 14613,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgSender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15126,
                            "src": "2243:35:77",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 14614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2243:37:77",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 14611,
                        "id": 14615,
                        "nodeType": "Return",
                        "src": "2236:44:77"
                      }
                    ]
                  },
                  "id": 14617,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14608,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 14606,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "2157:15:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 14607,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "2174:24:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "2148:51:77"
                  },
                  "parameters": {
                    "id": 14605,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2123:2:77"
                  },
                  "returnParameters": {
                    "id": 14611,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14610,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14617,
                        "src": "2209:15:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 14609,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2209:15:77",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2208:17:77"
                  },
                  "scope": 14640,
                  "src": "2104:183:77",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    321,
                    15171
                  ],
                  "body": {
                    "id": 14629,
                    "nodeType": "Block",
                    "src": "2414:59:77",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 14625,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "2431:24:77",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$15172_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 14626,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15171,
                            "src": "2431:33:77",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$",
                              "typeString": "function () view returns (bytes calldata)"
                            }
                          },
                          "id": 14627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2431:35:77",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 14624,
                        "id": 14628,
                        "nodeType": "Return",
                        "src": "2424:42:77"
                      }
                    ]
                  },
                  "id": 14630,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14621,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 14619,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "2344:15:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 14620,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15172,
                        "src": "2361:24:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$15172",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "2335:51:77"
                  },
                  "parameters": {
                    "id": 14618,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2310:2:77"
                  },
                  "returnParameters": {
                    "id": 14624,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14623,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 14630,
                        "src": "2396:16:77",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14622,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2396:5:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2395:18:77"
                  },
                  "scope": 14640,
                  "src": "2293:180:77",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14638,
                    "nodeType": "Block",
                    "src": "2668:34:77",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 14635,
                            "name": "_msgData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              14630
                            ],
                            "referencedDeclaration": 14630,
                            "src": "2685:8:77",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () view returns (bytes memory)"
                            }
                          },
                          "id": 14636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2685:10:77",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 14634,
                        "id": 14637,
                        "nodeType": "Return",
                        "src": "2678:17:77"
                      }
                    ]
                  },
                  "functionSelector": "c4c2bfdc",
                  "id": 14639,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14631,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2624:2:77"
                  },
                  "returnParameters": {
                    "id": 14634,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14633,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 14639,
                        "src": "2650:16:77",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14632,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2650:5:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2649:18:77"
                  },
                  "scope": 14640,
                  "src": "2608:94:77",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 14641,
              "src": "670:2034:77"
            }
          ],
          "src": "33:2672:77"
        },
        "id": 77
      },
      "contracts/token/common/polygon/interfaces/IPolygonChildToken.sol": {
        "ast": {
          "absolutePath": "contracts/token/common/polygon/interfaces/IPolygonChildToken.sol",
          "exportedSymbols": {
            "IPolygonChildToken": [
              14652
            ]
          },
          "id": 14653,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14642,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:78"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 14643,
                "nodeType": "StructuredDocumentation",
                "src": "66:63:78",
                "text": " @title Child Token interface for Polygon POS portal."
              },
              "fullyImplemented": false,
              "id": 14652,
              "linearizedBaseContracts": [
                14652
              ],
              "name": "IPolygonChildToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 14644,
                    "nodeType": "StructuredDocumentation",
                    "src": "165:284:78",
                    "text": " Receive a deposit from the POS portal.\n @dev Reverts if the sender is not the Child Chain manager.\n @param user Address who receives the deposit.\n @param depositData Extra data for deposit (amount for ERC20, token id for ERC721 etc.) [ABI encoded]"
                  },
                  "functionSelector": "cf2c52cb",
                  "id": 14651,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14649,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14646,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 14651,
                        "src": "471:12:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14645,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "471:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14648,
                        "mutability": "mutable",
                        "name": "depositData",
                        "nodeType": "VariableDeclaration",
                        "scope": 14651,
                        "src": "485:26:78",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14647,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "485:5:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "470:42:78"
                  },
                  "returnParameters": {
                    "id": 14650,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "521:0:78"
                  },
                  "scope": 14652,
                  "src": "454:68:78",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 14653,
              "src": "130:394:78"
            }
          ],
          "src": "33:492:78"
        },
        "id": 78
      },
      "contracts/token/common/polygon/interfaces/IPolygonTokenPredicate.sol": {
        "ast": {
          "absolutePath": "contracts/token/common/polygon/interfaces/IPolygonTokenPredicate.sol",
          "exportedSymbols": {
            "IPolygonTokenPredicate": [
              14678
            ]
          },
          "id": 14679,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14654,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:79"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 14655,
                "nodeType": "StructuredDocumentation",
                "src": "66:67:79",
                "text": " @title Token Predicate interface for Polygon POS portal."
              },
              "fullyImplemented": false,
              "id": 14678,
              "linearizedBaseContracts": [
                14678
              ],
              "name": "IPolygonTokenPredicate",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 14656,
                    "nodeType": "StructuredDocumentation",
                    "src": "173:359:79",
                    "text": " Deposit tokens into POS portal.\n @param depositor Address who wants to deposit tokens\n @param depositReceiver Address (address) who wants to receive tokens on side chain\n @param rootToken Token which gets deposited\n @param depositData Extra data for deposit (amount for ERC20, token id for ERC721 etc.) [ABI encoded]"
                  },
                  "functionSelector": "e375b64e",
                  "id": 14667,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "lockTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14665,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14658,
                        "mutability": "mutable",
                        "name": "depositor",
                        "nodeType": "VariableDeclaration",
                        "scope": 14667,
                        "src": "566:17:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14657,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "566:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14660,
                        "mutability": "mutable",
                        "name": "depositReceiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 14667,
                        "src": "593:23:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14659,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "593:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14662,
                        "mutability": "mutable",
                        "name": "rootToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 14667,
                        "src": "626:17:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14661,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "626:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14664,
                        "mutability": "mutable",
                        "name": "depositData",
                        "nodeType": "VariableDeclaration",
                        "scope": 14667,
                        "src": "653:26:79",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14663,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "653:5:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "556:129:79"
                  },
                  "returnParameters": {
                    "id": 14666,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "694:0:79"
                  },
                  "scope": 14678,
                  "src": "537:158:79",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 14668,
                    "nodeType": "StructuredDocumentation",
                    "src": "701:432:79",
                    "text": " Validates and processes exit while withdraw process\n @dev Validates exit log emitted on sidechain. Reverts if validation fails.\n @dev Processes withdraw based on custom logic. Example: transfer ERC20/ERC721, mint ERC721 if mintable withdraw\n @param sender Address\n @param rootToken Token which gets withdrawn\n @param logRLPList Valid sidechain log for data like amount, token id etc."
                  },
                  "functionSelector": "8274664f",
                  "id": 14677,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "exitTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14675,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14670,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 14677,
                        "src": "1167:14:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14669,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1167:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14672,
                        "mutability": "mutable",
                        "name": "rootToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 14677,
                        "src": "1191:17:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14671,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1191:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14674,
                        "mutability": "mutable",
                        "name": "logRLPList",
                        "nodeType": "VariableDeclaration",
                        "scope": 14677,
                        "src": "1218:25:79",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14673,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1218:5:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1157:92:79"
                  },
                  "returnParameters": {
                    "id": 14676,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1258:0:79"
                  },
                  "scope": 14678,
                  "src": "1138:121:79",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 14679,
              "src": "134:1127:79"
            }
          ],
          "src": "33:1229:79"
        },
        "id": 79
      },
      "contracts/token/utils/ERC1155VouchersRedeemer.sol": {
        "ast": {
          "absolutePath": "contracts/token/utils/ERC1155VouchersRedeemer.sol",
          "exportedSymbols": {
            "ERC1155TokenReceiver": [
              3415
            ],
            "ERC1155VouchersRedeemer": [
              14947
            ],
            "ERC20Wrapper": [
              463
            ],
            "IERC1155InventoryBurnable": [
              3659
            ],
            "IERC1155TokenReceiver": [
              3788
            ],
            "IWrappedERC20": [
              493
            ],
            "Ownable": [
              206
            ],
            "Recoverable": [
              1253
            ]
          },
          "id": 14948,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14680,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:80"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol",
              "id": 14683,
              "nodeType": "ImportDirective",
              "scope": 14948,
              "sourceUnit": 494,
              "src": "66:110:80",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14681,
                    "name": "IWrappedERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:13:80",
                    "typeDescriptions": {}
                  }
                },
                {
                  "foreign": {
                    "id": 14682,
                    "name": "ERC20Wrapper",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "89:12:80",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol",
              "file": "./../ERC1155/interfaces/IERC1155TokenReceiver.sol",
              "id": 14685,
              "nodeType": "ImportDirective",
              "scope": 14948,
              "sourceUnit": 3789,
              "src": "177:88:80",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14684,
                    "name": "IERC1155TokenReceiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "185:21:80",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryBurnable.sol",
              "file": "./../ERC1155/interfaces/IERC1155InventoryBurnable.sol",
              "id": 14687,
              "nodeType": "ImportDirective",
              "scope": 14948,
              "sourceUnit": 3660,
              "src": "266:96:80",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14686,
                    "name": "IERC1155InventoryBurnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "274:25:80",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol",
              "id": 14689,
              "nodeType": "ImportDirective",
              "scope": 14948,
              "sourceUnit": 207,
              "src": "363:86:80",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14688,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "371:7:80",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "id": 14691,
              "nodeType": "ImportDirective",
              "scope": 14948,
              "sourceUnit": 1265,
              "src": "450:93:80",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14690,
                    "name": "Recoverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "458:11:80",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155TokenReceiver.sol",
              "file": "./../ERC1155/ERC1155TokenReceiver.sol",
              "id": 14693,
              "nodeType": "ImportDirective",
              "scope": 14948,
              "sourceUnit": 3416,
              "src": "544:75:80",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14692,
                    "name": "ERC1155TokenReceiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "552:20:80",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 14695,
                    "name": "ERC1155TokenReceiver",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3415,
                    "src": "924:20:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155TokenReceiver_$3415",
                      "typeString": "contract ERC1155TokenReceiver"
                    }
                  },
                  "id": 14696,
                  "nodeType": "InheritanceSpecifier",
                  "src": "924:20:80"
                },
                {
                  "baseName": {
                    "id": 14697,
                    "name": "Recoverable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1253,
                    "src": "946:11:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Recoverable_$1253",
                      "typeString": "contract Recoverable"
                    }
                  },
                  "id": 14698,
                  "nodeType": "InheritanceSpecifier",
                  "src": "946:11:80"
                }
              ],
              "contractDependencies": [
                22,
                206,
                218,
                322,
                1253,
                3415,
                3788
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 14694,
                "nodeType": "StructuredDocumentation",
                "src": "621:257:80",
                "text": " @title ERC1155 Vouchers Redeemer.\n An ERC1155TokenReceiver contract used to redeem (burn) vouchers for their representative value in a given ERC20 token.\n @dev The function `_voucherValue(uint256)` needs to be implemented by a child contract."
              },
              "fullyImplemented": false,
              "id": 14947,
              "linearizedBaseContracts": [
                14947,
                1253,
                206,
                22,
                322,
                3415,
                3788,
                218
              ],
              "name": "ERC1155VouchersRedeemer",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 14701,
                  "libraryName": {
                    "id": 14699,
                    "name": "ERC20Wrapper",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 463,
                    "src": "970:12:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Wrapper_$463",
                      "typeString": "library ERC20Wrapper"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "964:37:80",
                  "typeName": {
                    "id": 14700,
                    "name": "IWrappedERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 493,
                    "src": "987:13:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                      "typeString": "contract IWrappedERC20"
                    }
                  }
                },
                {
                  "constant": false,
                  "functionSelector": "5e262f96",
                  "id": 14703,
                  "mutability": "immutable",
                  "name": "vouchers",
                  "nodeType": "VariableDeclaration",
                  "scope": 14947,
                  "src": "1007:51:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC1155InventoryBurnable_$3659",
                    "typeString": "contract IERC1155InventoryBurnable"
                  },
                  "typeName": {
                    "id": 14702,
                    "name": "IERC1155InventoryBurnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3659,
                    "src": "1007:25:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155InventoryBurnable_$3659",
                      "typeString": "contract IERC1155InventoryBurnable"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "ca297507",
                  "id": 14705,
                  "mutability": "immutable",
                  "name": "deliverable",
                  "nodeType": "VariableDeclaration",
                  "scope": 14947,
                  "src": "1064:42:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                    "typeString": "contract IWrappedERC20"
                  },
                  "typeName": {
                    "id": 14704,
                    "name": "IWrappedERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 493,
                    "src": "1064:13:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                      "typeString": "contract IWrappedERC20"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "420a83e7",
                  "id": 14707,
                  "mutability": "mutable",
                  "name": "tokenHolder",
                  "nodeType": "VariableDeclaration",
                  "scope": 14947,
                  "src": "1112:26:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14706,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1112:7:80",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14733,
                    "nodeType": "Block",
                    "src": "1526:109:80",
                    "statements": [
                      {
                        "expression": {
                          "id": 14723,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14721,
                            "name": "vouchers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14703,
                            "src": "1536:8:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC1155InventoryBurnable_$3659",
                              "typeString": "contract IERC1155InventoryBurnable"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14722,
                            "name": "vouchers_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14710,
                            "src": "1547:9:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC1155InventoryBurnable_$3659",
                              "typeString": "contract IERC1155InventoryBurnable"
                            }
                          },
                          "src": "1536:20:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC1155InventoryBurnable_$3659",
                            "typeString": "contract IERC1155InventoryBurnable"
                          }
                        },
                        "id": 14724,
                        "nodeType": "ExpressionStatement",
                        "src": "1536:20:80"
                      },
                      {
                        "expression": {
                          "id": 14727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14725,
                            "name": "deliverable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14705,
                            "src": "1566:11:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                              "typeString": "contract IWrappedERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14726,
                            "name": "deliverable_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14712,
                            "src": "1580:12:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                              "typeString": "contract IWrappedERC20"
                            }
                          },
                          "src": "1566:26:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                            "typeString": "contract IWrappedERC20"
                          }
                        },
                        "id": 14728,
                        "nodeType": "ExpressionStatement",
                        "src": "1566:26:80"
                      },
                      {
                        "expression": {
                          "id": 14731,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14729,
                            "name": "tokenHolder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14707,
                            "src": "1602:11:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14730,
                            "name": "tokenHolder_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14714,
                            "src": "1616:12:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1602:26:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 14732,
                        "nodeType": "ExpressionStatement",
                        "src": "1602:26:80"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14708,
                    "nodeType": "StructuredDocumentation",
                    "src": "1145:227:80",
                    "text": " Constructor.\n @param vouchers_ the address of the vouchers contract.\n @param deliverable_ the address of the ERC20 token contract.\n @param tokenHolder_ the address of the ERC20 token holder."
                  },
                  "id": 14734,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "expression": {
                            "id": 14717,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1514:3:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 14718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1514:10:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "id": 14719,
                      "modifierName": {
                        "id": 14716,
                        "name": "Ownable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 206,
                        "src": "1506:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Ownable_$206_$",
                          "typeString": "type(contract Ownable)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1506:19:80"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14715,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14710,
                        "mutability": "mutable",
                        "name": "vouchers_",
                        "nodeType": "VariableDeclaration",
                        "scope": 14734,
                        "src": "1398:35:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155InventoryBurnable_$3659",
                          "typeString": "contract IERC1155InventoryBurnable"
                        },
                        "typeName": {
                          "id": 14709,
                          "name": "IERC1155InventoryBurnable",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3659,
                          "src": "1398:25:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC1155InventoryBurnable_$3659",
                            "typeString": "contract IERC1155InventoryBurnable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14712,
                        "mutability": "mutable",
                        "name": "deliverable_",
                        "nodeType": "VariableDeclaration",
                        "scope": 14734,
                        "src": "1443:26:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                          "typeString": "contract IWrappedERC20"
                        },
                        "typeName": {
                          "id": 14711,
                          "name": "IWrappedERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 493,
                          "src": "1443:13:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                            "typeString": "contract IWrappedERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14714,
                        "mutability": "mutable",
                        "name": "tokenHolder_",
                        "nodeType": "VariableDeclaration",
                        "scope": 14734,
                        "src": "1479:20:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14713,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1479:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1388:117:80"
                  },
                  "returnParameters": {
                    "id": 14720,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1526:0:80"
                  },
                  "scope": 14947,
                  "src": "1377:258:80",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    3769
                  ],
                  "body": {
                    "id": 14804,
                    "nodeType": "Block",
                    "src": "2432:428:80",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 14758,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 14752,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "2450:3:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 14753,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "2450:10:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 14756,
                                    "name": "vouchers",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14703,
                                    "src": "2472:8:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155InventoryBurnable_$3659",
                                      "typeString": "contract IERC1155InventoryBurnable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC1155InventoryBurnable_$3659",
                                      "typeString": "contract IERC1155InventoryBurnable"
                                    }
                                  ],
                                  "id": 14755,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2464:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 14754,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2464:7:80",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 14757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2464:17:80",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2450:31:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "52656465656d65723a2077726f6e672073656e646572",
                              "id": 14759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2483:24:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d0defa1faf79a8cb2f84355337f924511b8c23f4993d5f8e2a26dfbbc93bbfd2",
                                "typeString": "literal_string \"Redeemer: wrong sender\""
                              },
                              "value": "Redeemer: wrong sender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d0defa1faf79a8cb2f84355337f924511b8c23f4993d5f8e2a26dfbbc93bbfd2",
                                "typeString": "literal_string \"Redeemer: wrong sender\""
                              }
                            ],
                            "id": 14751,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2442:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 14760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2442:66:80",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14761,
                        "nodeType": "ExpressionStatement",
                        "src": "2442:66:80"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 14767,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "2544:4:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC1155VouchersRedeemer_$14947",
                                    "typeString": "contract ERC1155VouchersRedeemer"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ERC1155VouchersRedeemer_$14947",
                                    "typeString": "contract ERC1155VouchersRedeemer"
                                  }
                                ],
                                "id": 14766,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2536:7:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 14765,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2536:7:80",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 14768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2536:13:80",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14769,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14741,
                              "src": "2551:2:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 14770,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14743,
                              "src": "2555:5:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 14762,
                              "name": "vouchers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14703,
                              "src": "2518:8:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC1155InventoryBurnable_$3659",
                                "typeString": "contract IERC1155InventoryBurnable"
                              }
                            },
                            "id": 14764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burnFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3646,
                            "src": "2518:17:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256) external"
                            }
                          },
                          "id": 14771,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2518:43:80",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14772,
                        "nodeType": "ExpressionStatement",
                        "src": "2518:43:80"
                      },
                      {
                        "assignments": [
                          14774
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14774,
                            "mutability": "mutable",
                            "name": "voucherValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 14804,
                            "src": "2571:20:80",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14773,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2571:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14778,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 14776,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14741,
                              "src": "2608:2:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14775,
                            "name": "_voucherValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14946,
                            "src": "2594:13:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 14777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2594:17:80",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2571:40:80"
                      },
                      {
                        "assignments": [
                          14780
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14780,
                            "mutability": "mutable",
                            "name": "tokenAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 14804,
                            "src": "2621:19:80",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14779,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2621:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14784,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 14781,
                            "name": "voucherValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14774,
                            "src": "2643:12:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 14782,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14743,
                            "src": "2658:5:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2643:20:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2621:42:80"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 14790,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14788,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 14786,
                                  "name": "tokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14780,
                                  "src": "2681:11:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 14787,
                                  "name": "voucherValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14774,
                                  "src": "2695:12:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2681:26:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 14789,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14743,
                                "src": "2711:5:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2681:35:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "52656465656d65723a20616d6f756e74206f766572666c6f77",
                              "id": 14791,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2718:27:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a2cef0b1f68dc51ab5ec1e2f8ac7fa98ae55886f91de213260128c6b159469bf",
                                "typeString": "literal_string \"Redeemer: amount overflow\""
                              },
                              "value": "Redeemer: amount overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a2cef0b1f68dc51ab5ec1e2f8ac7fa98ae55886f91de213260128c6b159469bf",
                                "typeString": "literal_string \"Redeemer: amount overflow\""
                              }
                            ],
                            "id": 14785,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2673:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 14792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2673:73:80",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14793,
                        "nodeType": "ExpressionStatement",
                        "src": "2673:73:80"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14797,
                              "name": "tokenHolder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14707,
                              "src": "2788:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14798,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14739,
                              "src": "2801:4:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14799,
                              "name": "tokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14780,
                              "src": "2807:11:80",
                              "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": 14794,
                              "name": "deliverable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14705,
                              "src": "2756:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              }
                            },
                            "id": 14796,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "wrappedTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 377,
                            "src": "2756:31:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IWrappedERC20_$493_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IWrappedERC20_$493_$",
                              "typeString": "function (contract IWrappedERC20,address,address,uint256)"
                            }
                          },
                          "id": 14800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2756:63:80",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14801,
                        "nodeType": "ExpressionStatement",
                        "src": "2756:63:80"
                      },
                      {
                        "expression": {
                          "id": 14802,
                          "name": "_ERC1155_RECEIVED",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3384,
                          "src": "2836:17:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 14750,
                        "id": 14803,
                        "nodeType": "Return",
                        "src": "2829:24:80"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14735,
                    "nodeType": "StructuredDocumentation",
                    "src": "1641:582:80",
                    "text": " Called for redeeming one type of vouchers.\n @dev Reverts if the sender is not the vouchers contract.\n @dev Reverts if the amount of ERC20 token to deliver overflows.\n @dev Reverts if the token holder does not have enough ERC20 balance.\n @dev Reverts if this contract does not have enough ERC20 allowance from the token holder.\n @dev Emits an {IERC1155-TransferSingle} event for the burning of the voucher(s).\n @dev Emits an {IERC20-Transfer} event for the for the delivery of the ERC20.\n @inheritdoc IERC1155TokenReceiver"
                  },
                  "functionSelector": "f23a6e61",
                  "id": 14805,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14747,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2406:8:80"
                  },
                  "parameters": {
                    "id": 14746,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14737,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14805,
                        "src": "2264:7:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14736,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2264:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14739,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 14805,
                        "src": "2294:12:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14738,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2294:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14741,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 14805,
                        "src": "2316:10:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14740,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2316:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14743,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 14805,
                        "src": "2336:13:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14742,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2336:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14745,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14805,
                        "src": "2359:14:80",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14744,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2359:5:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2254:134:80"
                  },
                  "returnParameters": {
                    "id": 14750,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14749,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14805,
                        "src": "2424:6:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 14748,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2424:6:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2423:8:80"
                  },
                  "scope": 14947,
                  "src": "2228:632:80",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3787
                  ],
                  "body": {
                    "id": 14921,
                    "nodeType": "Block",
                    "src": "3777:769:80",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 14831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 14825,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3795:3:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 14826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "3795:10:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 14829,
                                    "name": "vouchers",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14703,
                                    "src": "3817:8:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155InventoryBurnable_$3659",
                                      "typeString": "contract IERC1155InventoryBurnable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC1155InventoryBurnable_$3659",
                                      "typeString": "contract IERC1155InventoryBurnable"
                                    }
                                  ],
                                  "id": 14828,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3809:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 14827,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3809:7:80",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 14830,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3809:17:80",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3795:31:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "52656465656d65723a2077726f6e672073656e646572",
                              "id": 14832,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3828:24:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d0defa1faf79a8cb2f84355337f924511b8c23f4993d5f8e2a26dfbbc93bbfd2",
                                "typeString": "literal_string \"Redeemer: wrong sender\""
                              },
                              "value": "Redeemer: wrong sender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d0defa1faf79a8cb2f84355337f924511b8c23f4993d5f8e2a26dfbbc93bbfd2",
                                "typeString": "literal_string \"Redeemer: wrong sender\""
                              }
                            ],
                            "id": 14824,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3787:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 14833,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3787:66:80",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14834,
                        "nodeType": "ExpressionStatement",
                        "src": "3787:66:80"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 14840,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3894:4:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC1155VouchersRedeemer_$14947",
                                    "typeString": "contract ERC1155VouchersRedeemer"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ERC1155VouchersRedeemer_$14947",
                                    "typeString": "contract ERC1155VouchersRedeemer"
                                  }
                                ],
                                "id": 14839,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3886:7:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 14838,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3886:7:80",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 14841,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3886:13:80",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14842,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14813,
                              "src": "3901:3:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 14843,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14816,
                              "src": "3906:6:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            ],
                            "expression": {
                              "id": 14835,
                              "name": "vouchers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14703,
                              "src": "3863:8:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC1155InventoryBurnable_$3659",
                                "typeString": "contract IERC1155InventoryBurnable"
                              }
                            },
                            "id": 14837,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "batchBurnFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3658,
                            "src": "3863:22:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory) external"
                            }
                          },
                          "id": 14844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3863:50:80",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14845,
                        "nodeType": "ExpressionStatement",
                        "src": "3863:50:80"
                      },
                      {
                        "assignments": [
                          14847
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14847,
                            "mutability": "mutable",
                            "name": "tokenAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 14921,
                            "src": "3923:19:80",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14846,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3923:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14848,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3923:19:80"
                      },
                      {
                        "body": {
                          "id": 14909,
                          "nodeType": "Block",
                          "src": "3990:437:80",
                          "statements": [
                            {
                              "assignments": [
                                14860
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 14860,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 14909,
                                  "src": "4004:10:80",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 14859,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4004:7:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 14864,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 14861,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14813,
                                  "src": "4017:3:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 14863,
                                "indexExpression": {
                                  "id": 14862,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14850,
                                  "src": "4021:1:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4017:6:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4004:19:80"
                            },
                            {
                              "assignments": [
                                14866
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 14866,
                                  "mutability": "mutable",
                                  "name": "value",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 14909,
                                  "src": "4037:13:80",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 14865,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4037:7:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 14870,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 14867,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14816,
                                  "src": "4053:6:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 14869,
                                "indexExpression": {
                                  "id": 14868,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14850,
                                  "src": "4060:1:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4053:9:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4037:25:80"
                            },
                            {
                              "assignments": [
                                14872
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 14872,
                                  "mutability": "mutable",
                                  "name": "voucherValue",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 14909,
                                  "src": "4076:20:80",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 14871,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4076:7:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 14876,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 14874,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14860,
                                    "src": "4113:2:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 14873,
                                  "name": "_voucherValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14946,
                                  "src": "4099:13:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) view returns (uint256)"
                                  }
                                },
                                "id": 14875,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4099:17:80",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4076:40:80"
                            },
                            {
                              "assignments": [
                                14878
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 14878,
                                  "mutability": "mutable",
                                  "name": "amount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 14909,
                                  "src": "4130:14:80",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 14877,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4130:7:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 14882,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14881,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 14879,
                                  "name": "voucherValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14872,
                                  "src": "4147:12:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 14880,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14866,
                                  "src": "4162:5:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4147:20:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4130:37:80"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 14888,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 14886,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 14884,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14878,
                                        "src": "4189:6:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "id": 14885,
                                        "name": "voucherValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14872,
                                        "src": "4198:12:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4189:21:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 14887,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14866,
                                      "src": "4214:5:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4189:30:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "52656465656d65723a20616d6f756e74206f766572666c6f77",
                                    "id": 14889,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4221:27:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_a2cef0b1f68dc51ab5ec1e2f8ac7fa98ae55886f91de213260128c6b159469bf",
                                      "typeString": "literal_string \"Redeemer: amount overflow\""
                                    },
                                    "value": "Redeemer: amount overflow"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_a2cef0b1f68dc51ab5ec1e2f8ac7fa98ae55886f91de213260128c6b159469bf",
                                      "typeString": "literal_string \"Redeemer: amount overflow\""
                                    }
                                  ],
                                  "id": 14883,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "4181:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 14890,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4181:68:80",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14891,
                              "nodeType": "ExpressionStatement",
                              "src": "4181:68:80"
                            },
                            {
                              "assignments": [
                                14893
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 14893,
                                  "mutability": "mutable",
                                  "name": "newAmount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 14909,
                                  "src": "4263:17:80",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 14892,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4263:7:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 14897,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 14894,
                                  "name": "tokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14847,
                                  "src": "4283:11:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 14895,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14878,
                                  "src": "4297:6:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4283:20:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4263:40:80"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 14901,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 14899,
                                      "name": "newAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14893,
                                      "src": "4325:9:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "id": 14900,
                                      "name": "tokenAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14847,
                                      "src": "4338:11:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4325:24:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "52656465656d65723a20616d6f756e74206f766572666c6f77",
                                    "id": 14902,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4351:27:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_a2cef0b1f68dc51ab5ec1e2f8ac7fa98ae55886f91de213260128c6b159469bf",
                                      "typeString": "literal_string \"Redeemer: amount overflow\""
                                    },
                                    "value": "Redeemer: amount overflow"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_a2cef0b1f68dc51ab5ec1e2f8ac7fa98ae55886f91de213260128c6b159469bf",
                                      "typeString": "literal_string \"Redeemer: amount overflow\""
                                    }
                                  ],
                                  "id": 14898,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "4317:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 14903,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4317:62:80",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14904,
                              "nodeType": "ExpressionStatement",
                              "src": "4317:62:80"
                            },
                            {
                              "expression": {
                                "id": 14907,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14905,
                                  "name": "tokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14847,
                                  "src": "4393:11:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 14906,
                                  "name": "newAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14893,
                                  "src": "4407:9:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4393:23:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14908,
                              "nodeType": "ExpressionStatement",
                              "src": "4393:23:80"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 14852,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14850,
                            "src": "3968:1:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "id": 14853,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14813,
                              "src": "3973:3:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            "id": 14854,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "3973:10:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3968:15:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14910,
                        "initializationExpression": {
                          "assignments": [
                            14850
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 14850,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 14910,
                              "src": "3957:9:80",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 14849,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3957:7:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 14851,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3957:9:80"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 14857,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "3985:3:80",
                            "subExpression": {
                              "id": 14856,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14850,
                              "src": "3987:1:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14858,
                          "nodeType": "ExpressionStatement",
                          "src": "3985:3:80"
                        },
                        "nodeType": "ForStatement",
                        "src": "3952:475:80"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14914,
                              "name": "tokenHolder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14707,
                              "src": "4468:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14915,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14810,
                              "src": "4481:4:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14916,
                              "name": "tokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14847,
                              "src": "4487:11:80",
                              "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": 14911,
                              "name": "deliverable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14705,
                              "src": "4436:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              }
                            },
                            "id": 14913,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "wrappedTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 377,
                            "src": "4436:31:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IWrappedERC20_$493_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IWrappedERC20_$493_$",
                              "typeString": "function (contract IWrappedERC20,address,address,uint256)"
                            }
                          },
                          "id": 14917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4436:63:80",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14918,
                        "nodeType": "ExpressionStatement",
                        "src": "4436:63:80"
                      },
                      {
                        "expression": {
                          "id": 14919,
                          "name": "_ERC1155_BATCH_RECEIVED",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3387,
                          "src": "4516:23:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 14823,
                        "id": 14920,
                        "nodeType": "Return",
                        "src": "4509:30:80"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14806,
                    "nodeType": "StructuredDocumentation",
                    "src": "2866:673:80",
                    "text": " Called for redeeming several types of vouchers.\n @dev Reverts if the sender is not the vouchers contract.\n @dev Reverts if an individual amount of ERC20 token to deliver overflows.\n @dev Reverts if the total amount of ERC20 token to deliver overflows.\n @dev Reverts if the token holder does not have enough ERC20 balance.\n @dev Reverts if this contract does not have enough ERC20 allowance from the token holder.\n @dev Emits an {IERC1155-TransferBatch} event for the burning of the voucher(s).\n @dev Emits an {IERC20-Transfer} event for the for the delivery of the ERC20.\n @inheritdoc IERC1155TokenReceiver"
                  },
                  "functionSelector": "bc197c81",
                  "id": 14922,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14820,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3751:8:80"
                  },
                  "parameters": {
                    "id": 14819,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14808,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14922,
                        "src": "3585:7:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14807,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3585:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14810,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 14922,
                        "src": "3615:12:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14809,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3615:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14813,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 14922,
                        "src": "3637:22:80",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 14811,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3637:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14812,
                          "nodeType": "ArrayTypeName",
                          "src": "3637:9:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14816,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 14922,
                        "src": "3669:25:80",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 14814,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3669:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14815,
                          "nodeType": "ArrayTypeName",
                          "src": "3669:9:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14818,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14922,
                        "src": "3704:14:80",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14817,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3704:5:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3575:158:80"
                  },
                  "returnParameters": {
                    "id": 14823,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14822,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14922,
                        "src": "3769:6:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 14821,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "3769:6:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3768:8:80"
                  },
                  "scope": 14947,
                  "src": "3544:1002:80",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 14937,
                    "nodeType": "Block",
                    "src": "4795:84:80",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 14929,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "4823:10:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 14930,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4823:12:80",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 14928,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "4805:17:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 14931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4805:31:80",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14932,
                        "nodeType": "ExpressionStatement",
                        "src": "4805:31:80"
                      },
                      {
                        "expression": {
                          "id": 14935,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14933,
                            "name": "tokenHolder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14707,
                            "src": "4846:11:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14934,
                            "name": "tokenHolder_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14925,
                            "src": "4860:12:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4846:26:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 14936,
                        "nodeType": "ExpressionStatement",
                        "src": "4846:26:80"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14923,
                    "nodeType": "StructuredDocumentation",
                    "src": "4552:175:80",
                    "text": " Sets the token holder address.\n @dev Reverts if the sender is not the contract owner.\n @param tokenHolder_ the new address for the token holder."
                  },
                  "functionSelector": "f29d2f28",
                  "id": 14938,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setTokenHolder",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14926,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14925,
                        "mutability": "mutable",
                        "name": "tokenHolder_",
                        "nodeType": "VariableDeclaration",
                        "scope": 14938,
                        "src": "4756:20:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14924,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4756:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4755:22:80"
                  },
                  "returnParameters": {
                    "id": 14927,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4795:0:80"
                  },
                  "scope": 14947,
                  "src": "4732:147:80",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 14939,
                    "nodeType": "StructuredDocumentation",
                    "src": "4885:297:80",
                    "text": " Validates the validity of the voucher for a specific redeemer deployment and returns the value of the voucher.\n @dev Reverts if the voucher is not valid for this redeemer.\n @param tokenId the id of the voucher.\n @return the value of the voucher in ERC20 token."
                  },
                  "id": 14946,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_voucherValue",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14942,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14941,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 14946,
                        "src": "5210:15:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14940,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5210:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5209:17:80"
                  },
                  "returnParameters": {
                    "id": 14945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14944,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14946,
                        "src": "5258:7:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14943,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5258:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5257:9:80"
                  },
                  "scope": 14947,
                  "src": "5187:80:80",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 14948,
              "src": "879:4390:80"
            }
          ],
          "src": "33:5237:80"
        },
        "id": 80
      },
      "contracts/token/utils/mocks/ERC1155VouchersRedeemerMock.sol": {
        "ast": {
          "absolutePath": "contracts/token/utils/mocks/ERC1155VouchersRedeemerMock.sol",
          "exportedSymbols": {
            "ERC1155VouchersRedeemer": [
              14947
            ],
            "ERC1155VouchersRedeemerMock": [
              14984
            ],
            "IERC1155InventoryBurnable": [
              3659
            ],
            "IWrappedERC20": [
              493
            ]
          },
          "id": 14985,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14949,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:81"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol",
              "id": 14951,
              "nodeType": "ImportDirective",
              "scope": 14985,
              "sourceUnit": 494,
              "src": "66:96:81",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14950,
                    "name": "IWrappedERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:13:81",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryBurnable.sol",
              "file": "./../../../token/ERC1155/interfaces/IERC1155InventoryBurnable.sol",
              "id": 14953,
              "nodeType": "ImportDirective",
              "scope": 14985,
              "sourceUnit": 3660,
              "src": "163:108:81",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14952,
                    "name": "IERC1155InventoryBurnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "171:25:81",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/utils/ERC1155VouchersRedeemer.sol",
              "file": "./../ERC1155VouchersRedeemer.sol",
              "id": 14955,
              "nodeType": "ImportDirective",
              "scope": 14985,
              "sourceUnit": 14948,
              "src": "272:73:81",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14954,
                    "name": "ERC1155VouchersRedeemer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "280:23:81",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 14956,
                    "name": "ERC1155VouchersRedeemer",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14947,
                    "src": "387:23:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155VouchersRedeemer_$14947",
                      "typeString": "contract ERC1155VouchersRedeemer"
                    }
                  },
                  "id": 14957,
                  "nodeType": "InheritanceSpecifier",
                  "src": "387:23:81"
                }
              ],
              "contractDependencies": [
                22,
                206,
                218,
                322,
                1253,
                3415,
                3788,
                14947
              ],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 14984,
              "linearizedBaseContracts": [
                14984,
                14947,
                1253,
                206,
                22,
                322,
                3415,
                3788,
                218
              ],
              "name": "ERC1155VouchersRedeemerMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 14971,
                    "nodeType": "Block",
                    "src": "603:2:81",
                    "statements": []
                  },
                  "id": 14972,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 14966,
                          "name": "vouchers",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14959,
                          "src": "567:8:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC1155InventoryBurnable_$3659",
                            "typeString": "contract IERC1155InventoryBurnable"
                          }
                        },
                        {
                          "id": 14967,
                          "name": "deliverable",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14961,
                          "src": "577:11:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                            "typeString": "contract IWrappedERC20"
                          }
                        },
                        {
                          "id": 14968,
                          "name": "tokenHolder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14963,
                          "src": "590:11:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 14969,
                      "modifierName": {
                        "id": 14965,
                        "name": "ERC1155VouchersRedeemer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14947,
                        "src": "543:23:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155VouchersRedeemer_$14947_$",
                          "typeString": "type(contract ERC1155VouchersRedeemer)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "543:59:81"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14964,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14959,
                        "mutability": "mutable",
                        "name": "vouchers",
                        "nodeType": "VariableDeclaration",
                        "scope": 14972,
                        "src": "438:34:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155InventoryBurnable_$3659",
                          "typeString": "contract IERC1155InventoryBurnable"
                        },
                        "typeName": {
                          "id": 14958,
                          "name": "IERC1155InventoryBurnable",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3659,
                          "src": "438:25:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC1155InventoryBurnable_$3659",
                            "typeString": "contract IERC1155InventoryBurnable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14961,
                        "mutability": "mutable",
                        "name": "deliverable",
                        "nodeType": "VariableDeclaration",
                        "scope": 14972,
                        "src": "482:25:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                          "typeString": "contract IWrappedERC20"
                        },
                        "typeName": {
                          "id": 14960,
                          "name": "IWrappedERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 493,
                          "src": "482:13:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                            "typeString": "contract IWrappedERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14963,
                        "mutability": "mutable",
                        "name": "tokenHolder",
                        "nodeType": "VariableDeclaration",
                        "scope": 14972,
                        "src": "517:19:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14962,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "517:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "428:114:81"
                  },
                  "returnParameters": {
                    "id": 14970,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "603:0:81"
                  },
                  "scope": 14984,
                  "src": "417:188:81",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    14946
                  ],
                  "body": {
                    "id": 14982,
                    "nodeType": "Block",
                    "src": "692:31:81",
                    "statements": [
                      {
                        "expression": {
                          "id": 14980,
                          "name": "tokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14974,
                          "src": "709:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 14979,
                        "id": 14981,
                        "nodeType": "Return",
                        "src": "702:14:81"
                      }
                    ]
                  },
                  "id": 14983,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_voucherValue",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14976,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "665:8:81"
                  },
                  "parameters": {
                    "id": 14975,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14974,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 14983,
                        "src": "634:15:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14973,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "634:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "633:17:81"
                  },
                  "returnParameters": {
                    "id": 14979,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14978,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14983,
                        "src": "683:7:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14977,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "683:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "682:9:81"
                  },
                  "scope": 14984,
                  "src": "611:112:81",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 14985,
              "src": "347:378:81"
            }
          ],
          "src": "33:693:81"
        },
        "id": 81
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IERC2771.sol": {
        "ast": {
          "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IERC2771.sol",
          "exportedSymbols": {
            "IERC2771": [
              14994
            ]
          },
          "id": 14995,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14986,
              "literals": [
                "solidity",
                "^",
                "0.7",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:82"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 14994,
              "linearizedBaseContracts": [
                14994
              ],
              "name": "IERC2771",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "572b6c05",
                  "id": 14993,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isTrustedForwarder",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14989,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14988,
                        "mutability": "mutable",
                        "name": "forwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 14993,
                        "src": "110:17:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14987,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "110:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "109:19:82"
                  },
                  "returnParameters": {
                    "id": 14992,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14991,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14993,
                        "src": "152:4:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 14990,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "152:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "151:6:82"
                  },
                  "scope": 14994,
                  "src": "82:76:82",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 14995,
              "src": "57:103:82"
            }
          ],
          "src": "32:129:82"
        },
        "id": 82
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol": {
        "ast": {
          "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
          "exportedSymbols": {
            "IForwarderRegistry": [
              15006
            ]
          },
          "id": 15007,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14996,
              "literals": [
                "solidity",
                "^",
                "0.7",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:83"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 15006,
              "linearizedBaseContracts": [
                15006
              ],
              "name": "IForwarderRegistry",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "e60125d6",
                  "id": 15005,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isForwarderFor",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15001,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14998,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 15005,
                        "src": "116:7:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14997,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "116:7:83",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15000,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 15005,
                        "src": "125:7:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14999,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "125:7:83",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "115:18:83"
                  },
                  "returnParameters": {
                    "id": 15004,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15003,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 15005,
                        "src": "157:4:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 15002,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "157:4:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "156:6:83"
                  },
                  "scope": 15006,
                  "src": "92:71:83",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 15007,
              "src": "57:108:83"
            }
          ],
          "src": "32:134:83"
        },
        "id": 83
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingAppendedCallData.sol": {
        "ast": {
          "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingAppendedCallData.sol",
          "exportedSymbols": {
            "UsingAppendedCallData": [
              15031
            ]
          },
          "id": 15032,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15008,
              "literals": [
                "solidity",
                "^",
                "0.7",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:84"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 15031,
              "linearizedBaseContracts": [
                15031
              ],
              "name": "UsingAppendedCallData",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 15014,
                    "nodeType": "Block",
                    "src": "195:427:84",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "536:80:84",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "550:56:84",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "564:2:84",
                                    "type": "",
                                    "value": "96"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "calldatasize",
                                              "nodeType": "YulIdentifier",
                                              "src": "585:12:84"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "585:14:84"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "601:2:84",
                                            "type": "",
                                            "value": "20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "581:3:84"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "581:23:84"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "568:12:84"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "568:37:84"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "560:3:84"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "560:46:84"
                              },
                              "variableNames": [
                                {
                                  "name": "sender",
                                  "nodeType": "YulIdentifier",
                                  "src": "550:6:84"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 15011,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "550:6:84",
                            "valueSize": 1
                          }
                        ],
                        "id": 15013,
                        "nodeType": "InlineAssembly",
                        "src": "527:89:84"
                      }
                    ]
                  },
                  "id": 15015,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_lastAppendedDataAsSender",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15009,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "137:2:84"
                  },
                  "returnParameters": {
                    "id": 15012,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15011,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 15015,
                        "src": "171:22:84",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 15010,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "171:15:84",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "170:24:84"
                  },
                  "scope": 15031,
                  "src": "103:519:84",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15029,
                    "nodeType": "Block",
                    "src": "722:55:84",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "expression": {
                              "id": 15020,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "739:3:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 15021,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "src": "739:8:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "endExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 15026,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "expression": {
                                  "id": 15022,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "749:3:84",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 15023,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "data",
                                "nodeType": "MemberAccess",
                                "src": "749:8:84",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "id": 15024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "749:15:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "hexValue": "3230",
                              "id": 15025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "767:2:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              },
                              "value": "20"
                            },
                            "src": "749:20:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 15027,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexRangeAccess",
                          "src": "739:31:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr_slice",
                            "typeString": "bytes calldata slice"
                          }
                        },
                        "functionReturnParameters": 15019,
                        "id": 15028,
                        "nodeType": "Return",
                        "src": "732:38:84"
                      }
                    ]
                  },
                  "id": 15030,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgDataAssuming20BytesAppendedData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15016,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "672:2:84"
                  },
                  "returnParameters": {
                    "id": 15019,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15018,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 15030,
                        "src": "706:14:84",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 15017,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "706:5:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "705:16:84"
                  },
                  "scope": 15031,
                  "src": "628:149:84",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 15032,
              "src": "57:722:84"
            }
          ],
          "src": "32:748:84"
        },
        "id": 84
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol": {
        "ast": {
          "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
          "exportedSymbols": {
            "IERC2771": [
              14994
            ],
            "IForwarderRegistry": [
              15006
            ],
            "UsingAppendedCallData": [
              15031
            ],
            "UsingUniversalForwarding": [
              15172
            ]
          },
          "id": 15173,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15033,
              "literals": [
                "solidity",
                "^",
                "0.7",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:85"
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingAppendedCallData.sol",
              "file": "./UsingAppendedCallData.sol",
              "id": 15034,
              "nodeType": "ImportDirective",
              "scope": 15173,
              "sourceUnit": 15032,
              "src": "57:37:85",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IERC2771.sol",
              "file": "./IERC2771.sol",
              "id": 15035,
              "nodeType": "ImportDirective",
              "scope": 15173,
              "sourceUnit": 14995,
              "src": "95:24:85",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "./IForwarderRegistry.sol",
              "id": 15036,
              "nodeType": "ImportDirective",
              "scope": 15173,
              "sourceUnit": 15007,
              "src": "120:34:85",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 15037,
                    "name": "UsingAppendedCallData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15031,
                    "src": "202:21:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UsingAppendedCallData_$15031",
                      "typeString": "contract UsingAppendedCallData"
                    }
                  },
                  "id": 15038,
                  "nodeType": "InheritanceSpecifier",
                  "src": "202:21:85"
                },
                {
                  "baseName": {
                    "id": 15039,
                    "name": "IERC2771",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14994,
                    "src": "225:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC2771_$14994",
                      "typeString": "contract IERC2771"
                    }
                  },
                  "id": 15040,
                  "nodeType": "InheritanceSpecifier",
                  "src": "225:8:85"
                }
              ],
              "contractDependencies": [
                14994,
                15031
              ],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 15172,
              "linearizedBaseContracts": [
                15172,
                14994,
                15031
              ],
              "name": "UsingUniversalForwarding",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 15042,
                  "mutability": "immutable",
                  "name": "_forwarderRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 15172,
                  "src": "240:56:85",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                    "typeString": "contract IForwarderRegistry"
                  },
                  "typeName": {
                    "id": 15041,
                    "name": "IForwarderRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15006,
                    "src": "240:18:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                      "typeString": "contract IForwarderRegistry"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15044,
                  "mutability": "immutable",
                  "name": "_universalForwarder",
                  "nodeType": "VariableDeclaration",
                  "scope": 15172,
                  "src": "302:46:85",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15043,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "302:7:85",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15059,
                    "nodeType": "Block",
                    "src": "433:105:85",
                    "statements": [
                      {
                        "expression": {
                          "id": 15053,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 15051,
                            "name": "_universalForwarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15044,
                            "src": "443:19:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 15052,
                            "name": "universalForwarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15048,
                            "src": "465:18:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "443:40:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 15054,
                        "nodeType": "ExpressionStatement",
                        "src": "443:40:85"
                      },
                      {
                        "expression": {
                          "id": 15057,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 15055,
                            "name": "_forwarderRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15042,
                            "src": "493:18:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                              "typeString": "contract IForwarderRegistry"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 15056,
                            "name": "forwarderRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15046,
                            "src": "514:17:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                              "typeString": "contract IForwarderRegistry"
                            }
                          },
                          "src": "493:38:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "id": 15058,
                        "nodeType": "ExpressionStatement",
                        "src": "493:38:85"
                      }
                    ]
                  },
                  "id": 15060,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15049,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15046,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 15060,
                        "src": "367:36:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 15045,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15006,
                          "src": "367:18:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15048,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 15060,
                        "src": "405:26:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15047,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "405:7:85",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "366:66:85"
                  },
                  "returnParameters": {
                    "id": 15050,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "433:0:85"
                  },
                  "scope": 15172,
                  "src": "355:183:85",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    14993
                  ],
                  "body": {
                    "id": 15079,
                    "nodeType": "Block",
                    "src": "637:100:85",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 15070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15068,
                              "name": "forwarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15062,
                              "src": "654:9:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 15069,
                              "name": "_universalForwarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15044,
                              "src": "667:19:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "654:32:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 15076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15071,
                              "name": "forwarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15062,
                              "src": "690:9:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 15074,
                                  "name": "_forwarderRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15042,
                                  "src": "711:18:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                ],
                                "id": 15073,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "703:7:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 15072,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "703:7:85",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15075,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "703:27:85",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "690:40:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "654:76:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 15067,
                        "id": 15078,
                        "nodeType": "Return",
                        "src": "647:83:85"
                      }
                    ]
                  },
                  "functionSelector": "572b6c05",
                  "id": 15080,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isTrustedForwarder",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 15064,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "613:8:85"
                  },
                  "parameters": {
                    "id": 15063,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15062,
                        "mutability": "mutable",
                        "name": "forwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 15080,
                        "src": "572:17:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15061,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "572:7:85",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "571:19:85"
                  },
                  "returnParameters": {
                    "id": 15067,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15066,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 15080,
                        "src": "631:4:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 15065,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "631:4:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "630:6:85"
                  },
                  "scope": 15172,
                  "src": "544:193:85",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15125,
                    "nodeType": "Block",
                    "src": "813:834:85",
                    "statements": [
                      {
                        "assignments": [
                          15086
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15086,
                            "mutability": "mutable",
                            "name": "msgSender",
                            "nodeType": "VariableDeclaration",
                            "scope": 15125,
                            "src": "823:25:85",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "typeName": {
                              "id": 15085,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "823:15:85",
                              "stateMutability": "payable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15089,
                        "initialValue": {
                          "expression": {
                            "id": 15087,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "851:3:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 15088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "851:10:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "823:38:85"
                      },
                      {
                        "assignments": [
                          15091
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15091,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 15125,
                            "src": "871:22:85",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "typeName": {
                              "id": 15090,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "871:15:85",
                              "stateMutability": "payable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15094,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 15092,
                            "name": "_lastAppendedDataAsSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15015,
                            "src": "896:25:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_address_payable_$",
                              "typeString": "function () pure returns (address payable)"
                            }
                          },
                          "id": 15093,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "896:27:85",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "871:52:85"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15104,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 15100,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15095,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15086,
                              "src": "937:9:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 15098,
                                  "name": "_forwarderRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15042,
                                  "src": "958:18:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                ],
                                "id": 15097,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "950:7:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 15096,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "950:7:85",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15099,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "950:27:85",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "937:40:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 15103,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15101,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15086,
                              "src": "981:9:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 15102,
                              "name": "_universalForwarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15044,
                              "src": "994:19:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "981:32:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "937:76:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15108,
                        "nodeType": "IfStatement",
                        "src": "933:166:85",
                        "trueBody": {
                          "id": 15107,
                          "nodeType": "Block",
                          "src": "1015:84:85",
                          "statements": [
                            {
                              "expression": {
                                "id": 15105,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15091,
                                "src": "1082:6:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "functionReturnParameters": 15084,
                              "id": 15106,
                              "nodeType": "Return",
                              "src": "1075:13:85"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "id": 15112,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15109,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15086,
                              "src": "1496:9:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "expression": {
                                "id": 15110,
                                "name": "tx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -26,
                                "src": "1509:2:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_transaction",
                                  "typeString": "tx"
                                }
                              },
                              "id": 15111,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "origin",
                              "nodeType": "MemberAccess",
                              "src": "1509:9:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "1496:22:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 15115,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15091,
                                "src": "1556:6:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "id": 15116,
                                "name": "msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15086,
                                "src": "1564:9:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "expression": {
                                "id": 15113,
                                "name": "_forwarderRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15042,
                                "src": "1522:18:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                                  "typeString": "contract IForwarderRegistry"
                                }
                              },
                              "id": 15114,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isForwarderFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15005,
                              "src": "1522:33:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address,address) view external returns (bool)"
                              }
                            },
                            "id": 15117,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1522:52:85",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1496:78:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15122,
                        "nodeType": "IfStatement",
                        "src": "1492:122:85",
                        "trueBody": {
                          "id": 15121,
                          "nodeType": "Block",
                          "src": "1576:38:85",
                          "statements": [
                            {
                              "expression": {
                                "id": 15119,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15091,
                                "src": "1597:6:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "functionReturnParameters": 15084,
                              "id": 15120,
                              "nodeType": "Return",
                              "src": "1590:13:85"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 15123,
                          "name": "msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15086,
                          "src": "1631:9:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 15084,
                        "id": 15124,
                        "nodeType": "Return",
                        "src": "1624:16:85"
                      }
                    ]
                  },
                  "id": 15126,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15081,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "762:2:85"
                  },
                  "returnParameters": {
                    "id": 15084,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15083,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 15126,
                        "src": "796:15:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 15082,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "796:15:85",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "795:17:85"
                  },
                  "scope": 15172,
                  "src": "743:904:85",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15170,
                    "nodeType": "Block",
                    "src": "1720:603:85",
                    "statements": [
                      {
                        "assignments": [
                          15132
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15132,
                            "mutability": "mutable",
                            "name": "msgSender",
                            "nodeType": "VariableDeclaration",
                            "scope": 15170,
                            "src": "1730:25:85",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "typeName": {
                              "id": 15131,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1730:15:85",
                              "stateMutability": "payable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15135,
                        "initialValue": {
                          "expression": {
                            "id": 15133,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1758:3:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 15134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1758:10:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1730:38:85"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 15141,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15136,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15132,
                              "src": "1782:9:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 15139,
                                  "name": "_forwarderRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15042,
                                  "src": "1803:18:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                ],
                                "id": 15138,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1795:7:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 15137,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1795:7:85",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15140,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1795:27:85",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1782:40:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 15144,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15142,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15132,
                              "src": "1826:9:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 15143,
                              "name": "_universalForwarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15044,
                              "src": "1839:19:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1826:32:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1782:76:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15150,
                        "nodeType": "IfStatement",
                        "src": "1778:197:85",
                        "trueBody": {
                          "id": 15149,
                          "nodeType": "Block",
                          "src": "1860:115:85",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 15146,
                                  "name": "_msgDataAssuming20BytesAppendedData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15030,
                                  "src": "1927:35:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_calldata_ptr_$",
                                    "typeString": "function () pure returns (bytes calldata)"
                                  }
                                },
                                "id": 15147,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1927:37:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "functionReturnParameters": 15130,
                              "id": 15148,
                              "nodeType": "Return",
                              "src": "1920:44:85"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "id": 15154,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15151,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15132,
                              "src": "2122:9:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "expression": {
                                "id": 15152,
                                "name": "tx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -26,
                                "src": "2135:2:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_transaction",
                                  "typeString": "tx"
                                }
                              },
                              "id": 15153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "origin",
                              "nodeType": "MemberAccess",
                              "src": "2135:9:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "2122:22:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 15157,
                                  "name": "_lastAppendedDataAsSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15015,
                                  "src": "2182:25:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_address_payable_$",
                                    "typeString": "function () pure returns (address payable)"
                                  }
                                },
                                "id": 15158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2182:27:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "id": 15159,
                                "name": "msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15132,
                                "src": "2211:9:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "expression": {
                                "id": 15155,
                                "name": "_forwarderRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15042,
                                "src": "2148:18:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IForwarderRegistry_$15006",
                                  "typeString": "contract IForwarderRegistry"
                                }
                              },
                              "id": 15156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isForwarderFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15005,
                              "src": "2148:33:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address,address) view external returns (bool)"
                              }
                            },
                            "id": 15160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2148:73:85",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2122:99:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15166,
                        "nodeType": "IfStatement",
                        "src": "2118:174:85",
                        "trueBody": {
                          "id": 15165,
                          "nodeType": "Block",
                          "src": "2223:69:85",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 15162,
                                  "name": "_msgDataAssuming20BytesAppendedData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15030,
                                  "src": "2244:35:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_calldata_ptr_$",
                                    "typeString": "function () pure returns (bytes calldata)"
                                  }
                                },
                                "id": 15163,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2244:37:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "functionReturnParameters": 15130,
                              "id": 15164,
                              "nodeType": "Return",
                              "src": "2237:44:85"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "expression": {
                            "id": 15167,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "2308:3:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 15168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "src": "2308:8:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 15130,
                        "id": 15169,
                        "nodeType": "Return",
                        "src": "2301:15:85"
                      }
                    ]
                  },
                  "id": 15171,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15127,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1670:2:85"
                  },
                  "returnParameters": {
                    "id": 15130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15129,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 15171,
                        "src": "1704:14:85",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 15128,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1704:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1703:16:85"
                  },
                  "scope": 15172,
                  "src": "1653:670:85",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 15173,
              "src": "156:2169:85"
            }
          ],
          "src": "32:2294:85"
        },
        "id": 85
      }
    }
  }
}
